## 版本与环境 - 受影响路径: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 集合一致。 ## 验收标准 - [ ] _calculate_imports_needed() 与 TemplateContextBuilder 对同一列集合返回相同标准 Java imports。 - [ ] PostgreSQL TIMESTAMPTZ 返回 OffsetDateTime,现有 MySQL/SQLite 导入行为保持不变。 - [ ] imports 去重并稳定排序,未知或基础类型不增加导入。 - [ ] 返回字段、排序、数据库类型参数和未知类型语义保持兼容。 - [ ] 相关单元测试、Ruff、格式检查和 git diff --check 通过。 ## 非目标、风险与安全 本 Issue 不复制新的类型表、不改变 PostgreSQL UUID 的既有语义、不修改模板文件或真实数据库声明,不涉及 SQL、凭据或性能承诺。风险限于分析响应中的导入集合变得更准确;关联提交可单独回滚。
Activity
ZhaoXingPeng commentedon Sep 9, 2026
已由 PR #166 合并并进入 main,当前交付项完成,关闭本 Issue。