• Data Governance Dev's avatar
    feat(web): 数据库类型切换自动套用预设 + 杀 8765 脚本 · 5db40025
    Data Governance Dev authored
    ## db_defaults 三套化
    
    用户反馈:「@db_defaults.yaml 现在这个文件里面由三套数据库配置,
    现在页面要改成切换数据库类型同时也要切换默认IP,端口,账户密码和数据库」
    
    ### 改动
    - web/configs/db_defaults.yaml —— 旧单 dict → 新三键 dict
      (mysql / dameng / oracle 各一套,含 port 字段;文件已在 .gitignore 安全)
    - web/api/routes.py /api/db-defaults —— 返回三套 JSON;
      兼容旧格式单 dict(用 _flat 包裹,前端识别后只填 mysql)
    - web/static/index.html —— 加 dbDefaults ref + DB_FALLBACK_PRESETS 兜底
      + _applyPreset(t);onDbTypeChange 之前只切 port(保留用户自定义),
      现在无条件套用预设全部 6 个字段(host/port/user/password/database/oracle_client_dir);
      loadDbDefaults 先缓存三套再按当前 db_type 套用
    
    ## scripts/kill_web.{sh,bat}
    
    杀掉 web 服务(默认端口 8765,可自定义):
    - kill_web.sh —— Git Bash + Linux/macOS 通用(netstat.exe / lsof 自动分支)
    - kill_web.bat —— Windows 原生 cmd 兼容
    
    退出码:
      0 杀掉占用进程成功 / 端口空闲
      1 端口已空闲(无需处理)
      2 杀进程失败
    
    ## 验证
    - curl /api/db-defaults 返回三套预设(端口 3306/5236/1521)✓
    - kill_web.sh 空闲端口返 1 / 占用端口返 0(实测杀 18999 PID 23160)✓
    - 静态资源 200 ✓
    - JS 结构平衡 ✓
    
    ## 踩坑
    - API 旧格式兼容:YAML 老结构(单 dict 平铺)→ 检测 value 不是 dict 时用 _flat 包裹
    - oracle_client_dir 仅 Oracle 有效,三套配置统一保留 key 占位
    - password 空串语义:'password' in preset 判定(保持与之前一致)
    5db40025
kill_web.sh 2.38 KB