T-14/T-17 开口闭环:PRD §2.5.3 修订 + truncate 舍去法接入 + R-12 定稿(用户三项拍板 · 849 绿 / 真库 9/9)

① PRD §2.5.3 修订:删「易方达 ETF 场外取整数位」(无证据且有反证,真实整数位载体为场内),改记「2 位主流 + 舍去型真实存在」,版本块加注记
② rounding_mode=truncate 消费接入(用户拍板补做):
   - core_ro.get_share_rounding = 位数+模式回退链单点(规则行 → core_product → 默认 2/half_up,mode 白名单读取即校验,get_share_digits 转薄包装)
   - calc.product_round/in_qty 加 mode 参数(truncate → ROUND_DOWN)
   - 确认段 + 申购折算两处透传;载体 09-seed-org.sql ⑦ 段 PROD-005828(product 层回退,零转换场景引用)
   - 测试 +7(842→849):calc 4 + 确认段 2(truncate 34945.53 vs half_up .54 分化 + 回退链遮蔽语义)+ 申购段 1
   - 突变:两调用点同拆 mode 透传 → 2 红,还原绿;真库 9/9(seed 新增 ⑫ 载体在位断言)
③ R-12 口径裁定追认定稿:条目回写开发计划(NULL 不参与 A/C 判定 / 同类走一般转换规则)

审核教训留痕:PRD 独立 AI 三轮审查未抓出外部事实断言无出处 —— 联网核实铁律再添例证
文档:开发计划 T-14 开口闭环段 + 基线 849 · 日志新节 · TODO/MEMORY/AGENTS/交接文档开口清零
This commit is contained in:
2026-09-12 14:31:35 +08:00
parent cde0c226fe
commit b411d5a087
16 changed files with 292 additions and 46 deletions
+6
View File
@@ -99,3 +99,9 @@ UPDATE core_product SET share_class = 'A', allow_ac_convert = 0 WHERE product_id
UPDATE core_product SET share_class = 'C', allow_ac_convert = 0 WHERE product_id = 'PROD-003095';
-- 同类别对照:'C' ↔ 'C' 不触发 A/C 判定,走一般转换规则放行(allow_ac_convert 保持默认 0)
UPDATE core_product SET share_class = 'C' WHERE product_id = 'PROD-510300';
-- ---- ⑦ T-14 开口②闭环(2026-09-12 用户拍板补接):舍去法(TRUNCATE)产品载体 ----
-- 联网核实:「舍去」型真实存在(南方利众/宝元、邮储、华宝、申万菱信、东方基金等
-- 合同/公告明写「份额 2 位后舍去」)。载体选 PROD-005828(稳健增利混合):
-- 无规则行(11-seed 未覆盖)→ 走 core_product 层回退链,且无任何转换场景引用(零回归)。
UPDATE core_product SET rounding_mode = 'truncate' WHERE product_id = 'PROD-005828';
+5 -3
View File
@@ -25,9 +25,11 @@ USE jinrong_core;
-- - 南方利众混合 C 转换公告:份额保留 2 位、两位以后的部分**舍去**归基金资产
-- - 邮储银行《基金转换常见问题》:转换份额 2 位后舍去
-- - 华宝未来主导混合 / 申万菱信业务规则 / 东方基金登记业务规则:同类「舍去」条款
-- ⚠️ 本项目 T-14 只接入 share_digits;rounding_mode='truncate' 的消费接入为
-- 登记开口(真实差异载体,待用户裁定后排期),故本种子暂不配置 truncate 行,
-- 避免出现「种子有值、实现不消费」的半成品。
-- ✅ 消费接入已闭环(2026-09-12 用户拍板补接):`core_ro.get_share_rounding`
-- 返回 (digits, mode) 单点,calc.product_round 消费 mode(half_up/truncate)。
-- 舍去型载体配在 core_product 层(09-seed-org.sql ⑦ 段 PROD-005828),
-- 本文件(规则行层)仍全 half_up —— 恰好验证「位数取规则行、模式落 product」
-- 的逐层独立回退。
-- 4. 整数位的真实载体是**场内渠道**(LOF/ETF 场内申购先 2 位再截位到整数份,
-- 如招商瑞智优选 LOF 基金合同),不是产品固有属性;本项目无场内/场外渠道
-- 维度,不做该建模。
+11
View File
@@ -212,6 +212,17 @@ def run_assertions() -> bool:
print(" ✗ core_share_rule 种子不足")
ok &= p10
# ---- T-14 开口②闭环:09-seed-org.sql ⑦ 段 truncate 载体在位 ----
cur.execute(
"SELECT rounding_mode FROM core_product WHERE product_id = 'PROD-005828'"
)
tr_row = cur.fetchone()
p12 = bool(tr_row) and tr_row[0] == "truncate"
print(f"⑫ 舍去法载体:PROD-005828.rounding_mode = {tr_row[0] if tr_row else None}(期望 truncate)")
if not p12:
print(" ✗ ⑦ 段未生效(重灌 scripts/core/09-seed-org.sql)")
ok &= p12
# ---- DoD ⑪ core_convert_request 建表即含 6 态 ENUM(T-1 · 免二期 ALTER)----
cur.execute(
"SELECT COLUMN_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() "