# Black-white-box-Merge vs feat/phase2-review-fixes 分支差异报告 **生成时间:** 2026-08-23 **基准分支:** feat/phase2-review-fixes **对比分支:** Black-white-box-Merge **总计:** 19个文件变更,-3,379行,+358行 --- ## 一、`cobol_testgen/__init__.py` (-1,021行) ### Black-white-box-Merge 删除了以下高级功能: | 功能 | 行数 | 说明 | |------|------|------| | `_coordinate_multi_file_keys()` | ~120行 | 跨文件键值协同 | | `_coordinate_range_matching()` | ~80行 | 金额-区间对齐 | | `_serialize_read_into_records()` | ~60行 | READ INTO 序列化 | | `_inject_merge_input_records()` | ~60行 | MERGE 输入记录注入 | | `_inject_end_of_page_records()` | ~40行 | LINAGE 分页注入 | | `_inject_sort_limit_records()` | ~40行 | SORT 上限注入 | | `_provision_sub_input_files()` | ~50行 | 子程序输入供给 | | `_coordinate_tertiary_fd()` | ~80行 | 多文件照合前置序列 | | `_inject_leave_type_scenarios()` | ~60行 | 休暇種別覆盖 | | `_find_key_pairs_inner()` | ~50行 | キーフィールドペア検出 | | `_inject_c01_coverage_records()` | 保留 | C01覆盖率注入 | ### `main()` 函数变化: - P6-P12 注入步骤被删除 - `scan_all_file_directions()` → `scan_open_statements()`(简化) --- ## 二、`cobol_testgen/to_sql.py` (-668行) ### Black-white-box-Merge 删除了以下高级功能: | 功能 | 说明 | |------|------| | `_scan_between_spans()` | BETWEEN跨度扫描 | | `_restore_between_placeholders()` | BETWEEN占位符还原 | | `_parse_between_operand()` | BETWEEN操作数解析 | | `_parse_between_placeholder()` | BETWEEN占位符解析 | | `_rec_get()` / `_rec_has()` | 记录值获取(兼容flat/嵌套格式) | | `_norm_col()` / `_norm_table()` | 列名/表名规范化 | | `_declared_cols_for()` | 声明列查询(兼容下划线/连字符) | | `_hostvar_root()` | 宿主变量链追溯 | | `_resolve_runtime_hostvar()` | 运行时宿主变量解析 | | `_resolve_where_hostvar()` | WHERE宿主变量解析 | | `_runtime_or_where_hostvar()` | 运行时/WHERE合并解析 | | `_derive_runtime_hostvar()` | 运行时值推导 | | `_between_seed_value()` | BETWEEN种子值计算 | | `_input_pk_field()` | 输入PK字段查找 | | `_insert_collision_row()` | PK碰撞行构建 | | `_dispatch_field_and_sets()` | 事务调度字段分类 | | `_trace_input_root()` | 调度字段根追溯 | | `_classify_record_dispatches()` | 记录调度分类 | ### `build_db_input()` 变化: - INSERT 碰撞行逻辑简化 - DELETE/UPDATE 仅对实际执行的记录建行 - SELECT 种子逻辑简化 --- ## 三、`orchestrator_db.py` (-727行) ### Black-white-box-Merge 删除了以下功能: | 功能 | 说明 | |------|------| | `_merge_schema_columns()` | YAML schema列类型合并 | | `_insert_pk_map()` | PK映射表构建 | | `_deduplicate_r01_pk()` | R01 PK去重 | | `_inject_extra_seed_rows()` | 额外种子行注入 | | `_inject_aggregation_boundaries()` | 聚合边界数据注入 | | `_coordinate_db_rule_matching()` | DB属性区间对齐 | | `_coordinate_seed_numeric_types()` | DB种子值数字化 | | CONNECT补丁 | gixpp CONNECT修复 | | CWD/kin.db复制 | SQLite连接路径修复 | ### `run_scenario()` 变化: - EMP-ID SPACE 清理逻辑简化 - PK去重逻辑简化 - gcov 合并逻辑简化 --- ## 四、`runners/gixsql_runner.py` (-192行) ### Black-white-box-Merge 删除了以下功能: | 功能 | 说明 | |------|------| | `_strip_schema_qualifiers()` | DB2 schema修饰符剥离 | | `_normalize_schema_qualifiers()` | EXEC SQL块内schema规范化 | | `_normalize_current_timestamp()` | CURRENT TIMESTAMP规范化 | | `_patch_sql_identifiers()` | SQL连字符→下划线 | | `_patch_sqlcode_normalize()` | SQLCODE -1555→-803映射 | | `_patch_sqlcode_override()` | SQLCODE=0覆盖 | | COMP-5→COMP | SQLCA字节序修正 | ### CONNECT 处理变化: - `sqlite://localhost/kin` → `sqlite:///C:/Temp/gix/{pid}.db` --- ## 五、其他文件差异 | 文件 | 变更 | 说明 | |------|------|------| | `cond.py` | -108行 | 删除 class condition、复合条件MC/DC | | `core.py` | -158行 | 删除 SEARCH 路径枚举、CALL级联 | | `coverage.py` | -96行 | 删除搜索路径、覆盖合并优化 | | `design.py` | -211行 | 删除 class condition、SEARCH枚举、CALL一致性 | | `design_mcdc.py` | -177行 | 删除 SEARCH MC/DC、复合条件MC/DC | | `pipeline_bridge.py` | -71行 | 删除旧解析器比较逻辑 | | `read.py` | -73行 | 删除 MERGE/SORT方向扫描、PIC N支持 | | `runner.py` | -43行 | 删除 abend 单独执行、命令行参数 | | `file_io.py` | -17行 | COMP字节序大端→小端、COMP-3小数位 | | `flatfile.py` | -17行 | 删除非数字值SPACE回退、sysin RESET模式 | | `grammar.lark` | +2行 | 删除 COMP-4、POINTER | | `output.py` | +5行 | 删除 is_filler 检查 | | `data_merger.py` | +8行 | 合并顺序颠倒(additional→main) | | `config/program_schema.py` | -9行 | 删除 schema 模块 | --- ## 六、本质差异 | 维度 | Black-white-box-Merge | feat/phase2-review-fixes | |------|----------------------|--------------------------| | **设计哲学** | 精简核心,专注白盒+黑盒流程 | 全功能,覆盖所有边界场景 | | **跨文件照合** | 不支持 | 完整支持 | | **MERGE/SORT** | 基础支持 | 完整注入 | | **SEARCH MC/DC** | 不支持 | 完整支持 | | **CLASS condition** | 不支持 | 完整支持 | | **DB种子** | 基础 | 高级(碰撞行、区间对齐、数字化) | | **SQL兼容** | 基础 | DB2→SQLite完整适配 | | **文件布局** | 基础COMP/COMP-3 | 大端COMP、小数位精确 | --- ## 七、恢复建议 ### 从 feat/phase2-review-fixes 恢复到 Black-white-box-Merge 的功能: | 优先级 | 功能 | 恢复复杂度 | |--------|------|-----------| | P0 | SQLCA COMP-5→COMP 字节序 | 低(直接替换) | | P0 | DB2 schema修饰符剥离 | 低(正则替换) | | P0 | SQL连字符→下划线 | 低(正则替换) | | P0 | SQLCODE -1555→-803映射 | 低(正则替换) | | P1 | BETWEEN跨度扫描 | 中(需适配简化后的build_db_input) | | P1 | 跨文件键值协同 | 高(依赖file_sec和open_dir) | | P1 | MERGE输入记录注入 | 高(依赖file_sec) | | P2 | SEARCH MC/DC | 高(依赖cond_tree) | | P2 | CLASS condition | 高(依赖cond.py) | | P2 | 子程序输入供给 | 中(独立模块) | | P3 | CONNECT补丁 | 低(直接替换) | | P3 | CWD/kin.db复制 | 低(直接替换) | --- ## 八、注意事项 1. **Black-white-box-Merge 的新功能**:`run.py` 全流程入口、`black-box-data-create/` 黑盒LLM模块是独立新增,不受此差异影响 2. **测试文件差异**:Black-white-box-Merge 删除了16个测试文件,需确认是否恢复 3. **YAML schema差异**:Black-white-box-Merge 删除了3个YAML文件(已恢复) 4. **设计书差异**:Black-white-box-Merge 删除了20+个设计书(在 `jcl-cobol-data-create/` 中)