Files
Auto-Finance/.env.example
T
wandering 64bbe53e71 fix(config): 让 config.json 的 URL 字段真正生效,并守住占位假值
文档一直写着「地址来自 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 提交并手跑等价检查。
2026-10-20 11:41:34 +08:00

18 lines
1.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统 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=