2.2 KiB
2.2 KiB
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:
- EN:tokenizeEN
- TC:segmentGraphemes → Token[]
- generateBreakpoints(接入 forbiddenBreakRanges)
- 组装 scoring 的 lexicons:
- protectedPhrases 来自 constraints.protectedPhrases(若有)
- 搜索:
- APP:searchBestLayoutApp(测量 mockable;fontSpec 缺字段报错由 width-measurement 保证)
- WIDGET:searchBestLayoutWidget(默认 APPROX;可选 MEASURE)
- 搜索失败/未覆盖 N:
- 调用 applyOverflowFallback(overflowMode 默认:APP=CLIP,WIDGET=ELLIPSIS)
- 汇总输出 meta:
- configVersion
- breaks(若可得)
- scoreTopTerms(debug=true)
- fallback_type/overflow_type/reason
3. 导出
- 新建
client/src/features/textWrap/index.ts- 导出 types 与
wrapText
- 导出 types 与
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_DEFAULT:meta.fallback_type=SYSTEM_DEFAULT 且仍返回 lines/wrappedText
6. 收尾
npm testnpx tsc --noEmit- 将本
tasks.md全部勾选完成 - 更新
spec_kit/overview.md- 标记
integration已完成(阶段性) - 写入变更文件清单
- 标记