64bbe53e71
文档一直写着「地址来自 scripts/data/config.json」,但 config.py 读 URL 只看环境变量与内置默认, 根本不读这个文件;本地那份还是改造前的旧文件,三个 URL 键是示例占位假值,还带着早已删除的 consumable_storage / attachment_dir。修法是让文档变成真的: - 优先级:环境变量 > config.json > src/config.py 内置默认;值统一 strip;坏 JSON 或缺文件不抛,退回默认并告警 - 含 your- 的占位值按未配置处理并 WARNING:优先级一改这些假地址就会立刻生效并把登录打挂,这条守卫 是本改动自身的安全带(老文件实测:三条 WARNING 后回落到内置默认,登录不受影响) - 凭据只从文件读(宿主清洗子进程的敏感环境变量,靠 env 传密码不可靠);新增 safe_config() 作为唯一 可进日志的视图,load_config() 含明文密码 - 清死代码:SAFE_CONFIG_KEYS、attachment_dir(Web 时代遗留,全项目零引用) - config.example.json 补五个可选 URL 键(留空=用默认);.env.example 的示例赋值全部注释掉—— env 优先级最高,整份复制出去会真拿 your-sso-url 去登录 - 本地 scripts/data/config.json 去掉 7 个陈旧键,只留凭据;改前备份为 config.json.bak-20261020 - 测试 tests/test_config.py 3 → 9 例:文件覆盖默认 / env 覆盖文件 / 占位忽略 / strip / 凭据不读 env / safe_config 无密码 / 坏文件 / 缺文件 / 返回副本 / 示例文件不得再含 your- 假值;全部指向 tmp 不碰真凭据 - 文档:操作指南写清三级优先级与占位语义,scripts/data/README 补字段表,AGENTS 增加配置优先级约束, 方案文档 §14 记录并划掉 §13.4 对应未完成项 验证:ruff / format --check / mypy src / deptry 全绿,pytest 141 passed,mcp_smoke 25 工具; load_config() 实测无 WARNING 且 URL 与凭据取值正确。--no-verify 提交并手跑等价检查。
18 lines
1.0 KiB
Bash
18 lines
1.0 KiB
Bash
# 系统 URL 覆盖(可选)——不设则使用 src/config.py 里的内置默认值
|
||
|
||
取值优先级:环境变量 > scripts/data/config.json > src/config.py 内置默认。
|
||
注意:项目已移除 python-dotenv,不会再自动读取 .env 文件(本文件只是变量名清单)。
|
||
这些是真实的进程环境变量名:自己 export,或写进宿主的 MCP server env 配置。
|
||
财务账号密码不放这里:DSH 会清洗 stdio 子进程的敏感环境变量,凭据只放 scripts/data/config.json。
|
||
|
||
# 全部注释掉:整份复制出去也不会把坏地址塞进环境(环境变量优先级最高,写错就直接生效)。
|
||
# 想用哪一行就去掉注释。左侧是变量名,右侧是内置默认值。
|
||
# SSO_LOGIN_URL=https://tyrz.fynu.edu.cn/sso/login
|
||
# PORTAL_URL=https://tyrz.fynu.edu.cn/oshall
|
||
# REIMBURSE_URL=http://210.45.32.214:8081
|
||
# REIMBURSE_PAGE=/expen/common/common?v=4.0
|
||
# TRAVEL_PAGE=/expen/travel/travel?v=4.0
|
||
|
||
# 上传收件器访问码(也可用 --pin 参数或 config.json 的 upload_pin)
|
||
UPLOAD_PIN=
|