docs: 阶段B spec第四轮修正——mailsent验证表述统一/校验归位§2/状态行与CF7版本措辞

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-18 17:56:49 +08:00
parent c10bf456d0
commit f4af77d261
@@ -2,7 +2,7 @@
日期:2026-09-18
分支:m1
状态:设计已获用户批准(含两轮自审 17 项修正)
状态:设计已获用户批准(含三轮自审 21 项修正)
依据:gpt/14 §5/§6.2;前置阶段A 已上线(2026-09-18,归属冻结/区间停留/清洗三轨制/契约 v2)
实测基础:hesucar.com 载体盘点(2026-09-18 Playwright)——tel/mailto/wa.me 链接、Contact Form 7 v6.1.6 留言表单(Name/Tel/Message→Inquiry Now)、悬浮聊天组件
@@ -63,7 +63,7 @@
- `EVENT_NAMES` +6:contact_click / form_start / form_error / form_submit / form_submit_result / product_view。
- `EVENT_PROP_WHITELIST` 严格枚举(§1 表格所列键;无自由文本字段)。
- validate_event 新键校验:`channel` ∈ {whatsapp, phone, email};`result_code` ∈ {mail_sent, mail_failed};`error_code` 短枚举(invalid/spam/other);`submission_id` uuid 或空串;`product_id` slug 格式(复用清洗 `_SAFE_VALUE` 同款正则);`inferred` 布尔;`rule_version` 短 slug。
- validate_event 新键校验:`channel` ∈ {whatsapp, phone, email};`result_code` ∈ {mail_sent, mail_failed};`error_code` 短枚举(invalid/spam/other);`submission_id` uuid 或空串;`form_id` 格式 `cf7-\d+`;`product_id` slug 格式(复用清洗 `_SAFE_VALUE` 同款正则);`inferred` 布尔;`rule_version` 短 slug。
- 幂等沿 uq_site_event;归属走既有 v2 路径,零新机制。
## 3. D06 归因扩展(attribution.py + constants.py)
@@ -71,7 +71,7 @@
- **优先级重排**:点击参数决定平台性质——fbclid → **paid_social**(Meta 平台本质),gclid/msclkid/yclid → paid_search;utm_medium 仅在无点击参数时参与判定(label_only 证据)。
- `CHANNELS` +`paid_social`;utm_medium 规范化映射(写死):paid_search 强化集 {cpc, ppc, paidsearch, paid}、paid_social 判定集 {social, paid_social, social_ads, paidsocial}(需同时有 fb 家族 utm_source)。
- **`ATTRIBUTION_RULE_VERSION` bump v1→v2** + 历史重算:`recompute_attribution` 管理命令**已存在**(management/commands/recompute_attribution.py,含 --site 参数与既有幂等测试 test_attribution.py:226 可参照),本任务只需 bump 版本 + 新渠道分支测试 + 线上重算执行。
- `form_id` 服务端格式校验:`cf7-\d+`。
- fb 家族 utm_source 判定复用既有广告家族归一表(132e2fe 引入的家族映射)。
- admin 中文标签同步:付费社交(渠道徽章/来源分布,grep 全部渠道显示点统一改)。
## 4. Admin 前端
@@ -100,7 +100,7 @@ spec 附录写死(阶段C 直接照做,客迹侧零改动):
## 6. 验证与部署
- **CF7 事实核验(实现第一步)**:读 CF7 6.1.6 公开源码(wp-content/plugins/contact-form-7/includes/js/index.js)确认事件 dispatch 名/payload/FormData 时序;Playwright 在 hesucar 空表单提交实测 invalid+submit 路径(无副作用)。**不真提交验证 mailsent**(会给商家发邮件)——按源码实现,上线后以第一封真实询盘闭环验证。
- **CF7 事实核验(实现第一步)**:读线上 CF7 版本(当前 6.1.6)公开源码(wp-content/plugins/contact-form-7/includes/js/index.js)确认事件 dispatch 名/payload/FormData 时序;Playwright 在 hesucar 空表单提交实测 invalid+submit 路径(无副作用)。开发期不真提交验证 mailsent——按源码实现,**部署后以本节末条的真实测试询盘闭环验证**。
- SDK 单测:点击委托命中/漏判、CF7 事件模拟、submission_id 每次尝试独立、form_start 去重、pattern 匹配、onSegmentChange、track 补归属。
- server 测试:6 新事件校验(枚举/格式)、漏斗 API distinct session 口径、归因 paid_social/utm_medium 分支、规则 v2 重算幂等。
- admin:时间线渲染新事件、漏斗卡数据正确。