81 lines
1.5 KiB
Markdown
81 lines
1.5 KiB
Markdown
# Backend Package Map
|
|
|
|
Target backend layout:
|
|
|
|
```text
|
|
backend/
|
|
app/
|
|
main.py
|
|
api/
|
|
router.py
|
|
routes/
|
|
health.py
|
|
projects.py
|
|
areas.py
|
|
datasets.py
|
|
raster.py
|
|
vector.py
|
|
analysis.py
|
|
qaqc.py
|
|
exports.py
|
|
core/
|
|
config.py
|
|
database.py
|
|
logging.py
|
|
security.py
|
|
errors.py
|
|
models/
|
|
project.py
|
|
area.py
|
|
dataset.py
|
|
layer.py
|
|
analysis.py
|
|
detection.py
|
|
segmentation.py
|
|
quality.py
|
|
export.py
|
|
job.py
|
|
event.py
|
|
schemas/
|
|
common.py
|
|
project.py
|
|
area.py
|
|
dataset.py
|
|
analysis.py
|
|
quality.py
|
|
export.py
|
|
services/
|
|
project_service.py
|
|
area_service.py
|
|
dataset_service.py
|
|
raster_service.py
|
|
vector_service.py
|
|
grb_service.py
|
|
detection_service.py
|
|
segmentation_service.py
|
|
qaqc_service.py
|
|
export_service.py
|
|
event_service.py
|
|
workers/
|
|
queue.py
|
|
jobs.py
|
|
repositories/
|
|
base.py
|
|
projects.py
|
|
areas.py
|
|
datasets.py
|
|
analysis_runs.py
|
|
scripts/
|
|
seed_demo.py
|
|
tests/
|
|
```
|
|
|
|
## Rules
|
|
|
|
- API routes should be thin.
|
|
- Business logic belongs in services.
|
|
- SQLAlchemy query composition belongs in repositories where useful.
|
|
- Pydantic schemas are the API contract.
|
|
- Models are persistence structures, not API response structures.
|
|
- GIS processing functions must be testable outside HTTP handlers.
|