1.7 KiB
1.7 KiB
search-engine-app(子模块规范)
子模块名称
search-engine-app(APP 搜索器:DP + TopK)
目标描述
在 APP 场景实现多行换行的确定性组合搜索:
- 使用 DP + TopK 生成候选 layout
- 对每个候选应用硬约束过滤
- 调用
scoring-tiebreak计算评分与 tieKey - 保留 TopK 并在结束时选最优
要求性能可控且输出完全确定性。
输入/输出定义
输入
tokens: Token[]breakpoints: Breakpoint[](来自breakpoint-candidates)availableWidth: numbermaxLines: numberlineMode: '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?: ... } }- 若无解:返回可解释的 fallback(由
overflow-fallback统一处理语义)
验收标准(可验证)
- 确定性:同输入(tokens/breakpoints/availableWidth/maxLines/configVersion)必定同输出(breaks 与 lines 完全一致)
- TopK 维护一致:
- K 默认 10(可配置但必须固定)
- 排序:score desc;tieKey 逐项比较
- 去重:同 breaks 序列只保留最高分
- lineMode=FIXED 行为:
- 优先选刚好
maxLines的解;无解时按固定降级链路处理并打点
- 优先选刚好
- 复杂度可控:超长输入触发裁剪/兜底并返回 reason(如
TOO_LONG)
依赖与关联
- 依赖:
core-contract、width-measurement、breakpoint-candidates、scoring-tiebreak、overflow-fallback - 被依赖:
integration、golden-tests