基金转换 T+1 模型:T-1~T-6 落地(DDL/数据层/语义收窄/锁/受理事务)

AIcoding 第 5 步 todo 开发(开发计划 v2.0)前半段:

- T-1 3 张新表 DDL(core_convert_request 6 态 ENUM / core_trade_calendar /
  core_share_rule)+ 种子 + sqlite 单一事实源同步 + 列清单断言
- T-2/T-2b calc 扩展(product_round/redeem_amount/partial_qty)+ 真实净值实算回填
- T-3 convert_request_repository(6 态 + 条件 UPDATE 守卫)+ core_ro 三读方法
  + share_lot_repository.available_qty_with_inflight(R-3 在途占用推导)
- T-4 convert_repository.sync_mirror 成为 risk_convert_detail 唯一进度镜像写入口
  (旧三方法标 Deprecated,T-7 后删)
- T-5 locks.py 锁键构造器 convert_req_lock_key / convert_confirm_lock_key
- T-6 convert_service.accept_convert 受理事务(八步:锁→幂等→校验→受理日顺延
  →在途占用校验→落单→镜像+审计→202;不扣份额/不折算/不写流水)
  + tests/test_convert_accept.py(16 用例)
  + scripts/dev/verify_convert_accept.py(真库 36/36 一致)
  + trading_calendar.py 纯函数包(R-5)+ 21 用例

T-6 真库实测暴露并修复:confirm_eta 在日历数据边界抛 ValueError,会让已落库
的受理单在调用方眼里变 500;改为展示性字段容错 + 单测守护。

基线:798 passed / 10 skipped,零回归。
This commit is contained in:
2026-09-11 19:21:15 +08:00
parent 3b781f8823
commit f056fcd007
40 changed files with 6545 additions and 3105 deletions
@@ -1,5 +1,7 @@
# 评审待办 · 风控主架构 + 基金转换架构
> ⚠️ **历史参考文档(2026-09-10 产物)**:文中「基金转换架构 v1.0 评审」对应的是 **v0.x 模型**,已被 **T+1 受理/确认分离模型(架构 v2.1 / PRD v1.1 / 开发计划 v2.0)取代**;当前评审结论见各文档「独立审查」节,**当前以 v1.1/v2.1/v2.0 为准**。
>
> **用途**:两份架构评审意见**合并处理**的执行清单。
> **用户指示(2026-09-10)**:「等基金架构的评审也出来了一起改」。
> **当前状态**:**基金转换架构 v1.0 评审 13 条已全部落地**(落点索引见架构 §13.2,0 条悬空,2026-09-10);