版本与环境
- 受影响路径:database/codegen_tools.py 的 CodegenAnalyzer._calculate_imports_needed()。
- 运行时:Python 3.10+,模板上下文分析和 MCP 代码生成分析响应。
- 数据库:固定 PostgreSQL/MySQL/SQLite 类型字符串即可复现,不需要真实连接。
- 安装方式:仓库虚拟环境,PYTHONPATH=src。
问题与预期行为
CodegenAnalyzer 当前自行遍历 Java 类型,只添加 BigDecimal、LocalDate、LocalTime 和 LocalDateTime 四种导入;TemplateContextBuilder 已通过 DialectAdapter 支持 TIMESTAMPTZ -> OffsetDateTime、Instant、UUID 和 BigInteger 等类型。同一张表会因此出现分析响应 imports_needed 不完整、实际模板上下文却已有 import 的不一致。
预期行为:分析结果与模板上下文复用同一方言映射和导入表,未知或基础类型不产生额外导入,结果稳定去重排序。
最小复现
使用包含 PostgreSQL TIMESTAMPTZ、UUID 和 NUMERIC 列的固定 ColumnInfo 集合,分别调用分析器和 TemplateContextBuilder。修复前两条路径的 imports 不一致;预期 TIMESTAMPTZ 返回 java.time.OffsetDateTime,且两条路径的标准 imports 集合一致。
验收标准
非目标、风险与安全
本 Issue 不复制新的类型表、不改变 PostgreSQL UUID 的既有语义、不修改模板文件或真实数据库声明,不涉及 SQL、凭据或性能承诺。风险限于分析响应中的导入集合变得更准确;关联提交可单独回滚。
版本与环境
问题与预期行为
CodegenAnalyzer 当前自行遍历 Java 类型,只添加 BigDecimal、LocalDate、LocalTime 和 LocalDateTime 四种导入;TemplateContextBuilder 已通过 DialectAdapter 支持 TIMESTAMPTZ -> OffsetDateTime、Instant、UUID 和 BigInteger 等类型。同一张表会因此出现分析响应 imports_needed 不完整、实际模板上下文却已有 import 的不一致。
预期行为:分析结果与模板上下文复用同一方言映射和导入表,未知或基础类型不产生额外导入,结果稳定去重排序。
最小复现
使用包含 PostgreSQL TIMESTAMPTZ、UUID 和 NUMERIC 列的固定 ColumnInfo 集合,分别调用分析器和 TemplateContextBuilder。修复前两条路径的 imports 不一致;预期 TIMESTAMPTZ 返回 java.time.OffsetDateTime,且两条路径的标准 imports 集合一致。
验收标准
非目标、风险与安全
本 Issue 不复制新的类型表、不改变 PostgreSQL UUID 的既有语义、不修改模板文件或真实数据库声明,不涉及 SQL、凭据或性能承诺。风险限于分析响应中的导入集合变得更准确;关联提交可单独回滚。