v1.0: 夹紧缸模块真实数据替换 + 仓库瘦身

数据 (CLM 气动夹紧缸分类):
- 1 系列 demo -> 11 个官方系列, 6 型号 -> 859 个真实型号
- 参数化升级: 仅缸径 -> 最多 5 维 (缸径/臂位置/臂类型/臂样式/传感器)
- 11 系列各含官方图册附图 (84 张) + datasheet PDF
- 修复: 枚举维度空串必须为合法值 (否则级联过滤后下拉全空)
- 修复: catalog.json 分类 series 数组未更新导致新系列不进包
- 修复: _step 副本后缀归一化错误 (产生假型号)

工具:
- gen-clamp-series.py     数据清洗 (X盘数模 -> CSV/meta/STEP)
- copy-clamp-step.py      8线程并行复制 (网络盘 I/O 优化)
- gen-clamp-manual.py     官方图册 PDF -> 附图
- update-clamp-meta-attach.py / fix-clamp-meta-empty-enum.py

仓库瘦身:
- .gitignore 排除数模(5GB)/.opc(1.2GB)/编译产物/发布产物
- 移出索引: release/ bin产物 STEP数模 .opc 大型PDF 等
- 提交体积 17MB (原 15.97GB)

其他: SelfTest.cs 可解析选型逻辑放宽 (稀疏数据用真实变体回验)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
wangruiguo
2026-09-14 15:24:16 +08:00
parent acbf6f2db0
commit 0584ba67b4
4301 changed files with 3366 additions and 1474787 deletions

View File

@@ -110,11 +110,19 @@ namespace Ounibo.Catalog.Core
}
if (ok)
{
var selAny = new Dictionary<string, object>();
foreach (var p in sAny.parameters)
selAny[p.code] = allowedAny[p.code][0];
var vAny = cfgAny.Resolve(selAny);
check("系列 " + sAny.code + " 可解析出完整选型 (" + (vAny == null ? "null" : vAny.modelCode) + ")", vAny != null);
// 验证"能解析出完整选型":取第一个真实变体的完整参数组合,应能 Resolve 命中。
// (稀疏数据下"各参数取首个允许值"的组合未必存在,故改用真实变体回验)
var firstVariant = (sAny.variants ?? new List<Variant>()).FirstOrDefault();
bool resolvable = false;
string resolvedModel = "null";
if (firstVariant != null && firstVariant.@params != null)
{
var selAny = new Dictionary<string, object>(firstVariant.@params);
var vAny = cfgAny.Resolve(selAny);
resolvable = vAny != null;
resolvedModel = vAny == null ? "null" : vAny.modelCode;
}
check("系列 " + sAny.code + " 可解析出完整选型 (" + resolvedModel + ")", resolvable);
}
}