mirror of
https://github.com/sinanyuntu/trade-message-center.git
synced 2026-09-17 13:22:11 +08:00
2.9 KiB
2.9 KiB
执行清单:OneTalk DOM 二次卡片采集重构
修改范围
- Replace current uncommitted
rendered_dom_cardcontract/reader/tests with no-kind namedOneTalkRenderedCard - Modify generic contract, CenterMessage decoder/export, DOM reader/observer, bridge, ledger and focused tests
- Modify server schema, migration 0016, repository/read projection and server tests
- Delete obsolete React reader and retain only legacy typed read compatibility
顺序
- 把 contract tests 改为无
kind的 exact named object;空、unknown key、裸texts[]、DOM/template metadata 都必须拒绝。 - 写结构 fixture:未知订单模板
3829708538501与无模板 metadata 的卡都必须按可见结构产生 approved named values,不从 cardType/messageType/template ID 决定 mapping;空结构仍拒绝。先运行 reader tests 观察旧 template gate 失败。 - 实现三个 structure-based reader:strict identity -> 单一可见锚点分发(订单=
订单状态、询盘=详细需求、商品=最小订购量/Minimum order)-> safe named fields。零个或多个锚点命中时 fail closed;分发不产生kind。订单输出可见标题、单张图片和已审核 label/value;询盘使用单值image、purchaseQuantity、保留换行的.description-container和reference;商品输出单值image、标题、价格和字符串 MOQ。删除数组图片、attributes、promotionTexts、对象 MOQ、template registry 和 generic TreeWalker list projection;未知或不安全单字段省略,动作节点不投影。 - 改 bridge/ledger/wire 到 no-kind generic object,保留 durable-first/ACK/composite idempotency,删除 reader 内任何
rendered_dom_card路径。 - 更新 CenterMessage
renderedCard和 server projection:generic supplement 只作顶层字段,basecontent.kind不变;保留 typed historical supplement 分支。 - 改 0016/schema/migration tests:不允许
rendered_dom_card,接受 legacy typed 或无 kind/versioned generic object;0015 只 DROP 四列不变。 - 跑 contract/extension/server full tests、typecheck、db:check、root build、format/diff and source-boundary searches。真实 Chrome 仅在加载 current build 后验证 product/inquiry/order mappings 与 bridge/ACK/DB。
验证命令
pnpm --filter @trade-message-center/onetalk-contract test
pnpm --filter @trade-message-center/chrome-extension test
pnpm --filter @trade-message-center/chrome-extension typecheck
pnpm --filter @trade-message-center/server test
pnpm --filter @trade-message-center/server typecheck
pnpm --filter @trade-message-center/server db:check
pnpm build
git diff --check
rg -n 'rendered_dom_card|texts:|cardType|messageType|React|Fiber|baseEvidence|setInterval' apps/chrome-extension/src/onetalk/main-page/card-observer apps/chrome-extension/src/onetalk/page-bridge apps/chrome-extension/src/onetalk/service-worker packages/onetalk-contract/src apps/server/src