## 版本与环境 - 受影响提交:`2ef0ac0`(当前代码生成分析分支) - 运行时:Windows,Python 3.10+,MCP `db_table_describe` - 数据库:PostgreSQL 12+;无需凭据即可用固定类型字符串复现 - 安装方式:仓库 `.venv` / `PYTHONPATH=src` ## 问题与预期行为 `db_table_describe(include_java_types=true)` 使用 `mcp_tools._get_java_type_mapping()` 解析 PostgreSQL `format_type()` 返回的完整类型名。配置只覆盖了 `TIME`、`TIMESTAMP` 和 `TIMESTAMP_WITH_TIME_ZONE`,未覆盖 `TIME WITHOUT TIME ZONE`、`TIMESTAMP WITHOUT TIME ZONE` 与 `TIMESTAMPTZ` 这些合法的 PostgreSQL 类型别名,因此 MCP 返回 `java_type=Object` 且缺少标准库 import。生成器的 `PostgreSQLDialect` 已能正确映射同一输入,导致 MCP 描述与代码生成上下文不一致。 预期结果:三种别名分别映射为 `LocalTime`、`LocalDateTime`、`OffsetDateTime`,并返回对应 `java.time` import。 ## 最小复现 ```text PYTHONPATH=src python -c "from dbjavagenix.core.models import DatabaseType; from dbjavagenix.database.mcp_tools import _get_java_type_mapping; print(_get_java_type_mapping(DatabaseType.POSTGRESQL, 'timestamp without time zone')); print(_get_java_type_mapping(DatabaseType.POSTGRESQL, 'timestamptz'))" ``` 修复前输出包含 `{'java_type': 'Object', 'imports': []}`。 ## 验收标准 - [ ] `TIME WITHOUT TIME ZONE` 返回 `LocalTime` 与 `java.time.LocalTime`。 - [ ] `TIMESTAMP WITHOUT TIME ZONE` 返回 `LocalDateTime` 与 `java.time.LocalDateTime`。 - [ ] `TIMESTAMPTZ` 返回 `OffsetDateTime` 与 `java.time.OffsetDateTime`。 - [ ] 已有 `UUID`、`JSONB` 和完整时区类型映射保持不变。 - [ ] PostgreSQL MCP 单元测试与完整单元测试通过。 ## 非目标、风险与安全 本 Issue 不重写 MCP 映射架构、不调整 `DialectAdapter` 的 UUID 语义、不连接真实数据库,也不涉及凭据、SQL 或数据迁移。风险仅为配置别名补齐后返回更准确的 Java 类型;可通过回滚关联提交恢复旧行为。
Activity
ZhaoXingPeng commentedon Sep 9, 2026
已由 PR #168 合并并进入 main,当前交付项完成,关闭本 Issue。