30 lines
1.0 KiB
Markdown
30 lines
1.0 KiB
Markdown
|
|
# Backend Schemas Restructure Design
|
||
|
|
|
||
|
|
**Goal:** Restructure `backend/src/schemas` into clear domain/shared/enums modules while keeping API contracts in `backend/src/v1/*/schemas.py`.
|
||
|
|
|
||
|
|
**Architecture:** Move reusable validation models and enums into `schemas/domain`, `schemas/shared`, and `schemas/enums.py`. Keep versioned request/response contracts in `v1/*/schemas.py` and update imports to explicit module paths. Remove legacy aggregate exports and duplicate/empty schema directories.
|
||
|
|
|
||
|
|
**Tech Stack:** Python 3.13, Pydantic v2, Ruff, Pytest.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Approved decisions
|
||
|
|
|
||
|
|
- Use one-shot hard cut.
|
||
|
|
- Keep API contracts in `backend/src/v1/*/schemas.py`.
|
||
|
|
- Keep `schemas` as reusable constraints only.
|
||
|
|
- Remove implicit root re-export usage.
|
||
|
|
|
||
|
|
## Target structure
|
||
|
|
|
||
|
|
- `backend/src/schemas/enums.py`
|
||
|
|
- `backend/src/schemas/domain/*.py`
|
||
|
|
- `backend/src/schemas/shared/*.py`
|
||
|
|
- `backend/src/v1/*/schemas.py` (unchanged naming and ownership)
|
||
|
|
|
||
|
|
## Validation gates
|
||
|
|
|
||
|
|
- `uv run ruff check ...`
|
||
|
|
- `uv run pytest ...` for impacted suites
|
||
|
|
- `./infra/scripts/dev-migrate.sh migrate`
|