380 lines
36 KiB
Markdown
380 lines
36 KiB
Markdown
# 10 任务状态(Codex 每次必须维护)
|
||
|
||
> 这是项目“长记忆”的核心文件之一。禁止删除历史,仅更新状态并添加记录。
|
||
|
||
## 当前阶段
|
||
|
||
2026-08-15
|
||
|
||
任务:发布前安全与环境配置加固并重新同步仓库。
|
||
|
||
完成:在既有未提交安全改动基础上完成复核和修正。审计增加原始会话 token 防御性剥离;后台写请求使用精确 Origin 或无 Origin 时的完整 Referer origin 校验,不允许前缀或通配来源;管理 Cookie 仅在 Secure 模式附加 Partitioned,避免本地 HTTP 丢失登录态;私有上传签名由 600 秒缩短到 120 秒;台账导出审计补充关键词条件;数据库启动只记录已完成 migration 数量与最新名称,不把运行时日志冒充待部署校验。小程序开发版保留 localhost 回环调试,体验版/正式版拒绝回环、`0.0.0.0` 和非 HTTPS API,防止不安全发布配置。
|
||
|
||
范围:未修改业务状态机、权限授予、数据库 schema、API 契约或 migration;仅收紧安全边界、审计元数据和环境保护。真实合法 HTTPS 域名仍由用户后期提供,当前未用测试地址冒充生产配置。
|
||
|
||
验证:全仓格式检查、Lint、类型检查、28 个单元测试、38 个真实 MySQL 集成测试和生产构建全部通过;测试库 12 个 migration 无待执行项,小程序 28 个页面完整性门禁与运行时 workspace 导入门禁通过。
|
||
|
||
遗留:仍需在真实 HTTPS 域名和微信体验版/正式版环境验证 API 地址保护、Secure Cookie、反向代理 Origin/Referer 透传及 120 秒上传窗口;staging、UAT 和 production deployment 保持未完成。
|
||
|
||
---
|
||
|
||
2026-08-15
|
||
|
||
任务:小程序首页主功能区与便捷入口调整。
|
||
|
||
完成:在首页“帮扶服务”下方将次级功能区调整为 3×2 六宫格,保留志愿服务、公益项目、公益动态和旧物善用,新增财务公开与服务进度;财务公开连接既有公开文档列表,服务进度连接本人帮扶服务列表。服务进度从便捷入口上移以避免重复,便捷入口取消旧物善用,当前仅保留公益活动及按权限显示的协作任务。未删除旧物善用模块或其首页主功能入口。
|
||
|
||
范围:仅调整小程序首页入口信息架构、WXML/WXSS 与既有页面导航;未新增空白占位页面、API、数据库、权限、状态机或 migration。财务公开、服务进度和旧物善用继续沿用既有真实业务与访问控制。
|
||
|
||
验证:全仓格式检查、Lint、类型检查、28 个单元测试、38 个真实 MySQL 集成测试和生产构建全部通过;测试库 12 个 migration 无待执行项。小程序页面完整性门禁通过 28 个页面,运行时 workspace 导入门禁通过。新增 D-023。
|
||
|
||
遗留:需要用户在微信开发者工具清缓存重新编译,并真机确认 3×2 六宫格在常见屏幕宽度下的间距、文字与点击效果。真实微信、HTTPS 域名和生产环境联调仍按生产就绪计划后期提供。
|
||
|
||
---
|
||
|
||
2026-08-15
|
||
|
||
任务:小程序首页栏目收敛与“帮扶服务”公众端改名。
|
||
|
||
完成:首页移除关爱老人、困境儿童、妇女帮扶和残障救助四个重复分类按钮,将栏目重排为一个带说明的高权重“帮扶服务”主入口与志愿服务、公益项目、公益动态、旧物善用四个次级入口;首页 Hero、帮扶表单、提交成功、我的帮扶服务、详情、服务聚合页和个人中心公众文案完成统一。服务聚合页分类代码修正为六个共享契约真实值,避免妇女、儿童和生活困难入口无法预选。为困境妇女、儿童关爱、生活困难和其他服务分别生成并压缩四张 900×675 本地 JPG 场景图,申请选择页按六个分类逐一显示图片,不再出现文字占位图。
|
||
|
||
范围:仅调整小程序公众信息架构、文案、样式和本地视觉素材。内部 `ServiceApplication` API、数据库、状态机、权限和管理端业务名称保持不变;AI 生成人物和场景仅作分类识别,不作为真实服务对象、服务过程或公益成果证据。未新增接口、migration 或业务范围。
|
||
|
||
验证:全仓格式检查、Lint、类型检查、28 个单元测试、38 个真实 MySQL 集成测试和生产构建全部通过;测试库 12 个 migration 无待执行项。小程序页面完整性门禁通过 28 个页面,运行时 workspace 导入门禁通过;四张新增图片均压缩至约 61–74 kB。新增 D-022。
|
||
|
||
遗留:需要用户在微信开发者工具清缓存重新编译,并真机确认首页新栏目在常见屏幕宽度下的视觉层级、四张分类图裁切和公众文案。真实微信、HTTPS 域名和生产环境联调仍按生产就绪计划后期提供。
|
||
|
||
---
|
||
|
||
2026-08-15
|
||
|
||
任务:旧物善用独立模块 Phase 3 电子荣誉证书与公益荣誉积分。
|
||
|
||
完成:新增不可变证书/积分规则版本、电子证书快照、积分账户和只追加积分流水;捐赠直接完成或关联台账落地时,在同一事务自动生成证书、按品类和单笔上限计分并写审计。默认每件 1 分、单笔最多 500 分。管理端新增规则激活与证书预览、完成捐赠补发、证书历史/撤销、积分账户和有理由人工校正;规则变更不改历史证书,补发撤销但保留旧证书,校正使用 revision 且不允许负余额。小程序新增证书与荣誉积分总览、只追加流水和本人证书详情,并从模块主页与捐赠详情接入。
|
||
|
||
范围:积分仅为公益荣誉记录,不具有现金价值,不支持兑换、购买、转让、提现、到期或排行;证书不是捐赠收据、税务凭证或财产权利证明。不新增现金捐赠、支付、自动扣款或第三方物流。既有已完成捐赠不自动批量回填,避免未经核实改写历史;授权人员可依据真实完成记录补发证书,积分补录只能通过有理由审计流水。
|
||
|
||
验证:Phase 3 migration 已部署到专用 `lehuo_test`,共 12 个 migration,重复 deploy 无待执行项;全仓格式检查、Lint、类型检查、28 个单元测试、38 个真实 MySQL 集成测试和生产构建全部通过。新增集成覆盖规则激活幂等、品类计分和单笔上限、完成时自动发证计分、本人资源隔离、他人证书读取拒绝、积分校正幂等、负余额拒绝、证书补发/撤销和审计;小程序页面完整性门禁通过 28 个页面,运行时 workspace 导入门禁通过。npm 官方 Low 级别依赖审计无已知漏洞。新增 D-021。
|
||
|
||
遗留:仍需在微信开发者工具和真机验收证书排版、长文本及不同屏幕尺寸;正式证书法律文案、机构签章/品牌素材如需替换,后续通过新规则版本发布。真实微信 AppID/AppSecret、合法 HTTPS 域名、生产对象存储和真实环境联调仍按生产就绪计划后期提供。
|
||
|
||
---
|
||
|
||
2026-08-15
|
||
|
||
任务:旧物善用独立模块 Phase 2 物资全流程台账。
|
||
|
||
完成:新增独立物资导入批次、物资台账和只追加流转事件模型,完成手工入库、最多 500 行原子批量入库、在库/分拣/消毒/出库/帮扶落地严格状态机、物资需求/受助对象/帮扶区域绑定、完整详情、revision 乐观锁、幂等重放、加密备注、事务审计和需求/捐赠完成同步。管理端新增台账页、固定格式 `.xlsx` 模板下载、本地解析与强校验、Excel 导出、打印专用版式和详情推进;小程序捐赠详情新增脱敏物资溯源。新增四项独立权限,导出不含个人字段或内部备注。
|
||
|
||
范围:仅完成 D-019 已批准的 Phase 2。未实现证书、积分、现金捐赠、支付、自动扣款或第三方物流。原始 Excel 不上传或持久化;异常修正不允许覆盖历史,法务数据保留期限和正式修正流程继续列为生产人工确认项。
|
||
|
||
验证:Phase 2 migration 已部署到专用 `lehuo_test`,共 11 个 migration,最终重复 deploy 无待执行项;全仓格式检查、Lint、类型检查、28 个单元测试、38 个真实 MySQL 集成测试和生产构建全部通过。新增用例覆盖手工入库幂等、禁止跳级、完整五节点状态机、原子批量导入重放、最小化导出和审计;小程序页面完整性门禁通过 26 个页面,运行时 workspace 导入门禁通过。ExcelJS 改为按需加载,管理端首屏 JS 为 241.79 kB;npm 官方 Low 级别依赖审计最终无已知漏洞。
|
||
|
||
遗留:仍需用微信开发者工具/真机和实际机构 Excel 样本做视觉及兼容验收;真实微信、HTTPS 域名、生产对象存储和法务数据保留期限仍按生产就绪计划后期提供。Phase 3 证书积分等待下一步明确指令。
|
||
|
||
---
|
||
|
||
2026-08-15
|
||
|
||
任务:旧物善用独立模块 Phase 1 核心捐赠闭环。
|
||
|
||
完成:依据用户四项明确批准新增 D-019 与独立旧物善用域,不包含现金捐赠或任何支付。小程序首页及个人中心增加入口,完成模块主页、真实统计、物资需求、定向捐赠、最多六图、上门取件/定点投递、我的记录、详情溯源和规范指南;公益动态复用既有审核发布内容。管理端新增一级入口及订单审核、人工取件人员选择、状态处理、私有图片短期预览、需求草稿/发布/下架、投递点维护和后续阶段预留说明。后端新增三项权限、随机公开 ID/非连续公益编号、敏感字段加密、域隔离手机号 HMAC、私有对象存储、本人资源隔离、管理端敏感读取审计、创建/状态幂等、revision 乐观锁、事务状态历史和真实事实统计。
|
||
|
||
范围:本次只完成已批准的第一阶段。物资入库/分拣/消毒/出库全流程台账与 Excel 导入导出打印留到 Phase 2;证书和积分留到 Phase 3;不接第三方物流,取件由后台人工分配。未加入现金捐赠、微信/支付宝/银行卡支付或自动扣款,也未用模拟数据冒充业务事实。
|
||
|
||
验证:新增 migration 已部署到专用 `lehuo_test`,共 10 个 migration,重复 deploy 无待执行项;Lint、全仓类型检查、28 个单元测试、37 个真实 MySQL 集成测试、格式检查和全仓生产构建通过。新增旧物闭环集成测试覆盖需求发布、定向捐赠幂等、人工分配、接收、分拣、完成、需求数量更新、事实统计、不可变历史和审计。npm 官方高危依赖审计无已知漏洞。
|
||
|
||
遗留:真实微信 AppID/AppSecret、合法 HTTPS 域名、生产私有对象存储 Bucket/CORS 和微信开发者工具真机视觉/上传验收仍按既有计划后期提供。Phase 2/3 必须等待下一步指令,不得提前实施。
|
||
|
||
---
|
||
|
||
2026-08-13
|
||
|
||
任务:财务公开文档发布模块。
|
||
|
||
完成:按用户确认的简化范围新增独立财务公开模块。管理后台支持新建空白文档、导入 10MB 内 `.docx`、编辑标题/摘要/置顶/排序、基础富文本排版、小程序宽度预览、保存草稿、直接发布和归档;小程序“公益”页增加财务公开入口,完成公开列表、详情、宽表横向阅读、空状态和错误状态。新增共享契约、`financial_disclosures` 与只追加状态历史、三项独立权限、随机公开 ID、创建/状态幂等、revision 乐观锁、发布/归档事务审计,以及管理端 DOMPurify + API sanitize-html 双层富文本白名单清洗。已发布内容禁止原地覆盖编辑。
|
||
|
||
范围:这是用户明确批准的新增模块,但不改变 D-017 对支付和公开募捐的排除。首版不保存原 DOCX、不提供结构化收支字段、财务核算、复杂审批、支付、捐赠订单、银行流水同步或金额统计。Word 复杂浮动对象、页眉页脚和高级分页样式可能简化,发布前必须人工预览。
|
||
|
||
验证:格式化、Lint、全仓类型检查和 28 个单元测试通过;新增 migration 已部署到专用 `lehuo_test`,共 9 个 migration;36 个真实 MySQL 集成测试全部通过,覆盖草稿隔离、危险富文本清洗、发布可见、发布后禁止覆盖、归档隐藏、状态历史和审计;小程序页面门禁通过 20 个页面,运行时 workspace 导入门禁通过;全仓生产构建通过。新增 D-018。
|
||
|
||
遗留:仍需在微信开发者工具清缓存重新编译并进行真机财务公开列表/详情视觉验收;需用机构实际 DOCX 样本确认复杂表格和排版还原度。真实微信 AppID/AppSecret、合法 HTTPS 域名和生产环境配置仍按既有计划后期提供。
|
||
|
||
---
|
||
|
||
2026-08-13
|
||
|
||
任务:微信真机二级页面白屏修复。
|
||
|
||
根因:服务申请和协作任务详情/服务记录页面在运行时从 workspace 包 `@lehuo/contracts` 导入业务常量。现有小程序工程没有生成 `miniprogram_npm`,常规 TypeScript 检查会擦除类型导入并通过,但真机无法解析运行时 workspace 模块,导致页面脚本在 `Page()` 注册前终止并显示空白。另发现内容详情使用非小程序原生 `article` 标签、项目详情使用 `strong` 标签,以及详情页缺少路由参数时可能持续处于加载状态。
|
||
|
||
完成:将申请方式、服务分类和服务记录类型的真机运行时字典迁入小程序本地模块,继续用共享契约类型做编译约束;API 地址改为按请求动态读取,并安全兼容空存储值;服务申请在服务分类接口暂不可用时展示本地批准分类与明确连接提示,不再出现无内容页面;项目、活动和内容详情补充缺少参数的恢复状态;替换不受支持的 WXML 标签。新增页面完整性门禁和运行时 workspace 导入门禁,校验 18 个页面四件套、静态路由注册、WXML 标签和真机运行依赖,纳入小程序 typecheck/build。
|
||
|
||
范围:未新增模拟业务数据、未绕过认证/权限/审计;本地服务分类仅用于表单可见与选择,最终提交仍调用真实 API。服务对象档案和服务记录继续只对获得 `assigned_cases:read` 权限且被指派的人员展示最小必要数据。
|
||
|
||
验证:格式检查、Lint、全仓类型、27 个单元测试、34 个真实 MySQL 集成测试和全仓生产构建通过;新增页面完整性门禁通过 18 个页面,运行时 workspace 导入门禁通过。8 个 migration 在隔离 `lehuo_test` 库无待执行项。仍需用户在微信开发者工具执行“清缓存并重新编译”,再进行真机二级页面复验。
|
||
|
||
---
|
||
|
||
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:工程初始化
|
||
|
||
- [x] 建立 monorepo
|
||
- [x] 建立 miniprogram
|
||
- [x] 建立 admin-web
|
||
- [x] 建立 api
|
||
- [x] 建立 shared contracts
|
||
- [x] Docker Compose 本地环境
|
||
- [x] MySQL / Redis / MinIO
|
||
- [x] ESLint / Prettier / TSConfig
|
||
- [x] CI
|
||
- [x] health check
|
||
- [x] 环境变量模板
|
||
- [x] AGENTS.md
|
||
|
||
### Phase 1:认证与权限
|
||
|
||
- [x] 微信登录
|
||
- [x] 后台登录
|
||
- [x] user
|
||
- [x] RBAC
|
||
- [x] resource policy
|
||
- [x] audit baseline
|
||
|
||
### Phase 2:服务申请
|
||
|
||
- [x] 服务分类
|
||
- [x] 本人申请
|
||
- [x] 代申请
|
||
- [x] 我的申请
|
||
- [x] 状态历史
|
||
- [x] 防重复提交
|
||
- [x] 后台申请列表/详情
|
||
|
||
### Phase 3:服务对象与工单
|
||
|
||
- [x] beneficiary 档案
|
||
- [x] 联系人/监护人
|
||
- [x] 标签
|
||
- [x] 工单
|
||
- [x] 分配工作人员
|
||
- [x] 志愿者协作
|
||
- [x] 服务记录
|
||
- [x] 附件
|
||
|
||
### Phase 4:回访闭环
|
||
|
||
- [x] 回访任务
|
||
- [x] 自动创建
|
||
- [x] 完成回访
|
||
- [x] 继续帮扶
|
||
- [x] 工作台待办
|
||
|
||
### Phase 5:公益项目/活动/志愿者
|
||
|
||
- [x] 项目 CRUD/发布
|
||
- [x] 活动
|
||
- [x] 活动报名
|
||
- [x] 志愿者申请/审核
|
||
- [x] 服务时长
|
||
|
||
### Phase 6:内容与通知
|
||
|
||
- [x] 公益动态
|
||
- [x] 机构介绍
|
||
- [x] 内容审核状态
|
||
- [x] 站内消息
|
||
- [x] 微信订阅通知 Adapter
|
||
|
||
### Phase 7:统计、安全与上线
|
||
|
||
- [x] 基础统计
|
||
- [x] 导出
|
||
- [x] 权限扫描
|
||
- [x] 安全测试
|
||
- [x] 备份恢复
|
||
- [ ] staging
|
||
- [ ] UAT
|
||
- [ ] production deployment
|
||
|
||
---
|
||
|
||
## 当前正在处理
|
||
|
||
发布前安全与环境配置加固已完成代码和自动化验证,等待同步远程仓库及后续真实环境验收。原 Phase 7 的 staging、UAT 和 production deployment 仍需真实环境、微信配置、合规材料及人工审批,保持未完成;当前不得宣称已生产上线。
|
||
|
||
---
|
||
|
||
## 最近完成记录
|
||
|
||
格式:
|
||
|
||
```text
|
||
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 认证、权限或业务功能。
|
||
|
||
---
|
||
|
||
## 已知问题
|
||
|
||
无已知本次首页入口调整代码问题。首页 3×2 六宫格、四张帮扶分类图片的缩略裁切及公众文案仍需微信开发者工具和真机做最终视觉验收;生产阻断项和人工配置见 `17_PRODUCTION_READINESS_PLAN.md`。
|
||
|
||
---
|
||
|
||
## 下一步
|
||
|
||
等待用户在微信开发者工具清缓存重新编译并真机验收首页 3×2 六宫格、财务公开与服务进度入口、便捷入口精简、帮扶服务六分类图片及相关公众文案。生产发布仍需依次执行 staging 全闭环、非开发人员 UAT、真实微信联调和 production deployment,不得跳过发布清单或审批。
|