diff --git a/CURRENT-FOCUS.md b/CURRENT-FOCUS.md index baf182c..1e209b0 100644 --- a/CURRENT-FOCUS.md +++ b/CURRENT-FOCUS.md @@ -4,15 +4,15 @@ > > 📝 **更新规则**:每次 Claude 完成 / 开始 / 阻塞重要任务,会主动更新本文件。你也可以自己改(纯 markdown,git 跟踪)。 -最后更新:**2026-06-16 11:10**(Claude 自动维护,看板上一次刷新) +最后更新:**2026-06-21**(Claude 自动维护,看板上一次刷新) --- ## 🎯 一句话总览 -**项目状态**:**v0.5.6-dev-tooling 完成**,本地 4 端 dev 链路全通(Mock 企微 OAuth + 3 个新 migration + 1 个 decorator bug 修复)。 -**当前主线**:**等用户决策要不要上生产**(生产 3 个 migration + 1 个 bug 修复可上,7 个 dev 改动留在本地)。 -**待回复**:#83 OTM 是什么 / 跟项目什么关系。 +**项目状态**:**v0.7.0 release 完成** — 扫码登录 + MFA 二次认证 + 高危操作守卫 + P0/P1 合规修复 全部合入 main(commit 8e748d1)+ tag 已打(v0.7.0)。 +**当前主线**:**等用户执行 `docs/DEPLOY-QUICK-v0.7.0.md` 6 步部署 + 35 项 E2E 验收**(deadline 今晚 7:00 → 现已凌晨,部署后看观察期)。 +**待用户手动操作**:撤销 Gitea token `5ad83d3...`(已暴露过)+ 跑生产 migration + 应用 nginx access_log 脱敏 + push 新代码到 Gitea。 --- @@ -20,7 +20,7 @@ | # | 任务 | 我做什么 | 你做什么 | 完成定义 | |---|---|---|---|---| -| #90 | 后端 pytest 测试套件 | 补 token_service / scoring_service 等 | 等结果 | 20+ 测试通过 | +| #29 | 启用测试环境(PG+Redis)+ 跑集成测试 | 用 SQLite 跑全量 pytest 后台跑 | 部署后用 PG 跑一遍真集成测试 | 470+ passed | --- @@ -41,7 +41,21 @@ | #73 | 修后端文件未真正覆盖 | `yes | cp -f` 路径,部署时偶尔没生效 | | #86 | 排查流程图零依赖部分 review + 文档化 | 把 Mermaid 流程图从代码里剥离成可读文档 | | #88 | 管理后台 RBAC 角色权限 | 管理后台细粒度角色权限(大功能,2-3 天) | -| #83 | 澄清"OTM 跟项目关系" | **我在这等你回答**:OTM 是什么?需要对接吗? | +| #83 | 澄清"OTM 跟项目关系" | 已 2026-06-21 决策:走 TOTP+SMS 双引擎(MFA Phase 2 实施) | +| 🆕 | v0.7.0 部署 + 35 项 E2E 验收 | 看 `docs/DEPLOY-QUICK-v0.7.0.md` 6 步 + `docs/E2E-CHECKLIST-v0.7.0.md` | +| 🆕 | 修 64 pre-existing 测试失败 | Role.data_scope 缺字段 / WecomService DI / test_message_experience 等 | + +## 🟢 P2 / 等用户决策 + +| # | 任务 | 卡在哪 | +|---|---|---| +| **🆕 服务器更新?** | 把 v0.7.0 部署到生产(扫码+MFA+高危+4 项 P0) | **等你跑 `DEPLOY-QUICK-v0.7.0.md` 6 步** | +| #31 | 推 docker 镜像到生产 registry | 等你确认要走哪条路(自建 Harbor / 阿里云 / 别的) | +| #43 | 配置 HTTPS | 等域名备案完成 + 证书到位 | +| #53 | 用户在企微验证 /itportal/ | 等你去企微点一点 | +| 🆕 #23 | 清理 ~/Downloads/ patch1 包 | 部署观察期后拍板 | +| 🆕 #24 | 清理生产 patch1 回滚备份 | 1 周观察期后拍板 | +| 🆕 #48 | 收窄 set_real_ip_from 内网地址 | 部署后下一迭代(v1.0 前) | --- @@ -58,7 +72,46 @@ ## ✅ 最近搞定(给你信心) -### 2026-06-16(今天) +### 2026-06-21(凌晨 1 小时 sprint) + +#### 🆕 v0.7.0 release 收尾(8 个 worktree → main) + +- ✅ **#14 阶段 1.1**:后端 `auth_qrcode.py` 4 端点(create/poll/scan/confirm) +- ✅ **#15 阶段 1.2**:前端 `Login.vue` + `QrcodeLogin.vue` 扫码 UI +- ✅ **#16 阶段 1.3**:坐席/管理员域名路由分发(`/itagent/` `/itadmin/`) +- ✅ **#17 阶段 2.1**:后端 MFA 服务 + pyotp 集成 +- ✅ **#18 阶段 2.2**:数据库 User MFA 字段 + Alembic migration 023 +- ✅ **#19 阶段 2.3**:高危操作路由白名单 + 中间件(5 类白名单) +- ✅ **#20 阶段 2.4**:前端 MFA UI(绑定 + 验证 + 高危弹窗 + 管理表格) +- ✅ **#21 集成测试 + E2E + 培训文档**:E2E-CHECKLIST 176 行 + DEPLOY-QUICK 252 行 + +#### 🔐 P0/P1 合规修复(#30) + +- ✅ WS endpoint `missing argument 'request'`(签名 + 8 个回归测试) +- ✅ messages.id VARCHAR → UUID(migration 025) +- ✅ nginx access_log 脱敏脚本(删 Authorization/Cookie) +- ✅ Gitea token 撤销流程已文档化(token `5ad83d3...` 已暴露过) + +#### 🐛 测试修复(#32) + +- ✅ wordfilter 1.0.6 API 适配(`Wordfilter()` 实例 + `addWords()` + `blacklisted()`) +- ✅ SQLite ARRAY/JSONB 编译补丁(quiz.keywords / themes.palette) +- ✅ conftest autouse 业务表清理(feedback 事务隔离) +- ✅ h5_client 用 `127.0.0.1` 跳过企微 UA 检测 +- ✅ wecom mock 默认 name 不覆盖 body.name +- ✅ 测试基线:570 ERROR → 470 passed, 4 xfailed, 64 failed + +#### 📦 提交记录 + +- `8e748d1` docs: CHANGELOG.md 添加 v0.7.0 release 节 +- `1255e95` docs: v0.7.0 一键部署操作包 +- `c33abb6` fix(tests): h5_client UA 检测 +- `a9b97de` fix(tests): wordfilter API + SQLite 编译补丁 + 事务隔离 +- `e96fbb2` docs: v0.7.0 E2E 验收清单 +- `bf872da` feat(merge): 4 个 worktree 合入 main +- **tag v0.7.0** 已打 + +### 历史(2026-06-16 选重点) #### 🛠️ Dev 环境(本地链路全通)