Files

38 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2026-08-04 18:59:21 +08:00
# 后端开发规格
2026-08-04 18:59:21 +08:00
后端是 Python 3.12 + FastAPI 的单体服务。当前代码只包含启动组合、环境配置、运维端点和 `system` HTTP 切片;业务 bounded context 尚未创建。新增后端代码应先确认它属于启动边界、共享基础设施、HTTP 入口还是某个明确的 bounded context。
2026-08-04 18:59:21 +08:00
## 规格导航
2026-08-04 18:59:21 +08:00
| 规格 | 用途 |
| --- | --- |
| [目录与模块边界](./directory-structure.md) | 包结构、bounded context 和导入边界 |
| [配置与运行时](./configuration-and-runtime.md) | `Settings`、应用工厂和部署环境 |
| [市场数据同步](./market-data-sync.md) | Tushare qfq、PostgreSQL、CSV 快照和一次性 Job 契约 |
| [Tushare 当前上市股票范围](./tushare-listed-stock-universe.md) | 所有股票型功能统一只使用构建时 `stock_basic(list_status=L)` 母集 |
2026-08-08 22:41:45 +08:00
| [历史选股](./selection.md) | selection bounded context、目标交易日、qfq 读取和信号结果契约 |
2026-08-04 18:59:21 +08:00
| [HTTP 契约](./http-api-contracts.md) | 路由组合、响应模型和同源 API 路径 |
| [错误处理](./error-handling.md) | 当前 FastAPI 错误行为及跨层错误传递 |
| [质量与测试](./quality-guidelines.md) | Ruff、Pyright、pytest 及禁止模式 |
2026-08-04 18:59:21 +08:00
## 开发前检查
2026-08-04 18:59:21 +08:00
- 先阅读 `docs/adr/0001-bounded-context-first-modular-monolith.md`,确认新业务是否有清晰的语言和所有权边界。
- 涉及 Tushare 个股数据时先阅读 `tushare-listed-stock-universe.md`,所有新功能都必须从当前 `L` 股票母集继续缩小范围,禁止重新引入 `D/P/G/UN`。
2026-08-04 18:59:21 +08:00
- 先阅读目标上下文的 `modules/<bounded_context>/README.md`(如已存在),再决定 domain、application、infrastructure、presentation 的位置。
- 变更 HTTP 字段时同时检查 `zhixing-server/tests/`、前端 feature API 类型以及 `docs/adr/0002-use-a-same-origin-browser-api.md`。
- 不要为了“未来可能需要”创建空的数据库、服务或日志层;当前仓库没有这些实现。
2026-08-04 18:59:21 +08:00
## 质量检查
2026-08-04 18:59:21 +08:00
在 `zhixing-server/` 下运行:
2026-08-04 18:59:21 +08:00
```bash
uv run ruff format --check .
uv run ruff check .
uv run pyright
uv run pytest
```
2026-08-04 18:59:21 +08:00
根目录 `./dev.sh check` 和 `./dev.sh test` 会执行完整前后端检查。