51 lines
2.5 KiB
Markdown
51 lines
2.5 KiB
Markdown
# 技术栈(Tech Stack)
|
||||
|
|
|
|||
|
|
> “用什么”的统一速查表。未定项必须标为待定,不让 agent 在代码里自行决定。
|
|||
|
|
|
|||
|
|
## 一、技术栈一览
|
|||
|
|
|
|||
|
|
| 维度 | 选型 | 状态 | 理由 / 说明 |
|
|||
|
|
| --- | --- | --- | --- |
|
|||
|
|
| 运行时 | Python 3.8 | 已定 | 用户指定 |
|
|||
|
|
| Web 框架 | Flask 3.0.3 | 已定 | 用户指定,适合轻量 API 服务 |
|
|||
|
|
| 数据校验 | 待定,建议 Pydantic v1 或 Marshmallow | 待定 | Python 3.8 下需注意版本兼容 |
|
|||
|
|
| HTTP 客户端 | 待定,建议 `requests.Session` | 待定 | CHIS 会话 cookie 管理简单稳定 |
|
|||
|
|
| Redis 客户端 | 待定,建议 `redis-py` | 待定 | 保存 CHIS 会话、幂等和短期状态 |
|
|||
|
|
| SM2 加密 | 待定,建议 `gmssl` | 待定 | 需兼容 `hans_chis.sm2.sm2_encrypt` 的 `CryptSM2(mode=0)` 行为 |
|
|||
|
|
| 数据库 | 待定 | 待定 | MVP 可先只用 Redis;上报流水可能需要 MySQL / SQLite / PostgreSQL |
|
|||
|
|
| 第三方鉴权 | 待定,建议 app_key + HMAC 或 Bearer Token | 待定 | 不建议第三方直接裸传 CHIS 账号密码 |
|
|||
|
|
| 测试 | pytest | 建议 | 适合 mapper、client、service 单元测试 |
|
|||
|
|
| 部署 | 待定,建议 gunicorn / waitress + systemd / Windows 服务 | 待定 | 取决于部署环境 |
|
|||
|
|
|
|||
|
|
## 二、决策记录与演进
|
|||
|
|
|
|||
|
|
- Flask 3.0.3 + Python 3.8 已定,但 Python 3.8 生命周期已结束;如果部署环境允许,未来建议评估 Python 3.10+。
|
|||
|
|
- Redis 是会话缓存核心,不建议把 CHIS 会话保存在进程内存。
|
|||
|
|
- CHIS public key 从配置文件或环境变量读取;当前不依赖 `/chis/logon/publicKey` 动态获取。
|
|||
|
|
- CHIS 登录代码来自 Django 项目参考实现,迁移到 Flask 时只复用登录链路、SM2 算法和请求形状,不复用 Django model/cache。
|
|||
|
|
- 当前不引入异步队列,先跑通同步单条上报闭环;批量和重试队列放到 V2。
|
|||
|
|
- 当前不引入管理后台,先保证 API、会话和转换稳定。
|
|||
|
|
|
|||
|
|
## 三、构建与运行命令
|
|||
|
|
|
|||
|
|
当前尚未初始化项目代码,命令待 T-001 补齐。
|
|||
|
|
|
|||
|
|
| 用途 | 命令 |
|
|||
|
|
| --- | --- |
|
|||
|
|
| 安装依赖 | 待定 |
|
|||
|
|
| 本地开发 | 待定 |
|
|||
|
|
| 测试 | 待定 |
|
|||
|
|
| 格式化 / 静态检查 | 待定 |
|
|||
|
|
|
|||
|
|
当前可用文档检查:
|
|||
|
|
|
|||
|
|
```powershell
|
|||
|
|
Get-ChildItem -Recurse -File
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 四、依赖纪律
|
|||
|
|
|
|||
|
|
- 新增依赖前先说明用途、替代方案和 Python 3.8 兼容性。
|
|||
|
|
- 和 CHIS 登录、SM2/RSA/AES 加密相关的依赖必须由真实登录代码驱动,不要凭 HAR 猜;当前 SM2 参考 `hans_chis.sm2.sm2_encrypt`。
|
|||
|
|
- 不允许在代码或 `.env.example` 中写真实 CHIS 地址、账号、密码、Cookie。
|