Files
lehuo/docs/10_TASK_STATE.md
T

21 KiB
Raw Blame History

10 任务状态(Codex 每次必须维护)

这是项目“长记忆”的核心文件之一。禁止删除历史,仅更新状态并添加记录。

当前阶段

2026-08-13

任务:参考图小程序端与管理端视觉全量还原(延期能力仅预留)。

完成:建立 primitive→semantic→component 三层设计令牌;按参考图重建小程序品牌首页、八宫格服务入口、公告、项目图文卡、正式底部导航、图文服务申请、项目详情事实区和绿色个人中心;保留既有真实申请、项目、活动、志愿报名、协作任务、消息和内容业务流程。管理端新增深色图标侧栏、工作概览、真实 KPI、月度申请/完成趋势、服务类型分布、快捷入口和工单横向状态步骤条,并沿用既有脱敏表格、筛选、详情、权限和审计逻辑。新增四张虚构公益品牌场景素材并压缩用于本地包,不作为真实成果证据。

范围:按用户确认,爱心捐赠及支付、每月自动捐赠、捐赠记录/金额统计、物资订单、志愿者培训/证书/团队不进入当前版本,不显示入口、不建立 API/表;新增集中禁用能力清单与稳定导航/组件边界供后期开发。新增 D-017,未改变技术栈、数据库、认证、状态机或 V1 业务范围。

验证:格式检查、Lint、27 个单元测试、34 个真实 MySQL 集成测试和全仓生产构建通过;8 个 migration 在隔离 lehuo_test 库无待执行项。首次全仓类型检查发现管理端步骤条使用了申请状态名称而非工单状态名称,已改为 ASSIGNED/IN_SERVICE/SERVICE_COMPLETED 并完成最终重跑。

遗留问题:真实微信 AppID/AppSecret、合法 HTTPS 域名和微信环境联调继续按用户安排后期提供;延期能力仍需未来独立评审。视觉真机验收需微信开发者工具环境。


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-13

任务:参考已批准视觉方向重设计微信小程序公众端(不含管理端)。

完成:分析用户提供的前端参考图并按现有 V1 业务边界重构公众端信息架构;建立暖橙主色、语义色、圆角、阴影、字号和间距设计令牌,新增“首页 / 服务 / 公益 / 我的”四栏自定义底部导航;重做首页品牌区、本人/代申请双主任务、六类服务入口、服务进度和公益参与分区;新增服务、公益和个人中心三个聚合页,全部连接现有真实申请、项目、活动、志愿者、协作任务、内容和消息链路;重做项目/活动列表与详情、志愿者中心的卡片层级和适老交互。保留 loading / empty / error / permission-aware 状态,不加入参考图中的公开捐赠交易、证书、培训、团队或虚构业务统计,不修改管理端、API、数据库、认证或权限。

测试:format check、lint、全仓 typecheck、27 个 unit tests、全仓 production build 全部通过;小程序独立 typecheck、3 个 unit tests 和 build 通过。真实 MySQL 集成测试未得到新的完整通过结果:migration 重试两次均被本机 Windows Prisma Schema Engine 启动异常阻止;随后在已迁移的健康 lehuo_test 库直接执行时进入测试但超过 5 分钟工具时限,残留测试进程已按命令行精确结束。本任务无 schema/API/后端变更,上一阶段 34 个集成测试通过基线保持不变,但本次不把超时运行记录为通过。

文档变化:更新小程序 README、UI/UX 规范和本任务状态;未产生新的架构或产品决策,因此不新增 ADR。

遗留问题:本机未定位到微信开发者工具 CLI,且真实 AppID/AppSecret 与微信环境仍按用户计划后期提供,因此未生成开发者工具/真机截图;当前完成代码级视觉对照、类型与构建验证,真机适老化与安全区验收仍需在微信环境执行。项目/活动真实封面继续依赖现有私有对象存储配置,未使用假图片冒充生产内容。

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;不得跳过发布清单或审批。