2.0 KiB
2.0 KiB
实现市场数据完整性检查 API
Goal
提供用户主动触发、可轮询的 PostgreSQL/CSV 完整性检查;检查不访问 Tushare、不修改市场事实, 只持久化检查进度与安全问题报告。
Dependencies
- 依赖
08-11-market-sync-concurrency-storage的连接池和共享 advisory lock 契约完成。
Requirements
- 检查 current stock master、六年 qfq bars 和六年 daily_basic 的 PostgreSQL/CSV 一致性。
- 报告缺失、多余、解析失败、重复键、内容不一致和窗口越界;不把正常停牌误报为缺历史日期。
- 使用流式/分组比较,不能一次加载全市场约 700 万行。
- 使用独立检查表和状态
running/passed/issues_found/failed,不复用同步批次。 - 检查与同步使用同一 advisory lock;已有检查运行时禁止重复触发。
POST返回 202,GET latest和GET by id返回进度、终态及分页问题。- 后台异常和失去 worker 的陈旧 running 记录必须能收敛为 failed。
- 除检查表外,执行前后市场事实表内容和正式 CSV 必须完全不变。
Acceptance Criteria
- 一致 fixture 得到
passed;各类不一致得到issues_found和稳定问题类型。 - CSV 解析失败被报告且不会中断其余对象检查。
- 检查只使用本地 DB/CSV adapters,测试能断言 Tushare port 未被构造或调用。
- 大数据 fixture/迭代器测试证明比较按股票/交易日分组流式消费。
- 同步持锁时检查安全失败,检查持锁时同步不能进入临界区。
- HTTP 测试覆盖 202、409、404、503、latest/no_data、轮询进度和问题分页。
- 迁移 upgrade/downgrade 和 schema metadata 一致;首页/selection 查询不选择检查记录。
- 后端 Ruff、Pyright、pytest 全部通过。
Out of Scope
- 不检查 Tushare 当日是否出数。
- 不自动修复、重试或重新下载。
- 不引入外部队列;沿用当前进程内 BackgroundTasks。