Files
trade-message-center/.trellis/tasks/09-15-onetalk-rendered-card-readers/implement.md
T

3.4 KiB
Raw Blame History

统一 OneTalk React 卡片 reader 实施计划

Preconditions

  • 在修改 shared symbols 前,对 contract normalizer、rendered-card validator 和 card observer entry 执行 GitNexus upstream impact;若 risk 为 HIGH/CRITICAL,先向用户报告 blast radius。
  • 读取 trellis-before-dev 和受影响 layer 指南,确认当前 worktree、contract build 输入与现有测试命令。

Ordered implementation

  1. 以 failing storage test 复现 listPending 的缺失 helper,并覆盖 v9→v10 record 保留、账号/status scope 与禁止 getAll()
  2. 仅新增 rendered-card ledger 的 [channelAccountId, status][channelAccountId, conversationId] indexes,升级 IndexedDB 到 v10;将 listPending 改为必填账号的 indexed read,并让既有 clearConversationHistory 以第二个 index 删除精确会话;不改变 ledger record、ACK 或其它清理语义。
  3. 提取 contract-owned product URL canonicalizer,使基础 product content 与 rendered-product validator 共享同一 host/path/ID 规则;保留基础 product 行为的回归。
  4. 收窄 OneTalkRenderedProductContent:删除 storeImageUrl,改 rendered product URL 校验为 canonical product reference + exact productId,更新 export/types/contract fixtures/fingerprint assertions。
  5. 将 card observer 重构为 common bounded identity/Fiber helpers、strict classifier 和三种 typed reader。保持 observer lifecycle、selected conversation before/after check 和 base evidence 原样。
  6. 扩展 shared product item projection 以接受 productName;实现 order、inquiry、product 的 exact template predicates 和白名单 projection。商品仅写 product.imageUrl,不读取或输出 hsfImg
  7. 为三类 reader 添加真实形状 fixture,覆盖 valid path、every classifier false path、缺失/unsafe fields、会话失配与 exact output schema;更新 contract and observer targeted tests。
  8. 运行 extension/contract focused tests,然后 format/typecheck/build。检查 bridge/coordinator regressions,确认无协议、ledger 状态机、server schema 或 migration diff。
  9. 在本地 diff review 后,用 Chrome 只读探针验证三类 runtime predicate;若需要 reload extension/reopen OneTalk tab,先取得用户授权。仅在基础 message candidate 已确认且 Bright 已认证时验证 ledger/DB 后续边界。

Validation

  1. pnpm --filter @trade-message-center/onetalk-contract test
  2. pnpm --filter @trade-message-center/chrome-extension test -- onetalk-rendered-card-observer
  3. 相关 contract/extension test files 的 Node test 命令(单次 backend command 如需运行,上限 60 秒)
  4. pnpm format:check
  5. pnpm typecheck
  6. pnpm build
  7. git diff --checkGitNexus detect_changes(),并复核所有 changed symbols/flows
  8. Chrome read-only runtime probes;可用时再报告 ledger/ACK/DB 证据,不能以 bundle 或单元测试替代。

Rollback and risk controls

  • 在 shared contract validation 失败或 contract build 不一致时,不加载新 extension bundle;修正 contract parity 后再验证。
  • 不引入 URL fallback、通用 props crawl、DOM text inference 或自动点击来提高命中率;任何未知模板继续拒绝。
  • 只允许 rendered-card ledger 的 v10 index-only 迁移。若后续发现外部环境已有携带 storeImageUrl 的 rendered-product rows,停止部署并另建兼容/数据迁移任务,不能在本 task 中静默接纳旧 shape。