feat(门禁): 硬件语料纳入扫描——位号不进编号也不进比例分母

- check_ids.py 扫描循环:位号([RCDJXUT][0-9]{1,3} 无连字符)在 refs_total 之前 continue,
  既不产生结论也不灌分母;add() 里的同一道判定保留作兜底
- 注册表 excluded_paths 移除 docs/硬件平台/(docs/芯片手册/ 仍排除)
- 首次纳入暴露 28 类先前不可见的存量 → 按规矩逐条写 reason 入台账(**不重打快照**,
  台账只增带理由的条目);错误级 626 → 661,可判定 82.84%(基线 82.6 仍守住)
- 遗留噪声已在 designator_rule 记明:引脚名 PB12-15 / PG0-15 / DB0-15(两字母+数字+区间)
  不是编号,但位号规则不覆盖这种形状,先记账、待加 pin-name 类型规则后清除
- 验证:--strict 通过(无未登记的台账外新账);未改 C/H 不需 @build
This commit is contained in:
2026-10-22 06:43:58 +08:00
parent 11c82c0d99
commit 125140a3c6
3 changed files with 206 additions and 2 deletions
+9
View File
@@ -257,6 +257,15 @@ class Checker(object):
if (literal, start) in seen_here: if (literal, start) in seen_here:
continue continue
seen_here.add((literal, start)) seen_here.add((literal, start))
# 位号:硬件语料里的 R/C/D/J/X/U/T + 数字既不算编号、**也不进比例分母**
# (约 4200 处位号若进 refs_total,会把分母灌水、掩盖真实变化)
_rx = getattr(type(self), "_desig_rx", None)
if _rx is None:
_rx = type(self)._desig_rx = re.compile(r"[RCDJXUT][0-9]{1,3}")
type(self)._desig_paths = ("docs/硬件平台/", "docs/芯片手册/")
if rel.startswith(type(self)._desig_paths) and _rx.fullmatch(literal):
self.stats["designator_skipped"] = self.stats.get("designator_skipped", 0) + 1
continue
self.stats["refs_total"] += 1 self.stats["refs_total"] += 1
fams = [f for f in self.families if f["_full"].match(literal)] fams = [f for f in self.families if f["_full"].match(literal)]
if not fams: if not fams:
+196
View File
@@ -1756,6 +1756,202 @@
"code": 2, "code": 2,
"literal": "T1", "literal": "T1",
"count": 7 "count": 7
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "PB12-15",
"count": 3,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/ADC通道映射说明.md",
"code": 6,
"literal": "P1-5",
"count": 2,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "PG0-15",
"count": 2,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 5,
"literal": "A-9",
"count": 2,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 3,
"literal": "A-9",
"count": 2,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "A-11",
"count": 2,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "FOC-817",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "DB0-15",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "OS0-2",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "PF13-15",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "KEY1-3",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 3,
"literal": "A-2",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 3,
"literal": "A-3",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 3,
"literal": "A-6",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 5,
"literal": "A-8",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 3,
"literal": "A-8",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "A-10",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-1",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-2",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-3",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-4",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-5",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-6",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-7",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-8",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-9",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.0_网表详细分析报告.md",
"code": 1,
"literal": "C-10",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
},
{
"file": "docs/硬件平台/V0.1_网表详细分析报告.md",
"code": 1,
"literal": "PB12-15",
"count": 1,
"reason": "硬件语料(docs/硬件平台/)2026-10-22 首次纳入扫描:这是**先前不可见的存量**,不是本批新引入的债。位号(R/C/D/J/X/U/T+数字)已由类型识别挡掉且不进分母;剩下的按族归位(专项条目 / IEEE 记号 / 报告自有编号缺紧邻文档名)后续分批处理。"
} }
] ]
} }
+1 -2
View File
@@ -34,7 +34,6 @@
"Drivers/CMSIS/", "Drivers/CMSIS/",
"Drivers/STM32F4xx_HAL_Driver/", "Drivers/STM32F4xx_HAL_Driver/",
"docs/芯片手册/", "docs/芯片手册/",
"docs/硬件平台/",
"docs/内存管理/data/", "docs/内存管理/data/",
"docs/images/", "docs/images/",
"MDK-ARM/RTE/", "MDK-ARM/RTE/",
@@ -1613,5 +1612,5 @@
"owner_docs_exclude": [ "owner_docs_exclude": [
"docs/测试说明/测试文档模板规范.md" "docs/测试说明/测试文档模板规范.md"
], ],
"designator_rule": "硬件语料位号识别:docs/硬件平台/ 与 docs/芯片手册/ 里匹配 ^[RCDJXUT][0-9]{1,3}$(无连字符)的字面量判为**位号**,不产生任何编号结论;不含 B(V0.0 网表报告的 B1 是真专项条目),带连字符的 D-7/N-18/TC-206 不受影响。机制在 check_ids.py 的 add() 里落地(统计键 designator_skipped)。**本目录仍未纳入扫描语料**:纳入前必须先把位号从可判定比例的 refs_total 里减掉,否则约 4200 处位号会把比例分母灌水、掩盖真实变化。" "designator_rule": "硬件语料位号识别:docs/硬件平台/ 与 docs/芯片手册/ 里匹配 ^[RCDJXUT][0-9]{1,3}$(无连字符)的字面量判为**位号**,不产生任何编号结论;不含 B(V0.0 网表报告的 B1 是真专项条目),带连字符的 D-7/N-18/TC-206 不受影响。机制在 check_ids.py 的 add() 里落地(统计键 designator_skipped)。**本目录仍未纳入扫描语料**:纳入前必须先把位号从可判定比例的 refs_total 里减掉,否则约 4200 处位号会把比例分母灌水、掩盖真实变化。 【遗留噪声类】V0.0 网表报告里的引脚名 PB12-15 / PG0-15 / DB0-15(两字母+数字+区间)不是编号,位号规则尚未覆盖这种形状,暂以台账 reason 记账,待加 pin-name 类型规则后清除。"
} }