🐛 fix(codegen): 规范无前缀模板输出路径 - #166
Merged
ZhaoXingPeng merged 2 commits intoSep 9, 2026
Merged
Conversation
Owner
Author
实现完成(2026-09-09)当前结论Issue #165 已实现并推送。旧 JavaCodeGenerator 的空 变更与设计取舍
验证与证据
兼容性与下一步
|
Owner
Author
验证完成(2026-09-09)当前结论路径回归和完整单元测试均已完成。测试证明空后缀和前缀后缀两种输出路径都稳定,实际文件写盘结果与返回值一致;没有观察到模板内容或既有类别注册回归。 变更与设计取舍
验证与证据
兼容性与下一步
|
This was referenced Sep 8, 2026
* 🐛 fix(codegen): 统一分析结果与模板导入映射 * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 (#170) * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 * 🐛 fix(codegen): 补齐自增主键模板上下文标记 (#172) * 🐛 fix(codegen): 补齐自增主键模板上下文标记 * 🐛 fix(generator): 修正遗留实体上下文自增标志 (#174) * 🐛 fix(generator): 修正遗留实体上下文自增标志 * 🐛 fix(generator): 保留 Java 属性名内部大小写 (#176) * 🐛 fix(generator): 保留 Java 属性名内部大小写 * 🐛 fix(template): 仅为自增主键启用 generated keys (#178) * 🐛 fix(template): 仅为自增主键启用 generated keys * 🐛 fix(codegen): 统一主键列表与列上下文 (#180) * 🐛 fix(codegen): 统一主键列表与列上下文 * 🐛 fix(mcp): 统一描述与代码生成类型映射 (#182) * 🐛 fix(mcp): 统一描述与代码生成类型映射 * 🐛 fix(codegen): 统一旧入口方言表名发现 (#184) * 🐛 fix(codegen): 统一旧入口方言表名发现 * ♻️ refactor(codegen): 复用统一表名元数据合同 (#186) * ♻️ refactor(codegen): 复用统一表名元数据合同 * 🐛 fix(codegen): 补齐批量分析表名上下文 (#188) * 🐛 fix(codegen): 补齐批量分析表名上下文 * 🐛 fix(database): 持久化 SQLite execute_query 写入 (#190) * 🐛 fix(database): 持久化 SQLite execute_query 写入 * 🐛 fix(governance): 对齐工具注册表数据库能力 (#192) * 🐛 fix(governance): 对齐工具注册表数据库能力 * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 (#194) * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 (#196) * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 (#198) * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 * 📚 docs(governance): 固化 GitHub 元数据正文门禁 (#200) * 📚 docs(governance): 固化 GitHub 元数据正文门禁 * 🐛 fix(database): 回滚失败 SQLite 查询事务 (#202) * 🐛 fix(database): 回滚失败 SQLite 查询事务 * 🐛 fix(schema): 规范图算法重复表输入 (#204) * 🐛 fix(schema): 规范图算法重复表输入 * 🐛 fix(dependencies): 隔离版本分析状态 (#206) * 🐛 fix(dependencies): 隔离版本分析状态 * 🐛 fix(cli): 统一解析 MCP 响应 (#208) * 🐛 fix(cli): 统一解析 MCP 响应 * ✨ feat(connection): 增加 MCP 连接释放工具 (#210) * ✨ feat(connection): 增加 MCP 连接释放工具 * ⚡ perf(mcp): 隔离同步数据库调用与事件循环 (#212)
ZhaoXingPeng
added a commit
that referenced
this pull request
Sep 9, 2026
* 🐛 fix(codegen): 规范无前缀模板输出路径 * 🐛 fix(codegen): 统一分析结果与模板导入映射 (#168) * 🐛 fix(codegen): 统一分析结果与模板导入映射 * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 (#170) * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 * 🐛 fix(codegen): 补齐自增主键模板上下文标记 (#172) * 🐛 fix(codegen): 补齐自增主键模板上下文标记 * 🐛 fix(generator): 修正遗留实体上下文自增标志 (#174) * 🐛 fix(generator): 修正遗留实体上下文自增标志 * 🐛 fix(generator): 保留 Java 属性名内部大小写 (#176) * 🐛 fix(generator): 保留 Java 属性名内部大小写 * 🐛 fix(template): 仅为自增主键启用 generated keys (#178) * 🐛 fix(template): 仅为自增主键启用 generated keys * 🐛 fix(codegen): 统一主键列表与列上下文 (#180) * 🐛 fix(codegen): 统一主键列表与列上下文 * 🐛 fix(mcp): 统一描述与代码生成类型映射 (#182) * 🐛 fix(mcp): 统一描述与代码生成类型映射 * 🐛 fix(codegen): 统一旧入口方言表名发现 (#184) * 🐛 fix(codegen): 统一旧入口方言表名发现 * ♻️ refactor(codegen): 复用统一表名元数据合同 (#186) * ♻️ refactor(codegen): 复用统一表名元数据合同 * 🐛 fix(codegen): 补齐批量分析表名上下文 (#188) * 🐛 fix(codegen): 补齐批量分析表名上下文 * 🐛 fix(database): 持久化 SQLite execute_query 写入 (#190) * 🐛 fix(database): 持久化 SQLite execute_query 写入 * 🐛 fix(governance): 对齐工具注册表数据库能力 (#192) * 🐛 fix(governance): 对齐工具注册表数据库能力 * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 (#194) * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 (#196) * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 (#198) * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 * 📚 docs(governance): 固化 GitHub 元数据正文门禁 (#200) * 📚 docs(governance): 固化 GitHub 元数据正文门禁 * 🐛 fix(database): 回滚失败 SQLite 查询事务 (#202) * 🐛 fix(database): 回滚失败 SQLite 查询事务 * 🐛 fix(schema): 规范图算法重复表输入 (#204) * 🐛 fix(schema): 规范图算法重复表输入 * 🐛 fix(dependencies): 隔离版本分析状态 (#206) * 🐛 fix(dependencies): 隔离版本分析状态 * 🐛 fix(cli): 统一解析 MCP 响应 (#208) * 🐛 fix(cli): 统一解析 MCP 响应 * ✨ feat(connection): 增加 MCP 连接释放工具 (#210) * ✨ feat(connection): 增加 MCP 连接释放工具 * ⚡ perf(mcp): 隔离同步数据库调用与事件循环 (#212)
ZhaoXingPeng
added a commit
that referenced
this pull request
Sep 9, 2026
* 🐛 fix(mcp): 收口全部 MCP 响应 JSON 序列化 * 🐛 fix(codegen): 规范无前缀模板输出路径 (#166) * 🐛 fix(codegen): 规范无前缀模板输出路径 * 🐛 fix(codegen): 统一分析结果与模板导入映射 (#168) * 🐛 fix(codegen): 统一分析结果与模板导入映射 * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 (#170) * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 * 🐛 fix(codegen): 补齐自增主键模板上下文标记 (#172) * 🐛 fix(codegen): 补齐自增主键模板上下文标记 * 🐛 fix(generator): 修正遗留实体上下文自增标志 (#174) * 🐛 fix(generator): 修正遗留实体上下文自增标志 * 🐛 fix(generator): 保留 Java 属性名内部大小写 (#176) * 🐛 fix(generator): 保留 Java 属性名内部大小写 * 🐛 fix(template): 仅为自增主键启用 generated keys (#178) * 🐛 fix(template): 仅为自增主键启用 generated keys * 🐛 fix(codegen): 统一主键列表与列上下文 (#180) * 🐛 fix(codegen): 统一主键列表与列上下文 * 🐛 fix(mcp): 统一描述与代码生成类型映射 (#182) * 🐛 fix(mcp): 统一描述与代码生成类型映射 * 🐛 fix(codegen): 统一旧入口方言表名发现 (#184) * 🐛 fix(codegen): 统一旧入口方言表名发现 * ♻️ refactor(codegen): 复用统一表名元数据合同 (#186) * ♻️ refactor(codegen): 复用统一表名元数据合同 * 🐛 fix(codegen): 补齐批量分析表名上下文 (#188) * 🐛 fix(codegen): 补齐批量分析表名上下文 * 🐛 fix(database): 持久化 SQLite execute_query 写入 (#190) * 🐛 fix(database): 持久化 SQLite execute_query 写入 * 🐛 fix(governance): 对齐工具注册表数据库能力 (#192) * 🐛 fix(governance): 对齐工具注册表数据库能力 * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 (#194) * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 (#196) * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 (#198) * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 * 📚 docs(governance): 固化 GitHub 元数据正文门禁 (#200) * 📚 docs(governance): 固化 GitHub 元数据正文门禁 * 🐛 fix(database): 回滚失败 SQLite 查询事务 (#202) * 🐛 fix(database): 回滚失败 SQLite 查询事务 * 🐛 fix(schema): 规范图算法重复表输入 (#204) * 🐛 fix(schema): 规范图算法重复表输入 * 🐛 fix(dependencies): 隔离版本分析状态 (#206) * 🐛 fix(dependencies): 隔离版本分析状态 * 🐛 fix(cli): 统一解析 MCP 响应 (#208) * 🐛 fix(cli): 统一解析 MCP 响应 * ✨ feat(connection): 增加 MCP 连接释放工具 (#210) * ✨ feat(connection): 增加 MCP 连接释放工具 * ⚡ perf(mcp): 隔离同步数据库调用与事件循环 (#212)
5 tasks
ZhaoXingPeng
added a commit
that referenced
this pull request
Sep 9, 2026
* 🐛 fix(mcp): 收口全部 MCP 响应 JSON 序列化 * 🐛 fix(codegen): 规范无前缀模板输出路径 (#166) * 🐛 fix(codegen): 规范无前缀模板输出路径 * 🐛 fix(codegen): 统一分析结果与模板导入映射 (#168) * 🐛 fix(codegen): 统一分析结果与模板导入映射 * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 (#170) * 🐛 fix(mcp): 补齐 PostgreSQL 时间类型别名映射 * 🐛 fix(codegen): 补齐自增主键模板上下文标记 (#172) * 🐛 fix(codegen): 补齐自增主键模板上下文标记 * 🐛 fix(generator): 修正遗留实体上下文自增标志 (#174) * 🐛 fix(generator): 修正遗留实体上下文自增标志 * 🐛 fix(generator): 保留 Java 属性名内部大小写 (#176) * 🐛 fix(generator): 保留 Java 属性名内部大小写 * 🐛 fix(template): 仅为自增主键启用 generated keys (#178) * 🐛 fix(template): 仅为自增主键启用 generated keys * 🐛 fix(codegen): 统一主键列表与列上下文 (#180) * 🐛 fix(codegen): 统一主键列表与列上下文 * 🐛 fix(mcp): 统一描述与代码生成类型映射 (#182) * 🐛 fix(mcp): 统一描述与代码生成类型映射 * 🐛 fix(codegen): 统一旧入口方言表名发现 (#184) * 🐛 fix(codegen): 统一旧入口方言表名发现 * ♻️ refactor(codegen): 复用统一表名元数据合同 (#186) * ♻️ refactor(codegen): 复用统一表名元数据合同 * 🐛 fix(codegen): 补齐批量分析表名上下文 (#188) * 🐛 fix(codegen): 补齐批量分析表名上下文 * 🐛 fix(database): 持久化 SQLite execute_query 写入 (#190) * 🐛 fix(database): 持久化 SQLite execute_query 写入 * 🐛 fix(governance): 对齐工具注册表数据库能力 (#192) * 🐛 fix(governance): 对齐工具注册表数据库能力 * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 (#194) * 🔒 security(mcp-apps): 收紧代码 diff 路径边界 * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 (#196) * 🐛 fix(codegen): 对齐生成文件写入统计与结果状态 * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 (#198) * ✨ feat(codegen): 统一 DTO 与 VO 生成选项合同 * 📚 docs(governance): 固化 GitHub 元数据正文门禁 (#200) * 📚 docs(governance): 固化 GitHub 元数据正文门禁 * 🐛 fix(database): 回滚失败 SQLite 查询事务 (#202) * 🐛 fix(database): 回滚失败 SQLite 查询事务 * 🐛 fix(schema): 规范图算法重复表输入 (#204) * 🐛 fix(schema): 规范图算法重复表输入 * 🐛 fix(dependencies): 隔离版本分析状态 (#206) * 🐛 fix(dependencies): 隔离版本分析状态 * 🐛 fix(cli): 统一解析 MCP 响应 (#208) * 🐛 fix(cli): 统一解析 MCP 响应 * ✨ feat(connection): 增加 MCP 连接释放工具 (#210) * ✨ feat(connection): 增加 MCP 连接释放工具 * ⚡ perf(mcp): 隔离同步数据库调用与事件循环 (#212)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联 Issue
Closes #165
背景(Situation)
TemplateConfigManager.get_output_path_mapping()使用entity/{packageSuffix}/{className}.java等模板。旧的JavaCodeGenerator._get_output_path()在packageSuffix为空时直接格式化,得到entity//Account.java、dao//AccountDao.java等双分隔符路径。Windows 当前能容忍该路径,但它会污染返回文件路径、日志和下游脚本;跨平台路径比较也可能出现不一致。任务(Task)
在不改变模板内容、包声明、文件名、输出目录边界或原子 MCP 路径合同的前提下,规范旧 Java 生成器的相对输出路径:空后缀不产生空目录段,有前缀时保留独立包目录。
行动(Action)
60b1f2aJavaCodeGenerator._get_output_path()的占位符格式化后调用标准库os.path.normpath,把归一化限定在静态模板相对路径边界。sys_*前缀和实际写盘返回路径回归测试。_resolve_codegen_output_path,避免扩大公共 MCP 行为;不新增 ADR,这是局部路径实现修复。验证(Verification)
环境:Windows,仓库
.venv,Python 3.12.12,pytest 9.1.1,Ruff 来自.venv。实验与证据(Evidence)
Account表输入、packageSuffix="":归一化前可复现out\\entity//Account.java,当前返回相对路径entity/Account.java。sys_account与sys_role表输入:前缀分析得到system,当前返回entity/system/SysAccount.java,没有丢失包层级。generate_from_table(..., include_dto_vo=False)实际写盘后,返回路径相对输出目录为entity/Account.java,文件存在且仍包含class Account与private Long id。兼容性、风险与回滚
os.path.normpath遵循宿主平台路径规则;模板映射是仓库内静态相对路径,不接受用户提供的任意路径片段。60b1f2a即可;不涉及数据库、配置迁移或生成物。fix/163-mcp-json-boundary,待前置 PR 🐛 fix(mcp): 统一跨工具驱动值 JSON 序列化 #162、🐛 fix(mcp): 收口全部 MCP 响应 JSON 序列化 #164 按顺序合并后再以main为最终基线检查。后续(Next)
合并前只对最终 HEAD 检查一次 required checks;若未来新增模板映射,继续通过路径回归测试验证空段、前缀和跨平台行为。