|
|
@@ -236,6 +236,14 @@ node scripts/storage-bridge.mjs --file ./img.png --case-slug imperial-aero50006
|
|
|
|
|
|
`complianceBlockers` 非空 → `submit` **拒绝提交**(即使授权通过)。
|
|
|
|
|
|
+### 掩码只作用于 privacyFindings —— 别把 PII 漏在别处
|
|
|
+
|
|
|
+自动掩码**只**改 `privacyFindings[].snippet`;`title` / `summary` / `imageText` / `materialAssets[].ocrText|description` 都可能是**原样**文本。而 `title` 默认取 OCR 首行——**微信群名常直接含学员全名**(如「S26 101-ECO414某某某-(7)」),等于把姓名写进标题。
|
|
|
+
|
|
|
+提交前**逐字段**扫一遍这五个位置:`title` / `summary` / `imageText` / `materialAssets[].ocrText` / `materialAssets[].description`,把姓名、顾问昵称、机构名替换成占位(`贾**` / `顾问` / `创*留学`)。复核命令:整包 `json.dumps` 后查关键姓名子串是否为 0。
|
|
|
+
|
|
|
+另外「微信**群聊**截图」不是企微「默认同意存档」会话,图里也没有该告知 → 授权按 `pending` 处理,**必须由用户明确确认**才能 `--authorization authorized`。
|
|
|
+
|
|
|
## 归档通道(双通道,自动选择)
|
|
|
|
|
|
`submit` 会**先试云函数,不可达时自动回落 Parse 直写**,两条通道落库字段逐字一致(都只进待审清单):
|
|
|
@@ -252,6 +260,13 @@ node scripts/storage-bridge.mjs --file ./img.png --case-slug imperial-aero50006
|
|
|
- 服务端特权密钥只从环境变量 `CASE_PARSE_MASTER_KEY` 或 0600 的 `~/.fmode/config/enterprise/current.json` 读取,只进请求头,**不落盘、不打印**。
|
|
|
- 线上 `CaseAsset` 字段类型:`targetCustomer` / `resultEvidence` / `outcome` / `groupInfo` 是 **Object**(不是字符串),本通道已按此对齐。
|
|
|
|
|
|
+### 落库字段映射(易错,改过就回读)
|
|
|
+
|
|
|
+- `fitStatus`(适用跟进状态,见 PRD `10-案例推荐策略.md`)是**前端真正读的字段**(`case-list` / `case-detail` 的 `item.fitStatus`)。案例包里按契约是 `fitStatus[]` **数组**,线上字段是**单值字符串** → 取首个写入。**漏写 = 前端永远显示默认「新进线」、按跟进状态筛选永远不匹配。**
|
|
|
+- 「出分反馈/家长认可/退费保障」类案例对应 **异议处理中 / 沉默待跟进**(不是「已成交」);打标前先查 PRD 策略表,别凭直觉。
|
|
|
+- `reviewHint` 等只读知会字段一并写入。
|
|
|
+- 提交后**必做字段回读**:按 `tenantId + idempotencyKey` 查回该条,逐字段比对(尤其 `reviewStatus` / `readyForUse` / `fitStatus` / `maskingStatus`),**别只看 `submitted:true`**。直写通道对未知字段是静默忽略的(Parse REST 会剥掉 schema 外的列),字段名写错不会报错、只会静默丢。
|
|
|
+
|
|
|
## 云函数(部署若挂载了函数运行时)
|
|
|
|
|
|
| 函数 | 用途 |
|