更新换行算法和APP-PUSH
This commit is contained in:
77
spec_kit/Text Wrap/modules/integration/plan.md
Normal file
77
spec_kit/Text Wrap/modules/integration/plan.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# integration(技术计划)
|
||||
|
||||
## 1. 计划目标
|
||||
|
||||
实现对外统一入口 `wrapText()`(纯函数风格),把已完成的子模块串成可复用算法模块,供 Home(APP)与 Widget(WIDGET)调用:
|
||||
|
||||
- 参数口径统一:`lang/context/availableWidth/maxLines/overflowMode/lineMode/configVersion/debug`
|
||||
- 输出统一:`lines[]/wrappedText/meta`,且 meta 可用于治理与 UI 兜底
|
||||
- 当 `meta.fallback_type=SYSTEM_DEFAULT` 时,UI 可选择交给系统排版(算法层仅标记,不擅自改变 UI 行为)
|
||||
|
||||
## 2. 入口签名(与大 spec 对齐)
|
||||
|
||||
实现并导出:
|
||||
|
||||
```ts
|
||||
wrapText({
|
||||
text,
|
||||
lang,
|
||||
availableWidth,
|
||||
maxLines,
|
||||
context,
|
||||
fontSpec?,
|
||||
overflowMode?,
|
||||
lineMode?,
|
||||
constraints?,
|
||||
configVersion?,
|
||||
debug?
|
||||
}) => { lines, wrappedText, meta }
|
||||
```
|
||||
|
||||
## 3. 组装流程(按执行顺序)
|
||||
|
||||
1. **normalizeWhitespace**(core-contract)
|
||||
2. **tokenize**
|
||||
- EN:tokenizeEN
|
||||
- TC:segmentGraphemes → Token[]
|
||||
3. **breakpoint-candidates**
|
||||
- generateBreakpoints(传入 constraints.forbiddenBreakRanges)
|
||||
4. **search**
|
||||
- APP:searchBestLayoutApp(DP+TopK,测量优先)
|
||||
- WIDGET:searchBestLayoutWidget(Beam,默认 APPROX;可选 MEASURE)
|
||||
5. **overflow-fallback**
|
||||
- 当搜索失败或未覆盖到 N:按 overflowMode 执行(ELLIPSIS/CLIP/SYSTEM_DEFAULT)
|
||||
6. **meta 汇总**
|
||||
- breaks(若可得)
|
||||
- scoreTopTerms(debug=true 时)
|
||||
- fallback_type/overflow_type/reason
|
||||
- configVersion
|
||||
|
||||
## 4. 默认值与映射(固定,确定性)
|
||||
|
||||
- `overflowMode`:
|
||||
- APP 默认 `CLIP`
|
||||
- WIDGET 默认 `ELLIPSIS`
|
||||
- `lineMode`:默认 `AUTO`
|
||||
- `configVersion`:默认 `'v1'`(若调用方未传)
|
||||
- WIDGET widthMode:默认 `APPROX`
|
||||
|
||||
## 5. 代码落位(客户端)
|
||||
|
||||
- `client/src/features/textWrap/`
|
||||
- `wrapText.ts`(入口实现)
|
||||
- `types.ts`(对外输入/输出类型)
|
||||
- `index.ts`(统一导出)
|
||||
|
||||
## 6. 测试与回归
|
||||
|
||||
- 将 `golden-tests` 的测试入口从测试 harness 切换为正式 `wrapText()`(期望不变)
|
||||
- 增加 1 个 integration 单测:验证 `SYSTEM_DEFAULT` meta 语义不变
|
||||
|
||||
## 7. 完成定义(DoD)
|
||||
|
||||
- `wrapText()` 可在 APP/WIDGET 两种 context 下运行
|
||||
- 输出 meta 字段可用于 UI 治理与回溯(含 configVersion)
|
||||
- 全量 `npm test` 与 `tsc --noEmit` 通过
|
||||
- overview 更新记录变更文件
|
||||
|
||||
Reference in New Issue
Block a user