T-15 D28 部分成交专项:
- sqlite +1 终态单幂等 skipped 口径裁定(ConfirmConflict 仅限读后状态才变窗口)
- 真库 confirm +3 组 19 项(E2 占用释放双向 / G2 actual_qty=0 → rejected / H2 撤单后确认)→ 102/102
- CONVERT_STRESS Barrier(2) 窄窗争批:恰 1 confirmed + 1 rejected
- 突变实证防御纵深:④可用量复核 / ⑤plan_lots / 事务内哨兵三道防线拆任一道仍收敛 rejected
T-16 D29 资金流中转:
- _insert_cash_flows 全仓唯一写入点(out/redeem 费前 + in/subscribe 净转入,remark=convert:{gid} 同事务)
- test_confirm_writes_no_cash_flow 反转为恰 2 条 + 金额对账(T-7 登记闭环)
- 真库 apply A2 组 + B 组 0 残留 → 30/30;confirm 反转断言 → 103/103
- FK 坑(core_cash_flow.fk_cf_customer 挡客户删除):5 处清理段补删
T-17 D30 share_class + A/C 互转:
- _validate_products 纯新增拦截分支:两端 share_class 非空且不同才查 allow_ac_convert(任一端=1 两向放行)
- 口径裁定 2 条(R-12 字面偏差,待用户追认):NULL 不参与 A/C 判定 / 同类走一般转换规则
- 联网核实(用户铁律):A/C 互转需管理人开通(摩根 2025-11 公告)= 开关真实载体;持有期重新起算与本仓一致
- 种子 ⑥ 段(双开对/双关对照/同类对照);sqlite +4 → 842 passed / 8 skipped;真库 accept H 组 → 43/43
- 突变:分支失效 → closed 红,还原绿
文档:开发计划 T-15~T-17 DoD 全勾 + 执行记录 · 基线 842 · TODO/MEMORY/AGENTS/交接文档 v4.5 终态(第 5 步收官 → 下一步第 6 步集成测试)
102 lines
8.4 KiB
SQL
102 lines
8.4 KiB
SQL
USE jinrong_core;
|
||
|
||
-- ============================================================================
|
||
-- 09-seed-org.sql · 产品机构信息与申购费率
|
||
-- 版本:v1.1(2026-09-10 · T-1 新增;同日按「真实业务」修订 —— 分类归位 + 分组重排)
|
||
-- 依据:
|
||
-- · 证监会公告〔2025〕22 号 §8 申购费率上限(2026-01-01 施行):
|
||
-- 主动偏股型 ≤ 0.80% · 其他混合型 ≤ 0.50% · 指数型/债券型 ≤ 0.30% · 货基 0
|
||
-- · PRD §4.2/§4.3:申购费简化为单一 core_product.subscribe_fee_rate(补差费计算源)
|
||
-- · PRD/架构:同一笔转换要求 **同销售机构 + 同管理人 + 同 TA**
|
||
--
|
||
-- 【v1.1 修订原因 · 分类必须与 product_type 匹配】
|
||
-- v1.0 曾把 `PROD-005827`(`product_type='mixed'`,平衡混合一号)按「主动偏股」取到
|
||
-- **0.80%** 上限 —— 目的是凑出 0.50% 的补差幅度。这是**分类错误**:
|
||
-- 22 号文 §8 的费率档由**产品类型**决定,`mixed` 只能套「其他混合型 ≤0.5%」。
|
||
-- 现修正:`PROD-005827` → **0.0050**;主示例转入方改用**真正的主动偏股产品**
|
||
-- `PROD-003095`(`stock` / R4 / 净值 0.9500 —— 与原示例除数相同,故 §5.3 数字不变)。
|
||
-- ⚠️ 通用规则:**用某一档上限前,先证明该产品确实属于这一档**,不得「看名字像」
|
||
-- 或「为了凑数值差」升档(自检第 12 问)。
|
||
--
|
||
-- 【v1.1 修订原因 · 分组按真实业务重排】
|
||
-- v1.0 的分组是「华夏组全是低风险(债/混合/货基/指数)、易方组全是股票型」——
|
||
-- **不符合真实**:真实的基金管理人都是**全产品线**(同一家公司旗下同时有债基、
|
||
-- 混合、指数、股票、货基)。真实的分组必须以「管理人」为单位、覆盖多风险层级,
|
||
-- 转换约束「同管理人 + 同 TA」才有实际意义。
|
||
-- 现分组:华夏 / 易方 各 6 只、均覆盖多个风险层级;理财与私募单列(真实形态:
|
||
-- 银行理财子公司、私募管理人,与公募不同主体,天然不可与公募互转)。
|
||
--
|
||
-- 【分组与费率一览】
|
||
-- 华夏模拟基金 / TA-CN-001(主演示组,覆盖 5 类)
|
||
-- PROD-110022 稳健债基 A bond R1 0.0030 ← 主示例转出
|
||
-- PROD-110023 信用债精选 bond R2 0.0030
|
||
-- PROD-005827 平衡混合一号 mixed R3 0.0050 ← v1.1 由 0.0080 归位
|
||
-- PROD-000001 现金宝货币 money R1 0.0000 ← 同费率对照组(0)
|
||
-- PROD-510300 沪深300指数 index R3 0.0030 ← 同费率对照组(与 110022 同)
|
||
-- PROD-003095 医药健康精选 stock R4 0.0080 ← 主示例转入(真主动偏股)
|
||
-- 易方模拟基金 / TA-CN-002(覆盖 4 类)
|
||
-- PROD-000002 同业存单基金 bond R1 0.0030
|
||
-- PROD-005828 稳健增利混合 mixed R2 0.0050
|
||
-- PROD-510500 中证500指数 index R4 0.0030
|
||
-- PROD-161725 科技成长主题 stock R4 0.0080
|
||
-- PROD-161726 消费升级主题 stock R4 0.0080
|
||
-- PROD-XYZ999 进取成长五号 stock R5 0.0080
|
||
-- 兴银理财 / TA-CN-003 : PROD-WMG001 稳享180天理财 wealth_mgmt R2 0.0000
|
||
-- 量化私募 / TA-CN-004 : PROD-PRIV01 量化中性私募一号 private_fund R4 0.0000
|
||
--
|
||
-- 【可验证的费率关系(供补差费演示与对照)】
|
||
-- 不同费率对:PROD-110022(0.0030)→ PROD-003095(0.0080)**同属华夏组、可互转** → 补差非 0
|
||
-- 同费率对照:PROD-110022(0.0030)↔ PROD-510300(0.0030)→ 补差 = 0
|
||
-- 零费率对照:PROD-000001(0)→ 任意产品补差非 0;任意 → PROD-000001 补差 = 0
|
||
--
|
||
-- 【跨主体负例保障(「同管理人 + 同 TA」硬约束的反例数据仍然充足)】
|
||
-- CUST-1004 : 161725(易方) + 510300(华夏) → 跨管理人 ✗
|
||
-- CUST-DEMO-A : 510500(易方) + 510300/000001(华夏) → 跨管理人 ✗
|
||
-- CUST-DEMO-B : 161725(易方) + PRIV01(量化私募) → 跨管理人 + 跨机构类型 ✗
|
||
--
|
||
-- 【最低持有余额】让 FR-C15 的两种动作都有数据可触发(否则 DEFAULT 0 使该分支永不进入,
|
||
-- 等于无测试覆盖):PROD-110022 = force_transfer(低于阈值强制全转)
|
||
-- PROD-005827 = force_redeem (低于阈值强制赎回剩余)
|
||
-- ============================================================================
|
||
|
||
-- ---- ① 华夏模拟基金 / TA-CN-001(主演示组 · 全产品线)----
|
||
UPDATE core_product SET fund_company = '华夏模拟基金', ta_code = 'TA-CN-001', subscribe_fee_rate = 0.0030 WHERE product_id = 'PROD-110022';
|
||
UPDATE core_product SET fund_company = '华夏模拟基金', ta_code = 'TA-CN-001', subscribe_fee_rate = 0.0030 WHERE product_id = 'PROD-110023';
|
||
UPDATE core_product SET fund_company = '华夏模拟基金', ta_code = 'TA-CN-001', subscribe_fee_rate = 0.0050 WHERE product_id = 'PROD-005827';
|
||
UPDATE core_product SET fund_company = '华夏模拟基金', ta_code = 'TA-CN-001', subscribe_fee_rate = 0.0000 WHERE product_id = 'PROD-000001';
|
||
UPDATE core_product SET fund_company = '华夏模拟基金', ta_code = 'TA-CN-001', subscribe_fee_rate = 0.0030 WHERE product_id = 'PROD-510300';
|
||
UPDATE core_product SET fund_company = '华夏模拟基金', ta_code = 'TA-CN-001', subscribe_fee_rate = 0.0080 WHERE product_id = 'PROD-003095';
|
||
|
||
-- ---- ② 易方模拟基金 / TA-CN-002(次演示组 · 全产品线)----
|
||
UPDATE core_product SET fund_company = '易方模拟基金', ta_code = 'TA-CN-002', subscribe_fee_rate = 0.0030 WHERE product_id = 'PROD-000002';
|
||
UPDATE core_product SET fund_company = '易方模拟基金', ta_code = 'TA-CN-002', subscribe_fee_rate = 0.0050 WHERE product_id = 'PROD-005828';
|
||
UPDATE core_product SET fund_company = '易方模拟基金', ta_code = 'TA-CN-002', subscribe_fee_rate = 0.0030 WHERE product_id = 'PROD-510500';
|
||
UPDATE core_product SET fund_company = '易方模拟基金', ta_code = 'TA-CN-002', subscribe_fee_rate = 0.0080 WHERE product_id = 'PROD-161725';
|
||
UPDATE core_product SET fund_company = '易方模拟基金', ta_code = 'TA-CN-002', subscribe_fee_rate = 0.0080 WHERE product_id = 'PROD-161726';
|
||
UPDATE core_product SET fund_company = '易方模拟基金', ta_code = 'TA-CN-002', subscribe_fee_rate = 0.0080 WHERE product_id = 'PROD-XYZ999';
|
||
|
||
-- ---- ③ 非同主体产品(真实形态:非公募主体,天然不可与公募互转)----
|
||
UPDATE core_product SET fund_company = '兴银理财', ta_code = 'TA-CN-003', subscribe_fee_rate = 0.0000 WHERE product_id = 'PROD-WMG001';
|
||
UPDATE core_product SET fund_company = '量化私募', ta_code = 'TA-CN-004', subscribe_fee_rate = 0.0000 WHERE product_id = 'PROD-PRIV01';
|
||
|
||
-- ---- ④ 兜底:任何未显式赋值的产品也保证非 NULL(DoD ③)----
|
||
UPDATE core_product SET fund_company = '其他模拟管理人', ta_code = 'TA-CN-099' WHERE fund_company IS NULL;
|
||
UPDATE core_product SET ta_code = 'TA-CN-099' WHERE ta_code IS NULL;
|
||
|
||
-- ---- ⑤ 最低持有余额(FR-C15 两种动作的可触发数据)----
|
||
UPDATE core_product SET min_hold_qty = 1000.0000, min_redeem_qty = 100.0000, min_hold_action = 'force_transfer' WHERE product_id = 'PROD-110022';
|
||
UPDATE core_product SET min_hold_qty = 2000.0000, min_redeem_qty = 200.0000, min_hold_action = 'force_redeem' WHERE product_id = 'PROD-005827';
|
||
|
||
-- ---- ⑥ T-17 / D30 同基金 A/C 份额互转演示对(R-12)----
|
||
-- 联网核实(2026-09-12):A/C 互转 = 同一基金不同份额类别的转换业务,
|
||
-- 需管理人「开通」(摩根行业睿选 2025-11《开通同一基金不同份额类别转换业务公告》),
|
||
-- 开通即 allow_ac_convert=1;转换后持有期重新起算(本仓转入新批次语义一致)。
|
||
-- A/C 对(开关开 · 双端):TA-CN-001 内 'A' ↔ 'C' → 放行
|
||
UPDATE core_product SET share_class = 'A', allow_ac_convert = 1 WHERE product_id = 'PROD-110022';
|
||
UPDATE core_product SET share_class = 'C', allow_ac_convert = 1 WHERE product_id = 'PROD-005827';
|
||
-- A/C 对照(开关关 · 双端 0):同 TA 同 'A'/'C' 但未开通 → 受理 400
|
||
UPDATE core_product SET share_class = 'A', allow_ac_convert = 0 WHERE product_id = 'PROD-110023';
|
||
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';
|