更新换行算法和APP-PUSH

This commit is contained in:
吕新雨
2026-02-10 11:39:33 +08:00
parent f03d36b5e9
commit ee2d9f44ea
105 changed files with 9967 additions and 233 deletions

View File

@@ -0,0 +1,51 @@
# breakpoint-candidates子模块规范
## 子模块名称
breakpoint-candidates候选断点生成与裁剪
## 目标描述
基于 token 序列生成“可控规模、确定性排序”的候选断点集合breakpoints并应用去重、排序与约束过滤确保后续搜索器复杂度可控且跨端一致。
本模块输出的是“断点候选集合”,不负责“组合搜索选最优”。
## 输入/输出定义
### 输入
- `tokens: Token[]`
- `lang: 'TC' | 'EN'`
- `maxLines: number`
- `constraints?: { protectedPhrases?: string[]; forbiddenBreakRanges?: Array<{ start: number; end: number }> }`
- `config: { tcMaxCandidateBreaks: number; tcPunctuations: string[]; balanceRange: number }`
### 输出
- `breakpoints: Array<{ pos: number; kind: 'PUNCT' | 'SPACE' | 'BALANCE' | 'OTHER'; priority: number }>`
- **pos**token 边界索引0..N
- **排序**:按 `pos` 升序(最终输出必须确定性)
- `meta?: { pruned: boolean; originalCount: number; finalCount: number }`
## 验收标准(可验证)
- **EN 口径**
- tokens 仅为 WORD不生成 SPACE token断点仅存在于词间
- 每个词边界产生 `kind=SPACE` 的候选断点(按配置可做裁剪,但必须确定性)
- **TC 口径**
- 标点后断点 `kind=PUNCT` 优先级最高
- 空格后断点 `kind=SPACE` 次之
- BALANCE 断点:围绕理想切分点附近生成少量断点(允许落在短语 span 内,是否可用交给评分惩罚)
- **去重/排序/过滤确定性**
- 同一 `pos` 多来源断点:保留 priority 更高者
- 输出按 `pos` 升序
- `forbiddenBreakRanges` 命中者必定被剔除
- **规模上限生效**
- TC 输出候选断点数不超过 `tcMaxCandidateBreaks`
- 截断策略确定性(按 priority + 距离理想位置等固定规则)
## 依赖与关联
- **依赖**`core-contract`token 与索引语义)、`grapheme-segmentation`TC tokens
- **被依赖**`search-engine-app``search-engine-widget`