docs(25): 更正我自己的上一条判断——behavior_score 是上游数据前提,不是本项目缺陷
上一轮我把"behavior_score 初始值为 0"记为**真缺陷**,并说"修复点在画像创建侧"。 继续查后发现前提不成立:**本项目不创建 fin_customer_profile 行**。 证据:全仓搜索 FundCustomerProfile( 只命中类定义(app/model/fund.py:296)与测试文件; 没有任何 INSERT;grep in_customer_profile 在 app/ 下只有类定义与一处注释; profile_assembly_service 走的是 ORM 读取 + 属性更新,行不存在时返回 profile_row_not_opened(说明它也不创建行)。所以画像行由**本项目之外的流程**写入, 是它把 behavior_score 设成了 0。 本项目的扣分逻辑本身是对的:min(满分, before) - deduction 再 max(0, ...) —— 给定 0, 任何扣分都只能得 0,这是算术必然,不是判断错误。 因此改为"上游数据前提缺失",并给出处置建议:① 上游创建画像时按满分初始化; ② 若上游改不了,则需要一个能区分"未初始化"与"扣光了"的标记(例如新增列), 但仅为这个目的加列的成本收益需要权衡。 **在拿到上游口径之前,本项目不做任何"见 0 就补 20"的处理** —— 0 同样是合法的扣分结果, 那样会把真正扣到 0 的客户错误地抬回满分。
This commit is contained in:
+19
-1
@@ -204,7 +204,25 @@ Asia/Shanghai 展示。北京 08:00 前生成时,统计窗口是"前一日 08:
|
|||||||
没有任何地方把它初始化成 20。
|
没有任何地方把它初始化成 20。
|
||||||
|
|
||||||
影响:行为分是"预警结案 → 客户行为评分下降"这条链路的落点,现在这条链路**产出为零**。
|
影响:行为分是"预警结案 → 客户行为评分下降"这条链路的落点,现在这条链路**产出为零**。
|
||||||
修复点在**画像创建侧**(把初始值设为满分),不在风控的扣分逻辑里。
|
|
||||||
|
**补充复核(同日):这不是本项目的代码缺陷,而是上游数据前提缺失。**
|
||||||
|
|
||||||
|
全仓搜索后确认,**本项目不创建 `fin_customer_profile` 行**:`FundCustomerProfile(` 只出现在
|
||||||
|
类定义与测试里,没有任何 INSERT;`profile_assembly_service` 走的是 ORM 读取 + 属性更新,
|
||||||
|
行不存在时返回 `profile_row_not_opened`。也就是说画像行由**本项目之外的流程**写入,
|
||||||
|
而它写入时把 `behavior_score` 设成了 0。
|
||||||
|
|
||||||
|
本项目的扣分逻辑本身是对的:`min(满分, before) - deduction` 再 `max(0, ...)` —— 给定 0,
|
||||||
|
任何扣分都只能得 0,这是算术必然,不是判断错误。
|
||||||
|
|
||||||
|
**处置建议**(不由技术侧单方面决定):
|
||||||
|
|
||||||
|
1. 上游创建画像时按满分初始化 `behavior_score`(需上游确认该字段的语义与取值范围);
|
||||||
|
2. 若上游无法改,则需要一个**能区分"未初始化"与"扣光了"**的标记(例如新增一列),
|
||||||
|
本项目才能在重建画像时补初值 —— 但仅为了这个目的加列,成本收益需要权衡。
|
||||||
|
|
||||||
|
在拿到上游口径之前,本项目**不做**任何"见 0 就补 20"的处理:0 同样是合法的扣分结果,
|
||||||
|
那样会把真正扣到 0 的客户错误地抬回满分。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user