Add dotenv loading task

This commit is contained in:
ila
2026-07-05 11:39:28 +08:00
parent 32037a04e1
commit f1357ce6e7
4 changed files with 14 additions and 3 deletions
+1
View File
@@ -21,6 +21,7 @@
| T-001 | 初始化 Flask 项目骨架 | - | 使用当前系统 Python 3.8,不创建虚拟环境;创建 `requirements.txt` 并固定 `Flask==3.0.3`;使用 application factory 模式实现 `create_app(config_object=None)`;本地 health check API 可启动;真实命令同步到技术栈和当前状态 | DONE | | T-001 | 初始化 Flask 项目骨架 | - | 使用当前系统 Python 3.8,不创建虚拟环境;创建 `requirements.txt` 并固定 `Flask==3.0.3`;使用 application factory 模式实现 `create_app(config_object=None)`;本地 health check API 可启动;真实命令同步到技术栈和当前状态 | DONE |
| T-002 | 建立基础配置与目录 | T-001 | 目录符合架构文档;配置从环境变量读取;无真实密钥 | DONE | | T-002 | 建立基础配置与目录 | T-001 | 目录符合架构文档;配置从环境变量读取;无真实密钥 | DONE |
| T-003 | 建立最小测试框架 | T-001 | pytest 可运行;至少有 `create_app` / health check 测试,能通过测试配置创建 Flask app | DONE | | T-003 | 建立最小测试框架 | T-001 | pytest 可运行;至少有 `create_app` / health check 测试,能通过测试配置创建 Flask app | DONE |
| T-004 | 支持本地 `.env` 配置加载 | T-003 | 增加 `.env` 自动加载能力;固定并安装 `python-dotenv` 兼容 Python 3.8 的版本;`.env` 加入 `.gitignore` 且不提交真实密钥;`.env.example` 保持占位;测试覆盖 `.env` 加载和系统环境变量优先级;真实安装、测试和启动命令同步到技术栈、编码规则和当前状态 | TODO |
## Phase 1 · CHIS 登录与会话 ## Phase 1 · CHIS 登录与会话
+3 -3
View File
@@ -12,7 +12,7 @@
- 数据 / 资料:`reverse_file/` 下已有 CHIS HAR、前端脚本和 schema;`D:\hans\chupd\chis\login_client_v2.py` 可作为登录链路参考 - 数据 / 资料:`reverse_file/` 下已有 CHIS HAR、前端脚本和 schema;`D:\hans\chupd\chis\login_client_v2.py` 可作为登录链路参考
- 标准启动路径:`python run.py` - 标准启动路径:`python run.py`
- 标准验证路径:`python -m pytest` - 标准验证路径:`python -m pytest`
- 当前 blocker:无硬阻塞;后续实现需要接入失效重登策略:会话验证失败时清缓存、重登一次、重试一次 - 当前 blocker:无硬阻塞;用户已新增 T-004,本地 `.env` 自动加载尚未实现;后续仍需接入失效重登策略:会话验证失败时清缓存、重登一次、重试一次
## 当前目录要点 ## 当前目录要点
@@ -40,7 +40,7 @@
- 已完成:DOC-001 建立 harness coding 项目文档;DOC-002 更新 CHIS 登录与只读查询验证路线;DOC-003 明确使用系统 Python 3.8;DOC-004 明确 Flask factory 模式;DOC-005 明确日志与请求归档方案;DOC-006 明确 CHIS SOCKS5 代理配置;T-001 初始化 Flask 项目骨架;T-002 建立基础配置与目录;T-003 建立最小测试框架;T-101 迁移 CHIS 登录链路;T-102 接入账号信息查询验证会话;T-103 实现 Redis 会话缓存。详见 [../progress.md](../progress.md)。 - 已完成:DOC-001 建立 harness coding 项目文档;DOC-002 更新 CHIS 登录与只读查询验证路线;DOC-003 明确使用系统 Python 3.8;DOC-004 明确 Flask factory 模式;DOC-005 明确日志与请求归档方案;DOC-006 明确 CHIS SOCKS5 代理配置;T-001 初始化 Flask 项目骨架;T-002 建立基础配置与目录;T-003 建立最小测试框架;T-101 迁移 CHIS 登录链路;T-102 接入账号信息查询验证会话;T-103 实现 Redis 会话缓存。详见 [../progress.md](../progress.md)。
- 正在进行:无。 - 正在进行:无。
- 下一个可领取任务:T-104 实现失效重登策略。 - 下一个可领取任务:T-004 支持本地 `.env` 配置加载。
## 已确认技术事实 ## 已确认技术事实
@@ -52,7 +52,7 @@
- 基础配置通过环境变量读取:`CHIS_BASE_URL`、`CHIS_PUBLIC_KEY`、`CHIS_PROXY`、`REDIS_URL`、`LOG_DIR`、`ARCHIVE_DIR`。 - 基础配置通过环境变量读取:`CHIS_BASE_URL`、`CHIS_PUBLIC_KEY`、`CHIS_PROXY`、`REDIS_URL`、`LOG_DIR`、`ARCHIVE_DIR`。
- `CHIS_BASE_URL` 兼容完整地址和旧项目 host 写法;未带 scheme 时按 `http://<host>/chis` 处理。 - `CHIS_BASE_URL` 兼容完整地址和旧项目 host 写法;未带 scheme 时按 `http://<host>/chis` 处理。
- CHIS 外呼支持可选 SOCKS5 代理配置:`CHIS_PROXY` 为空直连;有值时后续 CHIS client 对登录、会话验证、查询和保存请求统一走代理。 - CHIS 外呼支持可选 SOCKS5 代理配置:`CHIS_PROXY` 为空直连;有值时后续 CHIS client 对登录、会话验证、查询和保存请求统一走代理。
- `.env.example` 只保留占位符和非敏感默认值,不写真实密钥。 - `.env.example` 只保留占位符和非敏感默认值,不写真实密钥;当前尚未自动加载真实 `.env` 文件,T-004 将实现本地 `.env` 加载。
- 登录链路已迁移到 `app/chis/auth.py`:`myRoles` -> 选择 `责任医生助理` / `责任医生` -> `myApps` -> 提取 `JSESSIONID` -> 拼接 cookie。 - 登录链路已迁移到 `app/chis/auth.py`:`myRoles` -> 选择 `责任医生助理` / `责任医生` -> `myApps` -> 提取 `JSESSIONID` -> 拼接 cookie。
- SM2 加密已迁移到 `app/chis/crypto.py`,兼容 `hans_chis.sm2.sm2_encrypt`:`gmssl.sm2.CryptSM2(mode=0)`,返回带 `04` 前缀密文。 - SM2 加密已迁移到 `app/chis/crypto.py`,兼容 `hans_chis.sm2.sm2_encrypt`:`gmssl.sm2.CryptSM2(mode=0)`,返回带 `04` 前缀密文。
- 会话验证已接入 `ChisLoginClient.get_lander_info(cookie)`,请求 `chis.myPageService / getLanderInfo`;CHIS 非 200 业务码会抛出 `chis_session_invalid`。Redis 会话缓存已接入 `RedisChisSessionStore`,会话对象包含 `base_url`、`uid`、`role_id`、`manage_unit`、`cookies`、`login_at`、`expires_at`、`last_validated_at`,过期会话读取时自动删除。 - 会话验证已接入 `ChisLoginClient.get_lander_info(cookie)`,请求 `chis.myPageService / getLanderInfo`;CHIS 非 200 业务码会抛出 `chis_session_invalid`。Redis 会话缓存已接入 `RedisChisSessionStore`,会话对象包含 `base_url`、`uid`、`role_id`、`manage_unit`、`cookies`、`login_at`、`expires_at`、`last_validated_at`,过期会话读取时自动删除。
+9
View File
@@ -133,3 +133,12 @@
- 阻塞:无。 - 阻塞:无。
- 决策:T-103 只实现会话缓存读写和过期清理;会话验证失败后的清缓存、重登一次和重试一次留给 T-104。由于项目使用系统 Python 且不建虚拟环境,Redis 依赖固定为 `redis==3.5.3`,避免破坏同环境 `django-q` 依赖。 - 决策:T-103 只实现会话缓存读写和过期清理;会话验证失败后的清缓存、重登一次和重试一次留给 T-104。由于项目使用系统 Python 且不建虚拟环境,Redis 依赖固定为 `redis==3.5.3`,避免破坏同环境 `django-q` 依赖。
- 下一步:T-104 实现失效重登策略。 - 下一步:T-104 实现失效重登策略。
## 2026-07-05 DOC-007 增加 T-004 本地 .env 配置加载任务
- 状态:DONE
- 变更:在 `docs/06-tasks.md` 的 Phase 0 增加 `T-004 支持本地 .env 配置加载`;同步根目录 `tasks.md` 和 `docs/current-state.md`,将下一个可领取任务改为 T-004。
- 验证:检查任务看板和当前状态文档,确认 T-004 为第一个依赖已完成的 TODO;本轮仅更新任务文档,未改生产代码。
- 阻塞:无。
- 决策:T-004 验收包含 `python-dotenv`、`.env` 不提交、`.env.example` 保持占位、测试覆盖 `.env` 加载和系统环境变量优先级。
- 下一步:T-004 支持本地 `.env` 配置加载。
+1
View File
@@ -13,6 +13,7 @@ MVP 起步。当前仓库已具备逆向资料、项目文档、Flask applicatio
| T-001 | 初始化 Flask 项目骨架 | DONE | | T-001 | 初始化 Flask 项目骨架 | DONE |
| T-002 | 建立基础配置与目录 | DONE | | T-002 | 建立基础配置与目录 | DONE |
| T-003 | 建立最小测试框架 | DONE | | T-003 | 建立最小测试框架 | DONE |
| T-004 | 支持本地 `.env` 配置加载 | TODO |
| T-101 | 迁移 CHIS 登录链路 | DONE | | T-101 | 迁移 CHIS 登录链路 | DONE |
| T-102 | 接入账号信息查询验证会话 | DONE | | T-102 | 接入账号信息查询验证会话 | DONE |
| T-103 | 实现 Redis 会话缓存 | DONE | | T-103 | 实现 Redis 会话缓存 | DONE |