Files
mindfulness/spec_kit/Text Wrap/modules/search-engine-app/spec.md
2026-02-10 11:39:33 +08:00

1.7 KiB
Raw Blame History

search-engine-app子模块规范

子模块名称

search-engine-appAPP 搜索器DP + TopK

目标描述

在 APP 场景实现多行换行的确定性组合搜索:

  • 使用 DP + TopK 生成候选 layout
  • 对每个候选应用硬约束过滤
  • 调用 scoring-tiebreak 计算评分与 tieKey
  • 保留 TopK 并在结束时选最优

要求性能可控且输出完全确定性。

输入/输出定义

输入

  • tokens: Token[]
  • breakpoints: Breakpoint[](来自 breakpoint-candidates
  • availableWidth: number
  • maxLines: number
  • lineMode: 'AUTO' | 'FIXED'
  • context: 'APP'
  • measure: { measureWidth?: fn; fontSpec?: any; cache: ... }(来自 width-measurement 的实现)
  • config: { topK: number }

输出

  • bestLayout: { breaks: number[]; lines: string[]; wrappedText: string; meta?: { breaks: number[]; scoreTopTerms?: ... } }
  • 若无解:返回可解释的 fallbackoverflow-fallback 统一处理语义)

验收标准(可验证)

  • 确定性同输入tokens/breakpoints/availableWidth/maxLines/configVersion必定同输出breaks 与 lines 完全一致)
  • TopK 维护一致
    • K 默认 10可配置但必须固定
    • 排序score desctieKey 逐项比较
    • 去重:同 breaks 序列只保留最高分
  • lineMode=FIXED 行为
    • 优先选刚好 maxLines 的解;无解时按固定降级链路处理并打点
  • 复杂度可控:超长输入触发裁剪/兜底并返回 reasonTOO_LONG

依赖与关联

  • 依赖core-contractwidth-measurementbreakpoint-candidatesscoring-tiebreakoverflow-fallback
  • 被依赖integrationgolden-tests