5128e1551c
Backend (backend/):
- FastAPI app with layered app/{api,core,crud,db,models,schemas} structure
- TiDB connection via SQLAlchemy. The URL is built with URL.create rather
than string formatting: the password contains '@', which would otherwise be
parsed as the user/host separator and silently truncate the credential.
- Alembic environment wired to Base.metadata and the app settings, so
backend/.env stays the single source of truth for credentials
- /api/health endpoint reporting database reachability
- models/ and crud/ are intentionally empty: no model classes are defined and
no tables are created, at import time or otherwise
Frontend (frontend/):
- Vue 3 + Vite + TypeScript scaffold (create-vue, --bare)
- axios instance with a normalized error shape
- vue-router with a home route and a catch-all 404
- pinia + pinia-plugin-persistedstate; the app store persists selected keys
- Element Plus with its icons registered globally
- dev proxy forwards /api to the FastAPI service on port 8000
The database paper_doc was created in TiDB out of band; no table exists yet.
16 lines
483 B
Python
16 lines
483 B
Python
"""SQLAlchemy ORM models.
|
|
|
|
This package is intentionally empty.
|
|
|
|
No model classes exist yet, and no tables are created by this project at
|
|
import time. The schema will be introduced through Alembic migrations:
|
|
|
|
alembic revision --autogenerate -m "describe the change"
|
|
alembic upgrade head
|
|
|
|
When the first model is written, add it here (or in a submodule imported from
|
|
here) so that ``Base.metadata`` — and therefore autogenerate — can see it.
|
|
"""
|
|
|
|
__all__: list[str] = []
|