Przeglądaj źródła

docs(cf): F-4 迁移编号修正确认(ppoint_consumption_log = 迁移420,419 已被 membership_levels.max_daily_analyze 占用)

Sisyphus 2 tygodni temu
rodzic
commit
b4f527c343

+ 1 - 1
docs/superpowers/PROJECT-OVERVIEW.md

@@ -227,7 +227,7 @@
 | **BASIC 体验会员 + 权益对比表动态化 + PROVIDER 退出会员权益**(2026-10-18):迁移 381/351/321 统一 level_order 语义(越大越高,PROVIDER=1 与 FREE 同级)+ `getMemberLevel` 归一 PROVIDER→FREE + `canUseFeature` 移除全权限兜底 + 活动价判定去 PROVIDER + 新接口 `POST /api/membership/compare` 聚合各档实际权限(折扣 bps / max_children / max_tasks_per_day / BasicQuotaService 配额 / features 开关),upgrade.vue 与 index.vue 对比表改动态渲染 | `api/API_REFERENCE.md` 4.50 |
 | **CF 值体系统一 · 数据层与配置归口(F-1 + W0.1)**(2026-10-24):8 张新表(cf_balance / cf_balance_log / cf_earn_rule + 24 行种子 / cf_earn_rule_history / cf_direct_sales_tier / cf_indirect_sales_tier / cf_earn_daily_limit + service_config)+ coupon/user_coupon 补 family_id + 迁移 407-412 + `ConfigService.getConfig`(缓存 TTL 60s + `CfConfigCache.invalidate`) | `plans/2026-10-24-cf-value-unification-plan.md` + `api/API_REFERENCE.md` 六 |
 | **CF 值体系统一 · F-6 存量迁移**(2026-10-24):迁移417 将 `family_platform_balance`、`family_members.system_points`、`user_platform_balance` 一次性幂等迁入成员维度 `cf_balance`;三类 `migration_*` 流水守卫重复执行,旧表保留只读历史 | `plans/2026-10-24-cf-value-unification-plan.md` §六 + `api/API_REFERENCE.md` 6.4 |
-| **CF 值体系统一 · F-4 分佣收口 + F03a/F03b 发放接入**(2026-10-25):推荐人返佣收口为两级销售奖(F03a 按团队 8 层内滚动一年累计 P 点档位上限 70% / F03b 按自身滚动一年消费 P 点档位上限 20%),共同基数 = 本单消费 P 点;迁移418 补两级档位种子 + `dedup_ref_type` 对齐为 F03a/F03b,迁移419 新建 `ppoint_consumption_log`(滚动一年聚合数据源,唯一键 `order_type+order_id`);发放统一走 F-2 `earnByRule` 只写 `cf_balance` + `cf_balance_log`,旧 `cf_transfer_record` 流水仅限买家 F02 路径;`CommissionDistService.distribute` 写接口 410 Gone、`commission_dist_log` 转只读;`/api/commission/cf/rate` 扩展两级档位字段 | `plans/2026-10-24-cf-value-unification-plan.md` §四/§3.1/§4.2/§4.4 + `api/API_REFERENCE.md` 4.33 + 6.5 |
+| **CF 值体系统一 · F-4 分佣收口 + F03a/F03b 发放接入**(2026-10-25):推荐人返佣收口为两级销售奖(F03a 按团队 8 层内滚动一年累计 P 点档位上限 70% / F03b 按自身滚动一年消费 P 点档位上限 20%),共同基数 = 本单消费 P 点;迁移418 补两级档位种子 + `dedup_ref_type` 对齐为 F03a/F03b,迁移420 新建 `ppoint_consumption_log`(滚动一年聚合数据源,唯一键 `order_type+order_id`;419 已被 `membership_levels.max_daily_analyze` 占用);发放统一走 F-2 `earnByRule` 只写 `cf_balance` + `cf_balance_log`;与 F-3a 共存(当前消费人 F02 + 推荐人 F03a/F03b 都走统一账本,`cf_transfer_record` 不再由分佣服务写入);`CommissionDistService.distribute` 写接口 410 Gone、`commission_dist_log` 转只读;`/api/commission/cf/rate` 扩展两级档位字段 | `plans/2026-10-24-cf-value-unification-plan.md` §四/§3.1/§4.2/§4.4 + `api/API_REFERENCE.md` 4.33 + 6.5 |
 
 ---
 

+ 5 - 4
docs/superpowers/api/API_REFERENCE.md

@@ -1101,7 +1101,7 @@ F03b 间接销售奖(`cf_indirect_sales_tier`,按**自身滚动一年累计
 
 > 匹配语义:`enabled=1 AND min_xxx <= 值 ORDER BY min_xxx DESC LIMIT 1`,无匹配档位不发放;比例按 `cf_earn_rule.params_json.max_rate_percent`(F03a=70、F03b=20)封顶。
 > 金额由 `cf_earn_rule.formula = floor(base_ppoints * rate_percent / 100)` 计算,发放统一走 `CfBalanceService.earnByRule`(幂等键复用 F-2 `uk_ref_type`),只写 `cf_balance` + `cf_balance_log`。
-> 滚动一年口径:消费支付成功时落 `ppoint_consumption_log` 一行(唯一键 `order_type + order_id` 幂等),按 `created_at >= now() - 365d` 聚合(迁移419)。
+> 滚动一年口径:消费支付成功时落 `ppoint_consumption_log` 一行(唯一键 `order_type + order_id` 幂等),按 `created_at >= now() - 365d` 聚合(迁移420)。
 
 ### 4.34 CF 成员间转让(`/api/cf/transfer/*`)
 
@@ -2122,7 +2122,7 @@ W0.2 双配置中心合并:`product_config` 已并入 `service_config`(唯
 
 幂等键为 `(member_id, type='adjust', ref_type, ref_id)`(对齐 F-2 迁移416 升级后的唯一键 `uk_ref_type`);重复启动按三类 `ref_type` 逐笔跳过,余额与流水同事务提交。三套旧账本保留为只读历史,写接口 410 Gone 由 F-8 收口。
 
-### 6.5 F-4 分佣收口 + F03a/F03b 发放接入(迁移418-419,无新增接口)
+### 6.5 F-4 分佣收口 + F03a/F03b 发放接入(迁移418 / 迁移420,无新增接口)
 
 > 口径:计划 §四 / §3.1 / §4.2 / §4.4。发放链路由 `CfCommissionService` 统一承载,无新增 REST 接口;`/api/commission/cf/rate` 返回值扩展两级档位字段(见 4.33)。
 
@@ -2131,7 +2131,7 @@ W0.2 双配置中心合并:`product_config` 已并入 `service_config`(唯
 | 迁移 | 内容 | 幂等键 |
 |------|------|--------|
 | 418 | `cf_direct_sales_tier` / `cf_indirect_sales_tier` 各补 5 档种子(青铜/白银/黄金/铂金/钻石,缺行才补、不覆盖)+ `cf_earn_rule.dedup_ref_type` 对齐为规则编码(F03a→'F03a'、F03b→'F03b') | 按 `min_annual_ppoints` / `min_self_ppoints` 判重;UPDATE 带 `WHERE dedup_ref_type <> code` |
-| 419 | 新建 `ppoint_consumption_log`(滚动一年档位聚合数据源:消费支付成功落一行,`created_at >= now()-365d` 聚合) | `UNIQUE uk_order (order_type, order_id)` 同一订单重复触发只记一行 |
+| 420 | 新建 `ppoint_consumption_log`(滚动一年档位聚合数据源:消费支付成功落一行,`created_at >= now()-365d` 聚合)。注:迁移419 已被 `membership_levels.max_daily_analyze` 占用,本表顺延为 420 | `UNIQUE uk_order (order_type, order_id)` 同一订单重复触发只记一行 |
 
 **发放链路(`CfCommissionService.settle` / `settleReferrerOnly`):**
 
@@ -2147,7 +2147,8 @@ W0.2 双配置中心合并:`product_config` 已并入 `service_config`(唯
 ```
 
 - 数量与比例零硬编码:比例来自档位表,上限来自 `cf_earn_rule.params_json.max_rate_percent`,金额由公式计算。
+- 与 F-3a 共存:`CfCommissionService` 同时承载两条链路 —— 当前消费人 F02(`CfEarnDispatchService.earnConsumeCf`,按实付金额,商品订单实付与分润基数分离)与推荐人 F03a/F03b(本节);两条链路都只写 `cf_balance` + `cf_balance_log`,`cf_transfer_record` 不再由本服务写入。
 - 旧分佣写接口 `CommissionDistService.distribute` 已废弃:抛 `IllegalStateException`(消息含 "410 Gone",经 `GlobalExceptionHandler` 转 `Result.error(400, ...)`),无调用方;`commission_dist_log` 转只读历史表,管理端读取接口(`/api/admin/commission-dist/*`)保留不变。
 - `cf_rate_tier` 表保留只读,仅供等级展示(`PromotionTierService` / 管理端档位配置)使用。
 
-*文档更新:2026-10-24(CF 值体系统一 F-1 数据层 + W0.1 配置归口:8 张新表/迁移407-412 + service_config 与 cf_earn_rule 管理端接口);同日补登 W0.2 双配置中心合并(service_config 收编 product_config:迁移413 + product_key 维度 + product-config 接口 410 Gone + 配置中心统一入口);同日补登 F-6 存量迁移(迁移417 + 三套旧账本幂等迁入 cf_balance);2026-10-25 补登 F-4 分佣收口(迁移418-419 + 两级销售奖档位 + /rate 扩展字段 + CommissionDistService.distribute 410 Gone)*
+*文档更新:2026-10-24(CF 值体系统一 F-1 数据层 + W0.1 配置归口:8 张新表/迁移407-412 + service_config 与 cf_earn_rule 管理端接口);同日补登 W0.2 双配置中心合并(service_config 收编 product_config:迁移413 + product_key 维度 + product-config 接口 410 Gone + 配置中心统一入口);同日补登 F-6 存量迁移(迁移417 + 三套旧账本幂等迁入 cf_balance);2026-10-25 补登 F-4 分佣收口(迁移418/420 + 两级销售奖档位 + /rate 扩展字段 + CommissionDistService.distribute 410 Gone)*