61 lines
2.4 KiB
Markdown
61 lines
2.4 KiB
Markdown
# Plan 1 — Quick Wins & Low Risk
|
|
|
|
**Items covered:** #7 (updated_at bug), #8 (dead code), #9 (duplicate test file), #13 (unused dependency)
|
|
|
|
---
|
|
|
|
## Context
|
|
|
|
You are working on a FastAPI backend for a baby monitor / sleep tracker app. The codebase lives under `app/`. The task is to make four small, isolated fixes. Each one is mechanical and carries no risk of breaking behaviour. Do them in order. After each change, re-read the file you edited to verify it looks correct before moving on.
|
|
|
|
---
|
|
|
|
## Tasks
|
|
|
|
### 1. Fix the `updated_at` bug (`app/crud.py:106-113`)
|
|
|
|
The update handler in `crud.py` never sets `updated_at` after a PATCH/PUT. Find the update function and add the following line before the session is committed:
|
|
|
|
```python
|
|
session.updated_at = datetime.utcnow()
|
|
```
|
|
|
|
Make sure `datetime` is already imported; add the import if it is not.
|
|
|
|
### 2. Delete dead code
|
|
|
|
The following symbols are defined but never called anywhere. Delete them entirely:
|
|
|
|
- `ensure_aware()` — located in `app/crud.py:7-10`
|
|
- `minutes_after()` — located in `app/utils/time_utils.py:60-64`
|
|
|
|
After deleting each one, search the entire codebase (`grep -r "ensure_aware" .` and `grep -r "minutes_after" .`) to confirm nothing imports or calls the deleted symbol. If anything does, note it and do not delete the symbol — flag it for review instead.
|
|
|
|
Also locate `day_start_pattern()` in `app/utils/time_utils.py`. It is only used internally inside `get_day_night_splits()` in the same file. Rename it to `_day_start_pattern` (leading underscore) to mark it as a private helper and remove it from any `__all__` export list if present.
|
|
|
|
### 3. Delete the duplicate test file
|
|
|
|
`tests/test_sessions_fixed.py` is an exact copy of `tests/test_sessions.py`. Verify they are identical (or note any differences), then delete `tests/test_sessions_fixed.py`.
|
|
|
|
### 4. Remove the unused dependency
|
|
|
|
`python-multipart` is listed in `pyproject.toml` but is not used (the app has no `Form` parameters). Remove it:
|
|
|
|
```bash
|
|
uv remove python-multipart
|
|
```
|
|
|
|
If `uv` is not available, remove the line manually from `pyproject.toml` and run `uv sync` or the appropriate install command to update the lockfile.
|
|
|
|
---
|
|
|
|
## Verification
|
|
|
|
Run the full test suite after all changes:
|
|
|
|
```bash
|
|
pytest
|
|
```
|
|
|
|
All existing tests must pass. If any test fails, fix it before declaring this plan complete. Do not move on to Plan 2 until the test suite is green.
|