- 归档并收敛 R2 历史留痕至 docs/实现回顾/R2改造历史留痕.md,删除已退出生命周期的改造计划、旧文件处置及验证过程文档 - 现行测试用例身份收敛至 tests/用例清单.json(1358条扁平登记),适配 conftest、索引维护与测试执行验证 - 清理源码、配置、SQL迁移头、测试夹具及规则文档中的 Wxx 实施分期标签与过时过程描述 - 同步重新打包构建资源清单,通过全量离线测试、模块边界、类型检查与索引双向强核验
126 lines
3.7 KiB
JSON
126 lines
3.7 KiB
JSON
{
|
||
"schema_version": "muse-fixture-chinese-prose-v1",
|
||
"来源": "合成样例;无真实作品内容",
|
||
"合同": "docs/系统架构/新版设计/接口契约/正文结构与中文选区.md",
|
||
"位置语义": "start/end 按 Unicode 码点、左闭右开区间计数",
|
||
"samples": [
|
||
{
|
||
"sample_id": "zh-combining-emoji",
|
||
"保护点": "组合字符(e+U+0301)、肤色修饰 emoji、ZWJ 序列不被规范化",
|
||
"paragraphs": [
|
||
"他写下最后一个字, café́ 的灯光下,念作「卡非」。🧑🏽 点了点头。"
|
||
],
|
||
"preserved_expectations": [
|
||
"段内包含字符 e 与组合分音符 U+0301 分离存储,不得合并为 é",
|
||
"emoji 家族/肤色序列按原码点序列保留",
|
||
"全角引号「」与全角标点原样保留"
|
||
],
|
||
"codepoint_lengths": [
|
||
37
|
||
],
|
||
"selections": [
|
||
{
|
||
"paragraph_index": 0,
|
||
"start": 10,
|
||
"end": 15,
|
||
"expected_text": "café́"
|
||
},
|
||
{
|
||
"paragraph_index": 0,
|
||
"start": 28,
|
||
"end": 31,
|
||
"expected_text": "🧑🏽"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"sample_id": "zh-blank-lines",
|
||
"保护点": "连续空行、段首全角空格、行尾空白在导入/保存/导出中保持",
|
||
"paragraphs": [
|
||
"第一段结束。",
|
||
"",
|
||
"",
|
||
" 第二段有全角空格开头。",
|
||
"第三段。"
|
||
],
|
||
"preserved_expectations": [
|
||
"空段落数量与位置不变(第 2、3 段为空段落)",
|
||
"段首全角空格 U+3000 不被剥离"
|
||
],
|
||
"codepoint_lengths": null
|
||
},
|
||
{
|
||
"sample_id": "zh-duplicate-sentence",
|
||
"保护点": "重复片段不能按任意首次命中替换",
|
||
"paragraphs": [
|
||
"他把剑收回鞘中。风停了。他把剑收回鞘中,转身离开。"
|
||
],
|
||
"preserved_expectations": [
|
||
"第二次出现的「他把剑收回鞘中」不因对第一次的替换而改变"
|
||
],
|
||
"duplicate_spans": [
|
||
{
|
||
"paragraph_index": 0,
|
||
"start": 0,
|
||
"end": 7,
|
||
"expected_text": "他把剑收回鞘中"
|
||
},
|
||
{
|
||
"paragraph_index": 0,
|
||
"start": 12,
|
||
"end": 24,
|
||
"expected_text": "他把剑收回鞘中,转身离开"
|
||
}
|
||
],
|
||
"selections": [
|
||
{
|
||
"paragraph_index": 0,
|
||
"start": 8,
|
||
"end": 11,
|
||
"expected_text": "风停了"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"sample_id": "zh-cross-paragraph-selection",
|
||
"保护点": "跨段选区显式表达受影响段落,不能折叠为整章偏移",
|
||
"paragraphs": [
|
||
"这句话结束于第一段末尾,",
|
||
"第二段从这里开始。"
|
||
],
|
||
"cross_selection": {
|
||
"from": {
|
||
"paragraph_index": 0,
|
||
"start": 9,
|
||
"end": 12
|
||
},
|
||
"to": {
|
||
"paragraph_index": 1,
|
||
"start": 0,
|
||
"end": 4
|
||
},
|
||
"expected_from_text": "末尾,",
|
||
"expected_to_text": "第二段从"
|
||
}
|
||
},
|
||
{
|
||
"sample_id": "zh-fullwidth-variants",
|
||
"保护点": "全角标点、破折号、兼容异体字不被自动规范化",
|
||
"paragraphs": [
|
||
"『你确定?』她问——用的是「旧式」引号,和一个 炙 类兼容异体字。"
|
||
],
|
||
"preserved_expectations": [
|
||
"『』「」—— 及兼容异体字 U+F9FB 原样保留",
|
||
"正文规范化必须是显式编辑操作,不是保存副作用"
|
||
],
|
||
"selections": [
|
||
{
|
||
"paragraph_index": 0,
|
||
"start": 0,
|
||
"end": 6,
|
||
"expected_text": "『你确定?』"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
} |