• Data Governance Dev's avatar
    feat(web): 三数据库适配(MySQL/达梦/Oracle)+ 连接默认值独立配置 · 9646cd1a
    Data Governance Dev authored
    【Oracle 适配 — 端到端接入】
    - web/core/db_adapter.py
      · 新增 to_oracle_kwargs(),oracledb 1.4.x 关键字映射
      · _select_driver() 新增 oracle 分支,未安装 oracledb 时给中文友好报错
      · _ensure_oracle_client() 自动检测 Instant Client,老 Oracle 切 thick 模式
      · DBConfig.oracle_client_dir 字段(显式 lib_dir)
      · TEXT_TYPES 补 Oracle 类型(nclob / long)
    - web/sql/info_schema/list_columns.oracle.sql + list_tables.oracle.sql
      · 新增 Oracle 方言的字典查询模板(ALL_TAB_COLUMNS / ALL_TABLES)
      · 表注释 LEFT JOIN ALL_TAB_COMMENTS(同达梦结构)
    - web/sql/standards/{sample_field_groups,sample_field_groups_single,
      sample_field_pairs,sample_field_pairs_two_text}.sql
      · \`\${col}\` → \${col | quote} 跨方言重构,加新数据库零 SQL 改动
    - web/sql/loader.py:dialect 白名单加 "oracle"
    - web/requirements.txt:锁定 oracledb>=1.4.2,<2.0(兼容 Oracle 11.2)
    - web/start.py:start 脚本新增 oracledb / dmPython 可选组件检测
    - web/app.py / web/core/__init__.py / web/core/step_impl/__init__.py /
      web/core/models.py / web/configs/defaults.yaml / web/README.md
      · 描述/注释/枚举更新为「MySQL / 达梦 / Oracle」
      · models.ConnectRequest 加 oracle_client_dir 字段
      · README 加 Oracle 行 + 三端口映射说明
    
    【达梦适配 — 跑通实测】
    - web/core/db_adapter.py
      · to_dm_kwargs() 改用 server= 关键字(不是 host=),删 dmPython 不支持的
        schema / charset / connect_timeout 参数(C 扩展传错会 SystemError 吞真实异常)
      · _rows_as_dicts() 统一 PyMySQL Dict / tuple 两种行格式
      · fetchall / fetchone 从 cur.description 取列名兜底
      · dmPython SystemError 增强日志(提示真实原因 + 给排查脚本路径)
    - web/sql/info_schema/list_columns.dameng.sql
      · 列注释 LEFT JOIN ALL_COL_COMMENTS(修 [CODE:-2207] C.COMMENTS)
    - web/sql/info_schema/list_tables.dameng.sql
      · BYTES → NULL(达梦 ALL_TABLES 无此列)
      · COMMENTS → LEFT JOIN ALL_TAB_COMMENTS(达梦 ALL_TABLES 无此列)
      · CREATED / LAST_DDL_TIME → NULL(达梦 ALL_TABLES 无时间戳)
        真要看时间戳得 LEFT JOIN ALL_OBJECTS,按 OBJECT_TYPE='TABLE' 过滤
    
    【UI 改进】
    - web/static/index.html
      · 数据库类型三选项(MySQL / 达梦 / Oracle)
      · onDbTypeChange 端口切换改用 DB_DEFAULT_PORTS 映射表
        (mysql:3306 / dameng:5236 / oracle:1521),加守卫保留用户自定义端口
      · loadDbDefaults() 启动时从 /api/db-defaults 读连接默认值填表单
      · charset 下拉新增 al32utf8 / zhs16gbk(Oracle NLS 字符集)
      · Oracle radio 暂未实装完成,先注释隐藏(后端代码保留,放开零成本)
    
    【连接默认值独立配置】
    - web/configs/db_defaults.yaml(新增,.gitignore 排除,存真实凭据)
    - web/api/routes.py:新增 GET /api/db-defaults 端点
    - .gitignore:补 web/configs/db_defaults.yaml 防止真实凭据误提交
    
    【诊断与日志】
    - scripts/_probe_dm.py:达梦连接独立诊断工具(C 扩展吞异常时排查用)
    - docs/WORKLOG.md:本次任务完整工作记录(含三库字典表差异表)
    
    【未提交】
    - web/configs/db_defaults.yaml(真实密码,gitignore 排除)
    - scripts/_tmp_build_violations_md.py(一次性调试脚本,硬编码绝对路径)
    - data_dictionary/standard_fields_violations_report.md(生成报告,非源码)
    9646cd1a
defaults.yaml 803 Bytes