Files
chisup/docs/current-state.md
T
2026-07-05 11:13:34 +08:00

5.8 KiB
Raw Blame History

当前实现状态

本文是可覆盖的当前快照,记录代码与任务看板的现实状态。历史执行流水追加到 ../progress.md。

当前快照

  • 日期:2026-07-05
  • 阶段:MVP 起步 / Phase 1 CHIS 登录与会话验证推进中
  • 技术栈:当前系统 Python 3.8、Flask 3.0.3 application factory、pytest 8.3.5、requests[socks] 2.32.4、gmssl 3.2.2;不创建虚拟环境
  • 生产代码:app/__init__.py、app/api/health.py、app/config.py、run.py、app/chis/auth.py、app/chis/crypto.py,以及 app/middleware/、app/services/、app/mappers/、app/chis/、app/repositories/、app/validators/ 包目录;ChisLoginClient 已支持登录和 getLanderInfo 会话验证
  • 测试:tests/test_app_factory.py、tests/test_config_and_structure.py、tests/test_project_setup.py、tests/test_chis_auth.py
  • 数据 / 资料:reverse_file/ 下已有 CHIS HAR、前端脚本和 schema;D:\hans\chupd\chis\login_client_v2.py 可作为登录链路参考
  • 标准启动路径:python run.py
  • 标准验证路径:python -m pytest
  • 当前 blocker:无硬阻塞;后续实现需要接入 Redis 会话缓存,并在失效时清理缓存和重登一次

当前目录要点

路径 状态 说明
docs/ 已有 项目规范化文档
reverse_file/ 已有 CHIS 逆向资料,当前重要事实来源
reverse_file/20260704_query_health_check.har 已有 体检详情只读查询 HAR,包含 getHMNIListOfHTML 和 getCheckInfoDetail
D:\hans\chupd\chis\login_client_v2.py 外部参考 CHIS 登录、SM2 加密、角色选择、cookie 拼接、getLanderInfo 会话验证
app/ 已有 Flask application factory 和 health check API
app/chis/ 已有 CHIS integration layer;T-101 已包含登录客户端与 SM2 加密,T-102 已包含 getLanderInfo 会话验证
app/mappers/ 已有 数据转换层包目录
app/middleware/ 已有 中间件包目录
app/repositories/ 已有 存储 / 缓存包目录
app/services/ 已有 应用服务层包目录
app/validators/ 已有 请求校验包目录
tests/ 已有 pytest 可收集的测试
pytest.ini 已有 pytest 测试入口配置,限制测试目录为 tests
requirements.txt 已有 Python 依赖,固定 Flask==3.0.3、pytest==8.3.5、requests[socks]==2.32.4、gmssl==3.2.2
.env.example 已有 环境变量占位示例,不含真实密钥

任务看板状态

任务状态以 06-tasks.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 接入账号信息查询验证会话。详见 ../progress.md。
  • 正在进行:无。
  • 下一个可领取任务:T-103 实现 Redis 会话缓存。

已确认技术事实

  • CHIS public key 可通过配置文件或环境变量提供。
  • 使用当前系统 Python 3.8 环境,不创建虚拟环境;T-001 创建 requirements.txt 固定依赖。
  • pytest 8.3.5 已固定到 requirements.txt;标准测试命令为 python -m pytest。
  • requests[socks] 2.32.4 和 gmssl 3.2.2 已固定到 requirements.txt,用于 CHIS 登录请求、SOCKS5 代理和 SM2 加密。
  • Flask 应用使用 application factory 模式,app/__init__.py 暴露 create_app(config_object=None)。
  • 基础配置通过环境变量读取:CHIS_BASE_URL、CHIS_PUBLIC_KEY、CHIS_PROXY、REDIS_URL、LOG_DIR、ARCHIVE_DIR。
  • CHIS_BASE_URL 兼容完整地址和旧项目 host 写法;未带 scheme 时按 http://<host>/chis 处理。
  • CHIS 外呼支持可选 SOCKS5 代理配置:CHIS_PROXY 为空直连;有值时后续 CHIS client 对登录、会话验证、查询和保存请求统一走代理。
  • .env.example 只保留占位符和非敏感默认值,不写真实密钥。
  • 登录链路已迁移到 app/chis/auth.py:myRoles -> 选择 责任医生助理 / 责任医生 -> myApps -> 提取 JSESSIONID -> 拼接 cookie。
  • 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。
  • 体检详情查询第一版可用 healthCheck + phrId + idCard 调 getHMNIListOfHTML,用 idCard + checkDate 调 getCheckInfoDetail。
  • 当前不能证明只传 healthCheck 就能查完整详情。
  • 运行日志保存到 logs/,每天一个综合日志文件,保留 1 年。
  • 每个 API 请求保存一个 archives/ JSON 归档文件,包含完整 API 和 CHIS 请求 / 响应,archive 不脱敏,仅用于内网前置机本地受控排查。

当前可运行内容

python -m pip install -r requirements.txt
python -m pytest
python run.py

开始编码前检查

  1. 读 ../AGENTS.md。
  2. 读 00-ai-start-here.md。
  3. 读 05-coding-rules.md。
  4. 从 06-tasks.md 领取第一个 TODO 且依赖均完成的任务。
  5. 将该任务状态改为 DOING 后再改代码。

维护规则

当实际代码状态发生变化时,同步更新本文件:

  • 新增或移动入口文件。
  • 初始化框架或模块。
  • 任务从 TODO 进入 DOING 或 DONE。
  • 新增可运行命令。
  • 发现文档和代码现实不一致。