1|# 子系统 06 — 风险与反欺诈 (`risk`) v1.0 2| 3|## 子系统概述 4| 5|| 维度 | 说明 | 6|| --- | --- | 7|| 代号 | `risk` | 8|| 核心职责 | 强弱关联判断、黑名单实体管理、风险事件管理、双重退款检测 | 9|| 数据所有权 | `risk_signals`, `risk_cases`, `blacklist_entities`, `refund_match_results` | 10|| 启动依赖 | identity(软依赖) | 11|| 外部系统依赖 | Amazon(退款数据)、财务系统(OA 返款数据) | 12| 13|--- 14| 15|## 1. 模块划分 16| 17|``` 18|┌─────────────────────────────────────────────────────────────┐ 19|│ risk 子系统 │ 20|│ │ 21|│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 22|│ │ M1: 关联判断 │ │ M2: 黑名单 │ │ M3: 双重退款 │ │ 23|│ │ 引擎 │→│ 管理 │ │ 检测 │ │ 24|│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ 25|│ │ │ │ │ 26|│ ▼ ▼ ▼ │ 27|│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 28|│ │ M4: 风险事件 │ │ M5: 风险审核 │ │ M6: 对外 API │ │ 29|│ │ 管理 │ │ Admin │ │ Gateway │ │ 30|│ └──────────────┘ └──────────────┘ └──────────────┘ │ 31|│ │ 32|└─────────────────────────────────────────────────────────────┘ 33|``` 34| 35|| # | 模块 | 职责 | 36|| --- | --- | --- | 37|| M1 | 关联判断引擎 | 对每次风险信号做强弱关联判断(强:邮箱/设备/电话/地址/订单号/ProfileID/收款信息 命中→高风险;弱:IP单独/姓名单独/同址异名→观察+复核) | 38|| M2 | 黑名单管理 | 黑名单实体管理(添加/移除/过期)、黑名单同步、命中查询 | 39|| M3 | 双重退款检测 | Amazon 退款记录 vs OA 返款记录的自动比对,检测重复退款 | 40|| M4 | 风险事件管理 | 风险事件创建、状态流转、关联工单/推送/计划状态回写 | 41|| M5 | 风险审核 Admin | 人工复核弱关联风险、确认/排除诈骗、黑名单操作 | 42|| M6 | 对外 API Gateway | 供所有子系统查询风险状态、上报风险信号 | 43| 44|--- 45| 46|## 2. 各模块内外说明 47| 48|### 2.1 M1: 关联判断引擎 49| 50|| 维度 | 说明 | 51|| --- | --- | 52|| **对内** | 每次风险信号进入时执行:8 项强关联维度(邮箱/设备号/电话/收件人姓名+地址/订单号/聊天记录/Profile ID/收款信息)→任一命中→高风险;3 项弱关联维度(IP单独/姓名单独/同址异名)→高风险观察+人工复核;判断结果:强关联/弱关联/无关联 | 53|| **对外接口** | `GET /api/risk/check/{person_id}` — 风险查询(含关联判断结果) | 54|| **数据写入** | `risk_signals` | 55|| **依赖** | `GET /api/identity/context/{person_id}` — 获取身份线索用于关联判断 | 56|| **关键规则** | 风险判断不是一次性,每次有效互动都要重做;非 APP 用户缺设备/注册邮箱等维度→风险识别能力下降 | 57| 58|### 2.2 M2: 黑名单管理 59| 60|| 维度 | 说明 | 61|| --- | --- | 62|| **对内** | 黑名单实体 CRUD(邮箱/设备/电话/地址/收款信息);黑名单命中查询(任何子系统查询用户是否在黑名单);黑名单同步(确认诈骗后同步到黑名单);黑名单过期/申诉机制 | 63|| **对外接口** | `GET /api/risk/blacklist/check?type=EMAIL&value=xxx` — 黑名单命中检查 | 64|| **数据写入** | `blacklist_entities` | 65|| **待确认** | 黑名单是否有过期时间?申诉/移除流程? | 66| 67|### 2.3 M3: 双重退款检测 68| 69|| 维度 | 说明 | 70|| --- | --- | 71|| **对内** | 采集 Amazon 退款记录(外部系统同步)+ OA 返款记录(财务系统同步);按订单号/用户/金额/时间自动比对;匹配结果:无重复/疑似重复/确认重复;确认重复时强告警+阻止后续返款 | 72|| **对外接口** | `GET /api/risk/double-refund-check/{person_id}` — 双重退款检测 | 73|| **数据写入** | `refund_match_results` | 74|| **依赖** | Amazon 退款数据(外部)、OA 返款数据(外部财务系统) | 75|| **待确认** | Amazon 退款数据如何及时获取?OA 返款记录是否已有 API? | 76| 77|### 2.4 M4: 风险事件管理 78| 79|| 维度 | 说明 | 80|| --- | --- | 81|| **对内** | 风险事件创建(客服上报疑似诈骗 / 双重退款检测 / 关联判断命中);事件状态流转(待复核→复核中→确认风险/排除风险);高风险链路动作(拦截继续推送/拦截自动退款/拦截自动放行);回写关联工单/推送/计划状态 | 82|| **对外接口** | `POST /api/risk/report` — 上报风险信号(客服、系统自动均可调用) | 83|| **数据写入** | `risk_cases` | 84| 85|### 2.5 M5: 风险审核 Admin 86| 87|| 维度 | 说明 | 88|| --- | --- | 89|| **对内** | 人工复核弱关联风险;确认/排除诈骗判定;黑名单手动操作;风险口径维护 | 90|| **对外接口** | 管理 API | 91|| **待确认** | 复核时效要求?(N 分钟内必须复核?) | 92| 93|--- 94| 95|## 3. 对外 API 契约(草案) 96| 97|| 接口 | 方法 | 输入 | 输出 | 消费者 | 98|| --- | --- | --- | --- | --- | 99|| 风险查询 | `GET /api/risk/check/{person_id}` | person_id | `{risk_level(NONE/WEAK/STRONG), signals[], cases[]}` | 所有子系统(每次互动时调用) | 100|| 上报风险信号 | `POST /api/risk/report` | `{person_id, signal_type, evidence, reported_by}` | `{signal_id}` | support(客服上报诈骗)、outreach(异常互动) | 101|| 黑名单命中 | `GET /api/risk/blacklist/check?type=&value=` | 维度类型+值 | `{hit, entity}` | outreach(发送前)、identity(身份归并时) | 102|| 双重退款检测 | `GET /api/risk/double-refund-check/{person_id}` | person_id | `{status, matched_refunds[]}` | outreach(返款前)、support(退款处理前) | 103| 104|--- 105| 106|## 4. 数据对象 107| 108|| 对象 | 核心字段 | 说明 | 109|| --- | --- | --- | 110|| `risk_signals` | signal_id, person_id, signal_type, hit_dimensions[], risk_level(STRONG/WEAK), detected_at | 风险信号(每次互动生成的判断) | 111|| `risk_cases` | case_id, person_id, source, status(PENDING_REVIEW/REVIEWING/CONFIRMED_RISK/RULED_OUT), reviewer, created_at, resolved_at | 风险事件 | 112|| `blacklist_entities` | entity_id, entity_type(EMAIL/DEVICE/PHONE/ADDRESS/PAYMENT), entity_value, status(ACTIVE/EXPIRED/APPEALED), added_at, added_by | 黑名单实体 | 113|| `refund_match_results` | match_id, person_id, amazon_refund_id, oa_refund_id, match_status(NO_DUPLICATE/SUSPECTED/CONFIRMED), matched_at | 双重退款比对结果 | 114| 115|--- 116| 117|## 5. 业务澄清问题清单 — risk 118| 119|### 5.1 强弱关联规则(4 项) 120| 121|| # | 问题 | 优先级 | 122|| --- | --- | --- | 123|| R-01 | 8 项强关联维度中,每个维度的命中是独立判断还是组合判断?(例如仅「设备号命中」是否就足够判定强关联?还是需要「设备号 + 电话」同时命中?) | **P0** | 124|| R-02 | 「强关联→直接进入高风险或黑名单链路」——这里的「直接」是指全自动化拦截无需人工确认?还是系统先拦截再人工审核?(涉及自动化力度) | **P0** | 125|| R-03 | 弱关联的「观察期」多长?观察期过后是自动解除还是必须人工确认?观察期内用户继续参与互动如何处理? | P1 | 126|| R-04 | 风险判断中「IP 单独命中」列为弱关联——IP 从哪里获取?(JOYHUB APP?EDM 邮件头?客服系统?)不同来源的 IP 可靠性不同 | P1 | 127| 128|### 5.2 双重退款(4 项) 129| 130|| # | 问题 | 优先级 | 131|| --- | --- | --- | 132|| R-05 | Amazon 退款数据如何获取?(SP-API 实时拉取?T+1 同步?手动导入 CSV?)同步频率决定检测时效 | **P0** | 133|| R-06 | OA 返款系统是哪个?是否有 API?如果没有 API,返款记录怎么录入?(财务手动录入?CSV 导入?) | **P0** | 134|| R-07 | 「双重退款」比对的关键字段是什么?(订单号?金额?用户?时间窗口?)匹配精度?(金额完全相等还是 ±X%?时间窗口多宽?) | P1 | 135|| R-08 | 确认重复退款后,阻止后续返款——「阻止」是指系统自动拦截返款指令,还是只发告警让人工决定? | P1 | 136| 137|### 5.3 黑名单管理(3 项) 138| 139|| # | 问题 | 优先级 | 140|| --- | --- | --- | 141|| R-09 | 黑名单是否有过期/申诉/解除机制?(例如用户被误标后如何申诉?谁有权解除?) | P1 | 142|| R-10 | 黑名单是否需要与外部系统同步?(例如 JOYHUB 的黑名单?Amazon 的欺诈标记?)同步方向? | P1 | 143|| R-11 | 黑名单的粒度——是标记「真实人」还是「某个维度的值」?(标记的是真实人 ID 还是具体的邮箱/设备?) | P1 | 144| 145|### 5.4 风险可见性(3 项) 146| 147|| # | 问题 | 优先级 | 148|| --- | --- | --- | 149|| R-12 | 文档要求「客服、审核、退款等环节必须都能看到风险提醒」——风险提醒的展现形式是什么?(红色标签?弹窗?工单页顶部横幅?) | P1 | 150|| R-13 | 风险状态的「提醒」通过什么通道发送?(audit 通知中心?IM 消息?系统内消息?) | P1 | 151|| R-14 | 风险人员角色是否需要独立的风险控制台前端?该前端需要哪些功能?(事件列表/审核工作台/黑名单管理/统计报表?) | P2 | 152| ### 5.5 高级风险检测能力(4 项) | # | 问题 | 优先级 | | --- | --- | --- | | R-15 | 是否需要行为速度检测?(同一真实人短时间内大量注册/大量申请退款/大量提交评价→触发异常行为告警?) | P1 | | R-16 | 是否需要设备指纹/浏览器指纹?(识别同一设备换账号、模拟器、虚拟机等欺诈行为?) | P2 | | R-17 | 是否需要地理位置异常检测?(同一账号短期内从不同国家/城市登录→触发告警?) | P2 | | R-18 | 风险评分模型——是否需要一个综合风险分数(0-100)而非二元判断(强/弱/无)?评分模型的因子和权重? | P1 | ### 5.6 风险事件处理流程(3 项) | # | 问题 | 优先级 | | --- | --- | --- | | R-19 | 风险事件的优先级(P0/P1/P2)如何定义?(双重退款确认→P0?单次弱关联→P2?)不同优先级的响应 SLA? | P1 | | R-20 | 风险人员的工作台——是否需要「待审核队列」「审核中」「已处理」等看板视图?是否需要分配给具体审核人? | P1 | | R-21 | 同一个人短时间内触发多次风险信号——是每次生成新事件还是合并到已有事件?合并规则? | P1 | ### 5.7 黑名单管理补充(3 项) | # | 问题 | 优先级 | | --- | --- | --- | | R-22 | 黑名单的生效范围——加入黑名单后是「全系统拦截」还是「只拦截某些操作」?(是否还允许正常购买?只拦截测评参与?) | P1 | | R-23 | 黑名单是否需要分级?(一级黑名单→全拦截 / 二级黑名单→降频+人工审核 / 三级黑名单→仅标记提醒) | P1 | | R-24 | 黑名单是否需要与外部欺诈数据库同步?(如行业共享的欺诈黑名单?Amazon 的 abuse 标记?) | P2 | ### 5.8 非 APP 用户风险盲区(2 项) | # | 问题 | 优先级 | | --- | --- | --- | | R-25 | 文档已明确「非 APP 用户识别能力下降」——是否需要额外的风控措施?(例如非 APP 用户的返款额度降低?首次返款必须人工审核?) | P1 | | R-26 | 是否计划引导非 APP 用户注册 APP 以补全风险画像?(EDM/客服主动引导注册——注册转化跟踪?) | P2 | ### 5.9 实施层面(3 项) | # | 问题 | 优先级 | | --- | --- | --- | | R-27 | 风险判断的实时性要求——每次互动时实时调用 risk API?(性能 overhead?需要缓存策略?) | P1 | | R-28 | 双重退款检测的时效——Amazon 退款数据(外部)同步延迟 vs OA 返款实时——T+N 的延迟是否可接受? | P1 | | R-29 | 风险事件的数据保留策略?(已解决的诈骗案件数据保留多久?用于后续模型训练还是定期清理?) | P2 |