T-0 / T-0b(门禁 · 2026-09-10) - T-0:sqlite 与 MySQL 结构对齐 —— core_holding 统一为 qty/cost_amount/as_of/pnl_pct + PK + UNIQUE(customer_id, product_id);补 core_product_nav;新增建库自校验 _assert_ddl_aligned()(R-g);test_db.py 增 3 条门禁用例(含反向验证门禁失效) - T-0b:DB 账号分离(D20)—— 新增 scripts/core/00-grant.sql(三账号逐表授权); settings.py 增 3 组账号;db.py 改 get_engine(db, role),缓存键改为 (库名, 角色), 账号未配置回退单账号;core_ro→ro / gateway_repository→rw / risk·session_repository→rw; tests/conftest.py 四处显式 role="admin"(R-e) T-1(数据层) - scripts/core/01-ddl.sql:新建 core_fee_rule / core_share_lot / core_convert_lot_detail; core_trade 加 convert_group_id + idx_convert_group;core_product 加 8 列 + fee_rate 补 COMMENT - 新增 07-seed-fee-rule.sql(赎回费 5 档 × 14 产品,按 22 号文 §10)/ 08-seed-share-lot.sql (58 行持仓 → 61 行批次,Σ remain_qty 恒等于 qty)/ 09-seed-org.sql(管理人 + TA + 申购费率 + 最低持有余额,v1.1 按「管理人全产品线」重排) - reset.ps1 追加 07/08/09;02-mysql-agent专用.sql 追加 risk_convert_detail - tests/_ddl.py 同步 4 表 + 新增 REQUIRED_CONVERT_TABLES 建库门禁 - 新增 scripts/dev/verify_convert_seed.py(pymysql 等价 reset 流程 + 8 条 DoD 断言, 含断言 ⑧「费率档 ↔ product_type 匹配」,越档即 FAIL) T-2 / T-2b(纯函数包 + 示例实算回填) - 新增 app/service/convert/ 7 文件:__init__ / types / calc / fee / nav / lot_bootstrap / errors (纯函数,不查库、不碰 SQL;所有量化显式 ROUND_HALF_UP;lot_bootstrap 用 zlib.crc32 保证 D18 跨进程同源) - 新增 tests/test_convert_calc.py 93 用例(12 类:HALF_UP 反向自证 / 分档边界 / FIFO 含同 confirmed_at 兜底 / 双口径 / 强制全转与强制赎回 / PRD §5.3 全链自证 / 纯函数零 IO 依赖断言) - 重写 scripts/dev/calc_convert_demo.py:去掉脚本内公式副本,改为调用生产 calc.py, 末尾与 PRD §5.3 逐项比对(不一致即退出码 1),兼作一致性门禁 验证 - pytest 609 passed / 3 skipped(516 → +93,零回归) - verify_convert_seed.py 8/8 PASS;calc_convert_demo.py 15/15 与 PRD §5.3 一致 文档:PRD v0.9.1(费率分类修正)· 架构 §7 签名回填 / §8.3 错误码注 / §15 T-2 完成 · 开发计划 §1.5 新增 R-h + §4.2·§4.3 执行记录 · AGENTS.md · docs/memory
2.0 KiB
2.0 KiB
Core 模拟库 · 初始化
库名
jinrong_core· 与jinrong_agent同 MySQL 实例 · Agent 只读
一键重置(Windows)
.\scripts\core\reset.ps1
手动顺序
mysql -u root -p < scripts/core/00-create-database.sql
mysql -u root -p < scripts/core/01-ddl.sql
mysql -u root -p < scripts/core/02-seed-base.sql
mysql -u root -p < scripts/core/03-seed-customers.sql
mysql -u root -p < scripts/core/04-seed-holdings.sql
mysql -u root -p < scripts/core/05-seed-trades.sql
mysql -u root -p < scripts/core/06-seed-nav.sql
# 基金转换(convert)新增种子 · T-1
mysql -u root -p < scripts/core/07-seed-fee-rule.sql
mysql -u root -p < scripts/core/08-seed-share-lot.sql
mysql -u root -p < scripts/core/09-seed-org.sql
# Agent 库(若未建)
mysql -u root -p < docs/项目框架设计/表设计/01-mysql-共用底座.sql
python scripts/sync/sync_advisor_rel.py
python scripts/sync/sync_neo4j.py
种子规模(当前)
| 类型 | 数量 |
|---|---|
| 客户 | 28 + 5 手册示范(CUST-DEMO-A~E) |
| 理财代理人 | 5 |
| 分析/风控/合规/运营 | 2+2+2+1(风控另有演示账号 STAFF-90001,我方分支独有) |
| 双角色 staff | 1(STAFF-10091 advisor+compliance) |
| 产品 | 14 |
| 持仓记录 | 58 |
| 交易 | 25+ |
| C×R 适当性矩阵 | 25 行(core_suitability_rule,L0 权威) |
| 赎回费规则(T-1) | 70 行(14 产品 × 5 档,core_fee_rule;档位按 22 号文 §10) |
| 份额批次(T-1) | 61 行(58 行持仓反推,Σ remain_qty 恒等于持仓 qty;CUST-9527 跨批次) |
新增的 07/08/09 三个种子已并入
reset.ps1;00-grant.sql是账号授权脚本, 需管理员单独执行一次,刻意不进 reset.ps1(DROP DATABASE 不清授权行)。 T-1 起reset.ps1需 mysql 客户端在 PATH;若不在 PATH 且需非交互执行, 用python scripts/dev/verify_convert_seed.py(等价流程 + DoD 断言)。