17 KiB
10 任务状态(Codex 每次必须维护)
这是项目“长记忆”的核心文件之一。禁止删除历史,仅更新状态并添加记录。
当前阶段
PHASE_7_IMPLEMENTATION_COMPLETE - 外部发布验收待执行
当前版本目标
V1.0 MVP:跑通公益服务主闭环
阶段任务
Phase 0:工程初始化
- 建立 monorepo
- 建立 miniprogram
- 建立 admin-web
- 建立 api
- 建立 shared contracts
- Docker Compose 本地环境
- MySQL / Redis / MinIO
- ESLint / Prettier / TSConfig
- CI
- health check
- 环境变量模板
- AGENTS.md
Phase 1:认证与权限
- 微信登录
- 后台登录
- user
- RBAC
- resource policy
- audit baseline
Phase 2:服务申请
- 服务分类
- 本人申请
- 代申请
- 我的申请
- 状态历史
- 防重复提交
- 后台申请列表/详情
Phase 3:服务对象与工单
- beneficiary 档案
- 联系人/监护人
- 标签
- 工单
- 分配工作人员
- 志愿者协作
- 服务记录
- 附件
Phase 4:回访闭环
- 回访任务
- 自动创建
- 完成回访
- 继续帮扶
- 工作台待办
Phase 5:公益项目/活动/志愿者
- 项目 CRUD/发布
- 活动
- 活动报名
- 志愿者申请/审核
- 服务时长
Phase 6:内容与通知
- 公益动态
- 机构介绍
- 内容审核状态
- 站内消息
- 微信订阅通知 Adapter
Phase 7:统计、安全与上线
- 基础统计
- 导出
- 权限扫描
- 安全测试
- 备份恢复
- staging
- UAT
- production deployment
当前正在处理
Phase 6 及 Phase 7 可自动化开发与本地生产工程验证均已完成。Phase 7 的 staging、UAT 和 production deployment 仍需真实环境、微信配置、合规材料及人工审批,保持未完成;当前不得宣称已生产上线。
最近完成记录
格式:
YYYY-MM-DD
任务:
完成:
测试:
涉及 migration:
文档变化:
遗留问题:
2026-08-12
任务:Phase 7 统计、安全与上线工程。
完成:实现基于真实事实表的申请数、已受理数、已完成服务、服务人次、独立服务对象、服务分类、志愿者数、活动数和志愿服务分钟统计,日期范围最多 366 天,不支持人工覆盖;实现独立 exports:create 权限、无个人字段的汇总 CSV 和导出审计。新增数据库 readiness、进程 liveness、受保护的请求量/5xx/p95/内存指标;新增权限扫描、官方依赖审计和 CodeQL/密钥 CI。新增每日 MySQL 备份、SHA-256、保留期和显式目标恢复脚本;新增 Nginx TLS/HSTS/限流配置、staging/production Compose 覆盖、immutable image 预检、健康/公开内容冒烟、监控告警规则和发布/回滚手册。完成管理端统计看板。
测试:format check、lint、全仓 typecheck、27 个 unit tests、34 个真实 MySQL integration tests、全仓 production build、8 个 migration 重复 deploy、schema drift、权限扫描、npm 官方 High 级依赖审计、密钥特征扫描、基础/staging/production Compose 校验和 API Alpine 镜像构建全部通过。统计集成测试覆盖未认证拒绝、真实查询、汇总导出无手机号及导出审计。隔离测试库完成备份恢复演练:SQL SHA-256 为 3aa51c8674fda55d3b720e93ce3e1e77781649b74e65c1c977fc6ef1af68c367,源库和临时恢复库均为 42 张表,核验后临时恢复库已删除。
涉及 migration:20260812170000_phase7_statistics_security 和 20260812173000_phase7_fk_names;已在独立 lehuo_test 库部署,共 8 个 migration,无 schema drift。
文档变化:新增 D-015、D-016;更新数据模型、API/工作流、安全隐私、测试验收、生产就绪计划、发布清单、部署运行手册和本任务状态。
遗留问题:staging、UAT 和 production deployment 未执行。仍需有效微信 AppID/AppSecret、六类订阅模板、合法 HTTPS 域名/证书、微信隐私声明与真机授权;生产 MySQL/Redis/私有对象存储、镜像仓库、告警接收人、异地备份目标;隐私政策/用户协议/数据保留确认、UAT 测试人员、发布窗口和审批人。上述外部项未以本地或测试值冒充完成。
2026-08-12
任务:Phase 6 内容与通知。
完成:新增机构介绍、公益动态、服务故事、通知公告和常见问题统一内容模型;实现 DRAFT → PENDING_REVIEW → PUBLISHED → ARCHIVED 严格状态机、退回草稿、revision 乐观锁、UUID 幂等键、加密审核意见、不可变状态历史和审计;所有内容审核后公开,服务故事发布强制隐私脱敏确认并拒绝危险 HTML/脚本标记。实现站内消息、未读状态、本人资源隔离、通知偏好和显式授权记录;申请提交/受理、服务完成/待回访和活动报名结果在原业务事务中可靠写入站内消息。实现微信订阅通知 Adapter、模板映射、数据库投递队列、抢占处理、指数退避、最多五次重试、死信和管理端人工重试;外部发送失败不回滚主业务,未配置真实微信参数时明确报告不可用。完成管理端内容审核与通知投递工作台,以及小程序公益资讯、机构介绍、内容详情、我的消息和通知设置页面。
测试:format check、lint、全仓 typecheck、27 个 unit tests、33 个真实 MySQL integration tests和全仓 production build 全部通过。Phase 6 集成测试覆盖草稿公开隔离、审核发布、不可变历史、服务故事隐私确认、危险内容拒绝、消息 IDOR 隔离和订阅偏好授权;Phase 1–5 全量回归通过。
涉及 migration:apps/api/prisma/migrations/20260812140000_phase6_content_notifications/migration.sql;已在独立 lehuo_test 库部署,共 6 个 migration。
文档变化:更新共享契约、环境变量模板和本任务状态;Phase 6 API/模型/安全细节随 Phase 7 结项统一同步到专题文档。
遗留问题:无 Phase 6 代码阻塞。真实微信 AppID/AppSecret、六类订阅模板、用户微信平台弹窗授权、合法 HTTPS 域名和真机联调按用户安排后期提供;Adapter 未以测试值冒充真实发送完成。
2026-08-11
任务:Phase 5 公益项目、活动与志愿者。
完成:新增志愿者资料/技能/意向/状态历史、公益项目及状态历史、活动及状态历史、活动报名及不可变事实历史、项目工单归集、项目/活动封面业务类型和 Phase 5 权限 migration;实现志愿者申请、显式同意、revision 乐观锁、审核/暂停/恢复与角色事务同步,身份字段变更自动回待审;实现项目 CRUD、负责人范围、DRAFT → PUBLISHED → COMPLETED、公开边界与工单归集;实现活动 CRUD、发布/关报名/进行/完成/取消状态机;实现仅认证志愿者报名、活动行锁容量校验、截止时间、数据库唯一约束和幂等重放;实现报名审核、本人取消、签到/缺席、完成后服务分钟核定及历史审计。项目/活动封面复用真实 S3 兼容 Adapter,未配置时明确不可用。完成管理端志愿者审核、项目、活动与报名工作台,以及小程序公开项目/活动、在线报名、志愿者中心和个人服务事实页面。未进入 Phase 6。
测试:format check、lint、全仓 typecheck、27 个 unit tests、30 个真实 MySQL integration tests、全仓 production build、Docker Compose 示例配置校验、migration 重复 deploy、schema drift 检查、npm 官方 High 级 dependency audit、密钥特征扫描和 API Alpine Docker 镜像构建全部通过。Phase 5 集成测试覆盖项目/活动状态机、草稿公开隔离、未认证报名拒绝、重复报名安全重放、容量边界、报名审核/签到重放、完成后服务时长、不可变历史和审计;Phase 1–4 全量回归通过。
涉及 migration:apps/api/prisma/migrations/20260812010000_phase5_participation/migration.sql;已在独立 lehuo_test 库部署,重复 deploy 无待执行 migration,无 schema drift。
文档变化:更新应用 README、数据模型、API/工作流、UI/UX、安全隐私、测试验收、生产就绪计划、ADR 和本任务状态;新增 D-014。
遗留问题:无 Phase 5 代码阻塞。真实微信 AppID/AppSecret、合法 HTTPS 域名、生产私有对象存储密钥/CORS、微信开发者工具/真机、staging/UAT 和隐私法务配置按用户安排后期提供,未用测试值冒充完成。生产仍被 Phase 6–7、监控告警、备份恢复演练和发布审批阻断;详见 17_PRODUCTION_READINESS_PLAN.md。
2026-08-11
任务:Phase 4 回访闭环与生产就绪差距规划。
完成:新增回访任务、状态历史、继续帮扶来源关系、案件完成幂等字段及 follow_ups:read/manage/complete 权限 migration;实现负责人完成服务、至少一条服务记录前置校验,以及工单完成、申请 IN_SERVICE → SERVICE_COMPLETED → FOLLOW_UP_PENDING、自动回访和审计的单事务提交;实现人工/重点关爱回访、负责人/全量资源范围、今日/逾期/未来 7 日/重点关爱工作台、加密回访原因与结果、幂等完成;实现 NEED_MORE_HELP 新的显式授权、关联 SUBMITTED 申请、原申请关闭、历史和审计的单事务提交,不跳过既有评估/受理流程;完成管理端工单完结表单与回访工作台。新增生产就绪差距和 Phase 4–7 路线文档,未进入 Phase 5。
测试:format check、lint、全仓 typecheck、27 个 unit tests、28 个真实 MySQL integration tests、全仓 production build、Docker Compose 示例环境配置校验、migration 重复 deploy、schema drift 检查和 npm 官方 high-level dependency audit 全部通过;Phase 4 集成测试覆盖无记录禁止完成、事务自动回访、幂等冲突、资源范围和继续帮扶独立授权/关联申请。
涉及 migration:apps/api/prisma/migrations/20260811220000_phase4_follow_up_closure/migration.sql;已在独立 lehuo_test 库部署,无待执行 migration,无 schema drift。
文档变化:新增 17_PRODUCTION_READINESS_PLAN.md;更新数据模型、API/工作流、安全隐私、测试验收、ADR 和本任务状态;修正 staff/beneficiary 显示名及接单幂等字段在数据模型文档中的归属错误;新增 D-013。
遗留问题:无 Phase 4 代码阻塞。生产仍被 Phase 5–7、真实微信 AppID/AppSecret 与合法 HTTPS 域名、生产数据库/Redis/私有对象存储、监控告警、隐私法务确认、staging/UAT、备份恢复演练和发布审批阻断;详见 17_PRODUCTION_READINESS_PLAN.md。这些外部项未用测试值冒充完成。管理端截图级浏览器验收沿用已知本机隔离限制,本阶段通过类型检查、自动化测试和 production build 验证。
2026-08-11
任务:Phase 3 服务对象与工单。
完成:新增服务对象、联系人/监护授权、标签、工单、多人指派、工单/申请状态历史、服务记录、记录修订和私有文件模型及 migration;实现 SUBMITTED → PENDING_CONTACT → ASSESSING 严格受理、事务化幂等接单、手机号 HMAC + 人工确认关联档案、未成年人监护授权、资源范围和志愿者最小字段策略、负责人启动服务、幂等服务记录和 revision 乐观锁;实现 S3 兼容私有对象存储 Adapter、短期上传/下载签名和对象元数据确认;完成管理端申请受理、档案、工单、指派、记录及照片 UI,以及小程序权限感知的协作任务、最小详情和记录 UI。未实现 Phase 4 的完成服务和自动回访。
测试:format check、lint、全仓 typecheck、26 个 unit tests、25 个真实 MySQL integration tests、全仓 production build、Docker Compose config、npm 官方 high-level dependency audit、密钥特征扫描、API Alpine Docker 镜像构建全部通过;Phase 3 migration 已在独立 lehuo_test 库部署且重复 deploy 无待执行 migration。
涉及 migration:apps/api/prisma/migrations/20260811180000_phase3_case_management/migration.sql。
文档变化:更新 API/工作流、数据模型、ADR、环境模板、API/管理端/小程序/Docker 运行说明和本任务状态;新增 D-012。
遗留问题:无 Phase 3 代码阻塞。真实微信 AppID/AppSecret、合法 HTTPS 域名、对象存储私有 Bucket/最小权限密钥/CORS 以及微信开发者工具与真机联调按用户安排后期提供;生产对象存储未配置时附件 API 会明确返回不可用,不以测试 Adapter 冒充生产。管理端截图级浏览器验收沿用已知本机隔离网络限制,本轮通过类型检查、自动化测试和生产构建验证。
2026-08-11
任务:Phase 2 服务申请。
完成:建立服务分类、申请方式与完整申请状态共享契约;新增 consents、service_applications、只追加状态历史和 applications:read migration;实现本人/代申请、五步表单、提交成功、我的申请与状态时间线;实现事务化同意/申请/初始历史/审计、AES-256-GCM 敏感字段加密、域隔离 HMAC 查询索引及请求指纹、数据库唯一约束与并发幂等、申请人资源归属校验、提交限流;实现后台权限筛选、分页脱敏列表和详情查看审计。未实现 Phase 3 档案、受理、状态流转、工单或分配。
测试:format check、lint、全仓 typecheck、26 个 unit tests、17 个真实 MySQL integration tests、全仓 production build、Docker Compose config、pnpm high-level dependency audit、密钥特征扫描、API Alpine Docker 镜像构建全部通过;Phase 2 migration 已在独立 lehuo_test 库成功部署。最终重复执行 migration 检查时 Prisma Windows schema engine 被本机策略以 EPERM 拦截,已在同一已迁移隔离库直接重跑全部集成测试并通过。应用内浏览器无法从隔离网络访问仅绑定回环地址的本地服务器;出于安全考虑未将管理接口暴露到 0.0.0.0,开发服务器均已停止。
涉及 migration:apps/api/prisma/migrations/20260811100000_phase2_service_applications/migration.sql。
文档变化:更新小程序、管理端、API 与 Docker README;更新数据模型、API/工作流、安全隐私、ADR 和本任务状态;新增 D-011。
遗留问题:无 Phase 2 代码阻塞。真实微信 AppID/AppSecret、合法 HTTPS 域名、微信开发者工具/真机联调按用户安排后期提供;管理端截图级浏览器验收受本机隔离网络限制,自动化逻辑测试和生产构建已通过。
2026-08-10
任务:Phase 1 认证与权限。
完成:建立 Prisma 7/MySQL 认证数据模型和 migration;实现统一用户、微信 code exchange Adapter、后台 Argon2id 登录、数据库 opaque session、小程序 Bearer 会话、后台 HttpOnly Cookie、会话轮换/注销/过期与停用校验、登录锁定和限流;实现 RBAC、权限 Guard、resource policy 基线、角色事务替换和最后一名超级管理员保护;实现敏感字段 AES-256-GCM/HMAC、统一响应/错误/requestId、审计基线、首次管理员安全初始化;完成管理端登录/恢复/注销 UI 和小程序登录/重试 UI;CI 增加隔离 MySQL 集成测试,并修复 js-yaml High 漏洞。
测试:format check、lint、typecheck、19 个 unit tests、9 个真实 MySQL integration tests、全仓 build、API Alpine Docker 镜像构建、Docker Compose config、pnpm high-level dependency audit、密钥特征扫描全部通过;migration 在独立 lehuo_test 库成功部署。应用内浏览器视觉核验因本机 Browser 运行时路径权限被环境阻止,开发服务器已停止;自动化 UI 逻辑测试和生产构建通过。
涉及 migration:apps/api/prisma/migrations/20260810130000_phase1_auth_baseline/migration.sql。
文档变化:更新根 README、客户端与 Docker 运行说明、数据模型、API/工作流、安全隐私、ADR 和本任务状态;新增 D-009、D-010。
遗留问题:无 Phase 1 代码阻塞。真实微信平台 exchange 仍需在具备有效 AppID/AppSecret、合法 HTTPS 域名和微信环境时做联调;本机应用内浏览器权限问题导致本轮未获得登录页截图级视觉验收。
2026-08-10
任务:Phase 0 仓库初始化与技术基线。
完成:初始化 Git main 分支与 pnpm monorepo;创建原生 TypeScript 微信小程序、Vue 3 管理后台、NestJS API、共享 contracts;建立统一 ESLint/Prettier/TypeScript/测试/构建命令;创建 MySQL 8.4.8、Redis 7.4、MinIO 本地 Compose;创建 API Dockerfile、GET /health、.env.example、根 AGENTS.md、CI 和模块说明。
测试:format check、lint、typecheck、4 个 unit tests、1 个 integration test、build、dependency audit 全部通过;Docker Compose 配置通过,MySQL/Redis/MinIO 均 healthy;本机 API 与容器化 API 的 /health 冒烟测试通过。
涉及 migration:无(Phase 0 未创建业务 schema)。
文档变化:更新 docs/10_TASK_STATE.md、docs/05_API_AND_WORKFLOW.md;新增根 README.md 与 infra/docker/README.md。
遗留问题:无 Phase 0 阻塞问题。尚未开始任何 Phase 1 认证、权限或业务功能。
已知问题
无已知 Phase 5 代码问题。生产阻断项和人工配置见 17_PRODUCTION_READINESS_PLAN.md。
下一步
等待用户提供或确认外部生产资源后,依次执行 staging 全闭环、非开发人员 UAT、真实微信联调和 production deployment;不得跳过发布清单或审批。