Files
mindfulness/spec_kit/Text Wrap/modules/integration/tasks.md
2026-02-10 11:39:33 +08:00

2.2 KiB
Raw Blame History

integration任务清单

目标:实现 wrapText() 统一入口并串联所有子模块,供 Home/Widget 使用。

0. 对齐与准备

  • 阅读并对齐口径
    • 阅读 spec_kit/Text Wrap/modules/integration/spec.md
    • 阅读 spec_kit/Text Wrap/modules/integration/plan.md
    • 阅读 spec_kit/Text Wrap/spec.md 的对外接口定义

1. 对外类型定义

  • 新建 client/src/features/textWrap/types.ts
    • 定义 WrapTextInput(与大 spec 对齐)
    • 定义 WrapTextMeta(包含 configVersion/fallback_type/overflow_type/reason/breaks/scoreTopTerms
    • 定义 WrapTextOutput

2. 实现 wrapText() 入口

  • 新建 client/src/features/textWrap/wrapText.ts
    • normalizeWhitespace固定策略 NORMALIZE
    • tokenize
      • ENtokenizeEN
      • TCsegmentGraphemes → Token[]
    • generateBreakpoints接入 forbiddenBreakRanges
    • 组装 scoring 的 lexicons
      • protectedPhrases 来自 constraints.protectedPhrases若有
    • 搜索:
      • APPsearchBestLayoutApp测量 mockablefontSpec 缺字段报错由 width-measurement 保证)
      • WIDGETsearchBestLayoutWidget默认 APPROX可选 MEASURE
    • 搜索失败/未覆盖 N
      • 调用 applyOverflowFallbackoverflowMode 默认APP=CLIPWIDGET=ELLIPSIS
    • 汇总输出 meta
      • configVersion
      • breaks若可得
      • scoreTopTermsdebug=true
      • fallback_type/overflow_type/reason

3. 导出

  • 新建 client/src/features/textWrap/index.ts
    • 导出 types 与 wrapText

4. 调整 Golden Tests 入口

  • client/src/features/textWrap/golden/__tests__/golden.test.ts 从测试 harness 切换为 wrapText()
    • 保持现有 fixtures 期望不变

5. 单测补充(最小)

  • 新建 client/src/features/textWrap/__tests__/wrapText.integration.test.ts
    • SYSTEM_DEFAULTmeta.fallback_type=SYSTEM_DEFAULT 且仍返回 lines/wrappedText

6. 收尾

  • npm test
  • npx tsc --noEmit
  • 将本 tasks.md 全部勾选完成
  • 更新 spec_kit/overview.md
    • 标记 integration 已完成(阶段性)
    • 写入变更文件清单