Files
group_xinghuo_jinrong/scripts/core/11-seed-share-rule.sql
T
GaoYiYuan_0626 b411d5a087 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/交接文档开口清零
2026-09-12 14:31:35 +08:00

88 lines
5.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
USE jinrong_core;
-- ============================================================================
-- 11-seed-share-rule.sql · 产品份额舍入规则种子(D27 / R-13)
-- 版本:v1.1(2026-09-12 · T-14 联网核实纠偏;v1.0 曾给指数/存单产品配 4 位,
-- 注释依据「指数基金申购/转入确认份额允许保留 4 位小数」经联网核实
-- 查无实据且反证充分,见下——全部产品改回主流 2 位)
-- 依据:开发计划 v2.0 T-14(D27 产品舍入真正接入)+ 2026-09-12 联网核实
--
-- 【联网核实的真实业务口径(2026-09-12,逐条附出处)】
-- 1. 位数按产品(基金合同)配置 —— 行业真实做法:
-- 南方基金《关于调整旗下基金转换业务规则的公告》(2012) 明确把统一的
-- 「转入份额四舍五入保留两位」改为「根据各基金基金合同和招募说明书的
-- 相关规定保留小数点后 2 位」(pdf.dfcfw.com/pdf/H22_AN201202280004321524_1.pdf)
-- —— 这正是 D27「按产品配置」的最直接行业依据。
-- 2. 份额位数主流 2 位(申购/转换一致):
-- - 民生加银《基金转换规则》第八条:申请转换份额按四舍五入保留到小数点后 2 位
-- (msjyfund.com.cn/osoa/views/serviceCenter/conversionRule.html)
-- - 富时基金《开放式基金业务管理规则》:申购份额保留 2 位、第 3 位四舍五入
-- - 汇添富深证300 ETF 联接 / 华夏恒生 ETF 联接 / 易方达沪深300非银 ETF 基金合同:
-- 指数(联接)基金申购份额同样保留 2 位 —— **「指数基金 4 位」查无实据**
-- - 货币基金:1.00 元面值、份额 = 金额 ÷ 1.00 保留 2 位四舍五入
-- (中银货币 / 融通易支付 / 鑫元货币基金合同)
-- 3. 舍入方式真实存在「舍去(TRUNCATE)」型 —— rounding_mode 字段的现实载体:
-- - 南方利众混合 C 转换公告:份额保留 2 位、两位以后的部分**舍去**归基金资产
-- - 邮储银行《基金转换常见问题》:转换份额 2 位后舍去
-- - 华宝未来主导混合 / 申万菱信业务规则 / 东方基金登记业务规则:同类「舍去」条款
-- ✅ 消费接入已闭环(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-seed 头注 v1.0 原文沿用):未被本文件覆盖的产品
-- (business_type 无行)由 core_ro.get_share_digits 回退 core_product.share_digits
-- (DEFAULT 2)→ 再缺省回退 calc.PLACES(2)。降级路径有显式用例(T-14 DoD 2)。
-- ============================================================================
INSERT INTO core_share_rule (product_id, business_type, share_digits, rounding_mode) VALUES
-- 全部产品:主流 2 位 HALF_UP(核实结论:公募场外申购/转换份额位数主流即 2 位,
-- 产品间真实差异在舍入方式而非位数 —— 见头注 1/2/3)
('PROD-110022', 'subscribe', 2, 'half_up'),
('PROD-110022', 'redeem', 2, 'half_up'),
('PROD-110022', 'convert', 2, 'half_up'),
('PROD-110023', 'subscribe', 2, 'half_up'),
('PROD-110023', 'redeem', 2, 'half_up'),
('PROD-110023', 'convert', 2, 'half_up'),
('PROD-005827', 'subscribe', 2, 'half_up'),
('PROD-005827', 'redeem', 2, 'half_up'),
('PROD-005827', 'convert', 2, 'half_up'),
('PROD-005828', 'subscribe', 2, 'half_up'),
('PROD-005828', 'redeem', 2, 'half_up'),
('PROD-005828', 'convert', 2, 'half_up'),
('PROD-003095', 'subscribe', 2, 'half_up'),
('PROD-003095', 'redeem', 2, 'half_up'),
('PROD-003095', 'convert', 2, 'half_up'),
('PROD-000001', 'subscribe', 2, 'half_up'),
('PROD-000001', 'redeem', 2, 'half_up'),
('PROD-000001', 'convert', 2, 'half_up'),
-- 指数/存单产品:同为 2 位(v1.0 曾配 4 位,注释依据经联网核实不成立,2026-09-12 纠偏)
('PROD-510300', 'subscribe', 2, 'half_up'),
('PROD-510300', 'redeem', 2, 'half_up'),
('PROD-510300', 'convert', 2, 'half_up'),
('PROD-510500', 'subscribe', 2, 'half_up'),
('PROD-510500', 'redeem', 2, 'half_up'),
('PROD-510500', 'convert', 2, 'half_up'),
('PROD-000002', 'subscribe', 2, 'half_up'),
('PROD-000002', 'redeem', 2, 'half_up'),
('PROD-000002', 'convert', 2, 'half_up'),
('PROD-161725', 'subscribe', 2, 'half_up'),
('PROD-161725', 'redeem', 2, 'half_up'),
('PROD-161725', 'convert', 2, 'half_up'),
('PROD-161726', 'subscribe', 2, 'half_up'),
('PROD-161726', 'redeem', 2, 'half_up'),
('PROD-161726', 'convert', 2, 'half_up'),
('PROD-XYZ999', 'subscribe', 2, 'half_up'),
('PROD-XYZ999', 'redeem', 2, 'half_up'),
('PROD-XYZ999', 'convert', 2, 'half_up'),
('PROD-WMG001', 'subscribe', 2, 'half_up'),
('PROD-WMG001', 'redeem', 2, 'half_up'),
('PROD-WMG001', 'convert', 2, 'half_up'),
('PROD-PRIV01', 'subscribe', 2, 'half_up'),
('PROD-PRIV01', 'redeem', 2, 'half_up'),
('PROD-PRIV01', 'convert', 2, 'half_up');