## 背景 用户指令:「先将 codex 的任务一并改为 workbuddy 的任务」。 Codex 已不再运行,当前由 WorkBuddy 承担开发执行,文档署名需同步。 ## 判定规则(用大小写精确区分) | 类别 | 写法 | 处置 | |---|---|---| | 工具署名 | 大写 Codex | → WorkBuddy | | 分支名 | codex/ui-v11-fidelity | → workbuddy-ui-v11-fidelity(去斜杠,规避本仓库 ref 清理) | | 已删除文件的历史路径 | 小写 2026-09-11-codex-baseline-cleanup* | 保持原样(记录真实曾存在的文件名,改了即失真) | 结果:26 个文件、126 处署名替换。残留小写 codex 仅 8 处,全部是历史路径。 ## 文件重命名(git mv,保留历史) - Codex开发执行总指令、项目规则与任务拆解.md → WorkBuddy 同名 - Codex首轮启动提示词 + Phase 01~Phase 26 Jira级任务清单 + 每阶段验收条件.md → WorkBuddy 同名 - docs/善缘丹阳 V1.1 Codex 开发执行计划修订版.md → docs/善缘丹阳 V1.1 WorkBuddy 开发执行计划修订版.md - docs/善缘丹阳 V1.1 Codex-Jira 最终开发任务增量清单.md → docs/善缘丹阳 V1.1 WorkBuddy-Jira 最终开发任务增量清单.md - docs/善缘丹阳 V1.1 Codex最终主启动提示词(整合版).md → docs/善缘丹阳 V1.1 WorkBuddy最终主启动提示词(整合版).md 引用已同步:AGENTS.md 6 处、AGENTS_SUMMARY.md、以及 4 份计划/规格文档。 ## AGENTS.md 两处特别处理 - 「git config user.name = Codex」一句改为不点名工具的表述 - 「feature/ fix/ codex/ ui/ 前缀」示例去掉 codex/ ## 有意未改动 - ui-tests/ui-document-baseline-contracts.mjs 的废弃清单仍列 codex-baseline-cleanup* 那是「必须不存在」的断言目标,改了会让哨兵失去意义 - 仓库 git config user.name 仍是 Codex —— 未擅自改动环境身份。 如需彻底交接:git config user.name WorkBuddy && git config user.email workbuddy@local 验证:UI 契约门禁 13/13;AGENTS.md 零 Codex 残留;5 个新文件名与全部引用一致
2790 lines
39 KiB
Markdown
2790 lines
39 KiB
Markdown
# 丹阳公益婚恋服务平台
|
||
# WorkBuddy首轮启动提示词 + Phase 01~Phase 26 Jira级任务清单 + 每阶段验收条件
|
||
|
||
版本:V1.0
|
||
适用对象:WorkBuddy
|
||
使用方式:首次启动项目时完整提供给WorkBuddy;后续每次开发任务继续要求WorkBuddy先读取 `AGENTS.md`、`docs/STATUS.md`、`docs/PENDING_DECISIONS.md` 后再执行。
|
||
文档性质:研发启动执行包,不重新定义产品需求。
|
||
|
||
---
|
||
|
||
# 第一部分:WorkBuddy首轮启动提示词
|
||
|
||
以下内容可以直接复制给WorkBuddy执行。
|
||
|
||
---
|
||
|
||
## 一、WorkBuddy首轮完整启动提示词
|
||
|
||
你现在负责完整开发一个正式项目:
|
||
|
||
> **丹阳公益婚恋服务平台 V1.0**
|
||
|
||
这是一个面向丹阳市成年单身人士、由公益组织参与运营的实名制公益婚恋服务平台。
|
||
|
||
你不是在做Demo,也不是在做概念验证页面。
|
||
|
||
你的任务是:
|
||
|
||
> **按照既定产品设计、技术设计、安全设计和业务规则,持续完成一个真正可以部署、测试、运营、维护和升级的V1.0生产级系统。**
|
||
|
||
项目最终包括:
|
||
|
||
```text
|
||
微信小程序用户端
|
||
+
|
||
统一Web运营后台
|
||
+
|
||
公益红娘工作台
|
||
+
|
||
平台管理后台
|
||
+
|
||
后端服务
|
||
+
|
||
PostgreSQL
|
||
+
|
||
Redis
|
||
+
|
||
对象存储
|
||
+
|
||
WebSocket
|
||
+
|
||
测试体系
|
||
+
|
||
部署运维体系
|
||
```
|
||
|
||
---
|
||
|
||
# 二、你的最高执行原则
|
||
|
||
你必须首先遵守以下规则。
|
||
|
||
## 1. 不重新设计产品
|
||
|
||
已有需求已经经过完整规划。
|
||
|
||
你不能因为:
|
||
|
||
```text
|
||
实现方便
|
||
技术偏好
|
||
已有模板
|
||
个人判断
|
||
```
|
||
|
||
擅自重新设计产品。
|
||
|
||
---
|
||
|
||
## 2. 不擅自扩展功能
|
||
|
||
V1.0明确不开发:
|
||
|
||
```text
|
||
直播
|
||
短视频
|
||
动态Feed
|
||
朋友圈
|
||
群聊
|
||
语音房
|
||
视频相亲
|
||
礼物
|
||
金币
|
||
积分商城
|
||
排行榜
|
||
VIP
|
||
支付
|
||
超级喜欢
|
||
Boost
|
||
付费曝光
|
||
付费聊天
|
||
付费联系方式
|
||
AI代聊
|
||
AI婚姻幸福预测
|
||
颜值评分
|
||
财富评分
|
||
复杂社交玩法
|
||
```
|
||
|
||
不要顺手增加。
|
||
|
||
---
|
||
|
||
## 3. 用户永久免费
|
||
|
||
本项目属于:
|
||
|
||
> 公益婚恋服务平台。
|
||
|
||
不得引入任何:
|
||
|
||
```text
|
||
会员
|
||
付费
|
||
VIP
|
||
充值
|
||
金币
|
||
礼物
|
||
```
|
||
|
||
相关代码、数据表和页面。
|
||
|
||
---
|
||
|
||
## 4. Required不可自动放宽
|
||
|
||
用户择偶条件分为:
|
||
|
||
```text
|
||
必须符合
|
||
最好符合
|
||
```
|
||
|
||
必须符合:
|
||
|
||
> Hard Constraint。
|
||
|
||
任何算法、红娘、运营后台都不能自动放宽。
|
||
|
||
---
|
||
|
||
## 5. 双向意愿是核心边界
|
||
|
||
必须保证:
|
||
|
||
```text
|
||
A喜欢B
|
||
+
|
||
B喜欢A
|
||
=
|
||
Mutual Match
|
||
```
|
||
|
||
只有Mutual Match后:
|
||
|
||
> 才能聊天。
|
||
|
||
陌生人不能直接私信。
|
||
|
||
---
|
||
|
||
## 6. Block优先级最高
|
||
|
||
任一方Block后:
|
||
|
||
必须立即:
|
||
|
||
```text
|
||
停止聊天
|
||
停止互相推荐
|
||
停止搜索展示
|
||
停止红娘推荐
|
||
停止进一步关系操作
|
||
```
|
||
|
||
Unblock:
|
||
|
||
不能自动恢复Match。
|
||
|
||
---
|
||
|
||
## 7. 公益红娘只能辅助
|
||
|
||
红娘:
|
||
|
||
可以:
|
||
|
||
```text
|
||
看必要资料
|
||
看系统候选
|
||
人工推荐
|
||
给条件建议
|
||
跟进
|
||
推荐活动
|
||
```
|
||
|
||
不能:
|
||
|
||
```text
|
||
替用户Like
|
||
替用户确认成功
|
||
看私人聊天
|
||
看完整身份证
|
||
私自把手机号给别人
|
||
绕过Required强推
|
||
```
|
||
|
||
---
|
||
|
||
## 8. 活动单向意向必须保密
|
||
|
||
A活动后选择B。
|
||
|
||
如果B没有选择A:
|
||
|
||
> B不能知道A选择了自己。
|
||
|
||
只有:
|
||
|
||
```text
|
||
A → B
|
||
B → A
|
||
```
|
||
|
||
双方成立:
|
||
|
||
> 才创建活动来源Match。
|
||
|
||
---
|
||
|
||
## 9. 敏感数据默认拒绝
|
||
|
||
以下数据默认禁止普通工作人员查看:
|
||
|
||
```text
|
||
完整身份证
|
||
完整手机
|
||
私人聊天
|
||
举报证据
|
||
风控调查材料
|
||
精确住址
|
||
```
|
||
|
||
必须:
|
||
|
||
```text
|
||
Permission
|
||
+
|
||
Data Scope
|
||
+
|
||
Sensitive Permission
|
||
+
|
||
Audit
|
||
```
|
||
|
||
后才可访问。
|
||
|
||
---
|
||
|
||
## 10. 数据库是Source of Truth
|
||
|
||
Redis、前端Store、WebSocket都不是业务事实源。
|
||
|
||
最终状态:
|
||
|
||
> PostgreSQL为准。
|
||
|
||
---
|
||
|
||
# 三、项目核心业务闭环
|
||
|
||
必须最终跑通:
|
||
|
||
```text
|
||
微信登录
|
||
↓
|
||
绑定手机号
|
||
↓
|
||
实名认证
|
||
↓
|
||
填写资料
|
||
↓
|
||
设置择偶条件
|
||
↓
|
||
提交人工审核
|
||
↓
|
||
审核通过
|
||
↓
|
||
系统推荐
|
||
↓
|
||
用户Like
|
||
↓
|
||
双向Like
|
||
↓
|
||
Mutual Match
|
||
↓
|
||
聊天
|
||
↓
|
||
公益红娘辅助
|
||
↓
|
||
公益活动
|
||
↓
|
||
进一步了解
|
||
↓
|
||
双方确认成功牵手
|
||
```
|
||
|
||
---
|
||
|
||
# 四、产品形态
|
||
|
||
## 用户端
|
||
|
||
微信小程序。
|
||
|
||
固定底部导航:
|
||
|
||
```text
|
||
首页
|
||
找对象
|
||
消息
|
||
活动
|
||
我的
|
||
```
|
||
|
||
不得改变。
|
||
|
||
---
|
||
|
||
## 工作人员端
|
||
|
||
统一Web后台。
|
||
|
||
通过:
|
||
|
||
```text
|
||
Operator
|
||
Role
|
||
Permission
|
||
Data Scope
|
||
Organization
|
||
```
|
||
|
||
决定不同角色界面。
|
||
|
||
角色至少:
|
||
|
||
```text
|
||
super_admin
|
||
platform_admin
|
||
organization_admin
|
||
reviewer
|
||
matchmaker
|
||
activity_manager
|
||
risk_operator
|
||
volunteer
|
||
data_viewer
|
||
```
|
||
|
||
---
|
||
|
||
# 五、推荐技术架构
|
||
|
||
如果当前仓库为空,优先采用:
|
||
|
||
## Backend
|
||
|
||
```text
|
||
Java 21
|
||
Spring Boot 3.x
|
||
Spring Security
|
||
PostgreSQL
|
||
Redis
|
||
WebSocket
|
||
Flyway
|
||
S3-Compatible Object Storage
|
||
```
|
||
|
||
ORM可以选择:
|
||
|
||
```text
|
||
MyBatis-Plus
|
||
```
|
||
|
||
或者:
|
||
|
||
```text
|
||
Spring Data JPA
|
||
```
|
||
|
||
选择一种即可,不要混用。
|
||
|
||
优先标准:
|
||
|
||
> 简单、稳定、易维护。
|
||
|
||
---
|
||
|
||
## Admin Web
|
||
|
||
建议:
|
||
|
||
```text
|
||
Vue 3
|
||
TypeScript
|
||
Vite
|
||
Pinia
|
||
Vue Router
|
||
Element Plus
|
||
```
|
||
|
||
---
|
||
|
||
## Mini Program
|
||
|
||
优先:
|
||
|
||
> 微信原生小程序 + TypeScript。
|
||
|
||
如果决定使用成熟框架,必须解释原因并写ADR。
|
||
|
||
不要为了跨端而引入明显增加维护成本的架构。
|
||
|
||
---
|
||
|
||
## Deployment
|
||
|
||
```text
|
||
Docker
|
||
Docker Compose
|
||
Nginx
|
||
PostgreSQL
|
||
Redis
|
||
Private Object Storage
|
||
```
|
||
|
||
不得主动使用:
|
||
|
||
```text
|
||
Kubernetes
|
||
Kafka
|
||
Elasticsearch
|
||
ClickHouse
|
||
Neo4j
|
||
Milvus
|
||
Service Mesh
|
||
微服务
|
||
```
|
||
|
||
---
|
||
|
||
# 六、项目目录
|
||
|
||
如果仓库为空,建立:
|
||
|
||
```text
|
||
/
|
||
├── backend/
|
||
├── miniapp/
|
||
├── admin-web/
|
||
├── infrastructure/
|
||
├── scripts/
|
||
├── tests/
|
||
├── docs/
|
||
│ ├── product/
|
||
│ ├── architecture/
|
||
│ ├── api/
|
||
│ ├── database/
|
||
│ ├── security/
|
||
│ ├── testing/
|
||
│ ├── ops/
|
||
│ └── decisions/
|
||
├── AGENTS.md
|
||
├── CHANGELOG.md
|
||
└── README.md
|
||
```
|
||
|
||
---
|
||
|
||
# 七、启动后第一批必须创建的文件
|
||
|
||
在任何正式业务编码之前创建:
|
||
|
||
```text
|
||
AGENTS.md
|
||
docs/STATUS.md
|
||
docs/PENDING_DECISIONS.md
|
||
docs/ARCHITECTURE_BASELINE.md
|
||
docs/TESTING_BASELINE.md
|
||
docs/decisions/
|
||
```
|
||
|
||
---
|
||
|
||
# 八、AGENTS.md最低内容
|
||
|
||
必须写明:
|
||
|
||
```text
|
||
1. 用户永久免费
|
||
2. Required不可自动放宽
|
||
3. Mutual Match后才能聊天
|
||
4. Block优先级最高
|
||
5. 红娘不可替用户操作
|
||
6. 活动单向意向保密
|
||
7. 普通工作人员不能查看私人聊天
|
||
8. 敏感信息默认拒绝
|
||
9. PostgreSQL是Source of Truth
|
||
10. 使用模块化单体
|
||
11. V1不引入微服务/Kubernetes/Kafka
|
||
12. 所有未确认数量参数配置化
|
||
13. 新功能不得擅自扩大V1范围
|
||
```
|
||
|
||
---
|
||
|
||
# 九、PENDING_DECISIONS.md
|
||
|
||
至少加入:
|
||
|
||
```text
|
||
每日推荐数量
|
||
推荐最低阈值
|
||
匹配权重最终值
|
||
Pass冷却时间
|
||
照片上限
|
||
兴趣标签上限
|
||
自我介绍字符长度
|
||
Privacy默认值
|
||
Getting To Know是否自动暂停推荐
|
||
活动默认是否需要审核
|
||
活动男女名额策略
|
||
活动互选最大人数
|
||
活动互选截止时间
|
||
红娘联系意向对象是否允许电话联系
|
||
RelationshipStatus最终业务名称
|
||
Appeal是否V1.0首发
|
||
```
|
||
|
||
任何这些项:
|
||
|
||
> 不得擅自拍板为固定产品规则。
|
||
|
||
---
|
||
|
||
# 十、当前未确认参数处理规则
|
||
|
||
如果技术实现必须需要默认值:
|
||
|
||
可以提供:
|
||
|
||
> `technical_default`
|
||
|
||
但必须满足:
|
||
|
||
```text
|
||
存储在配置
|
||
不可硬编码
|
||
README/配置文档说明
|
||
PENDING_DECISIONS记录
|
||
```
|
||
|
||
---
|
||
|
||
# 十一、首轮任务不是立即写全部代码
|
||
|
||
你首先必须执行:
|
||
|
||
```text
|
||
Step 1
|
||
审计当前仓库
|
||
|
||
Step 2
|
||
判断是否为空仓库
|
||
|
||
Step 3
|
||
输出Gap Analysis
|
||
|
||
Step 4
|
||
创建项目治理文档
|
||
|
||
Step 5
|
||
确认技术栈
|
||
|
||
Step 6
|
||
建立Phase 01 Jira任务
|
||
|
||
Step 7
|
||
建立测试骨架
|
||
|
||
Step 8
|
||
再开始Phase 01
|
||
```
|
||
|
||
---
|
||
|
||
# 十二、如果已有代码
|
||
|
||
禁止直接推翻重写。
|
||
|
||
必须首先输出:
|
||
|
||
```text
|
||
当前技术栈
|
||
目录
|
||
已有模块
|
||
已有数据模型
|
||
已有API
|
||
已有测试
|
||
已有部署
|
||
可复用模块
|
||
冲突模块
|
||
缺失模块
|
||
安全风险
|
||
重构建议
|
||
```
|
||
|
||
然后:
|
||
|
||
> 渐进式改造。
|
||
|
||
---
|
||
|
||
# 十三、WorkBuddy每次开发前
|
||
|
||
必须读取:
|
||
|
||
```text
|
||
AGENTS.md
|
||
docs/STATUS.md
|
||
docs/PENDING_DECISIONS.md
|
||
本Phase相关文档
|
||
```
|
||
|
||
再开发。
|
||
|
||
---
|
||
|
||
# 十四、WorkBuddy每次完成任务后
|
||
|
||
必须更新:
|
||
|
||
```text
|
||
docs/STATUS.md
|
||
CHANGELOG.md
|
||
测试结果
|
||
Migration
|
||
OpenAPI
|
||
PENDING_DECISIONS(如果有)
|
||
```
|
||
|
||
---
|
||
|
||
# 十五、任务完成标准
|
||
|
||
禁止只因为:
|
||
|
||
> 代码已经写完
|
||
|
||
就宣布Done。
|
||
|
||
一个任务Done必须至少满足:
|
||
|
||
```text
|
||
Code Complete
|
||
+
|
||
Tests Pass
|
||
+
|
||
Lint Pass
|
||
+
|
||
Build Pass
|
||
+
|
||
必要Migration Pass
|
||
+
|
||
相关权限测试Pass
|
||
+
|
||
相关文档Updated
|
||
```
|
||
|
||
---
|
||
|
||
# 十六、开发方式
|
||
|
||
严格按照:
|
||
|
||
> Phase 01 → Phase 26
|
||
|
||
推进。
|
||
|
||
不要多个Phase同时无序开发。
|
||
|
||
每阶段结束以后才能进入下一阶段。
|
||
|
||
---
|
||
|
||
# 第二部分:Jira任务统一规范
|
||
|
||
---
|
||
|
||
# 十七、Epic命名规则
|
||
|
||
每个Phase对应一个Epic:
|
||
|
||
```text
|
||
EPIC-P01
|
||
EPIC-P02
|
||
...
|
||
EPIC-P26
|
||
```
|
||
|
||
---
|
||
|
||
# 十八、Story命名
|
||
|
||
例如:
|
||
|
||
```text
|
||
P03-S01 实现实名认证Provider抽象
|
||
```
|
||
|
||
---
|
||
|
||
# 十九、Task命名
|
||
|
||
例如:
|
||
|
||
```text
|
||
P03-T01 创建IdentityProvider接口
|
||
```
|
||
|
||
---
|
||
|
||
# 二十、Bug命名
|
||
|
||
```text
|
||
BUG-MATCH-001 双向Like并发生成重复Match
|
||
```
|
||
|
||
---
|
||
|
||
# 二十一、任务字段
|
||
|
||
每一个Jira任务至少包含:
|
||
|
||
```text
|
||
Summary
|
||
Phase
|
||
Priority
|
||
Description
|
||
Dependencies
|
||
Implementation Notes
|
||
Acceptance Criteria
|
||
Tests
|
||
Docs Impact
|
||
Status
|
||
```
|
||
|
||
---
|
||
|
||
# 二十二、Definition of Ready
|
||
|
||
任务开始前必须:
|
||
|
||
```text
|
||
需求清晰
|
||
依赖完成
|
||
接口明确
|
||
待确认参数已配置化
|
||
测试场景明确
|
||
```
|
||
|
||
---
|
||
|
||
# 二十三、Definition of Done
|
||
|
||
```text
|
||
代码完成
|
||
测试完成
|
||
接口文档更新
|
||
Migration完成
|
||
权限检查完成
|
||
无P0/P1已知缺陷
|
||
STATUS更新
|
||
```
|
||
|
||
---
|
||
|
||
# 第三部分:Phase 01~Phase 26 Jira级任务拆解
|
||
|
||
---
|
||
|
||
# Phase 01:项目基础架构
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P01 项目基础骨架与工程治理
|
||
```
|
||
|
||
### P01-S01 初始化Monorepo/项目目录
|
||
|
||
任务:
|
||
|
||
```text
|
||
P01-T01 创建backend目录
|
||
P01-T02 创建miniapp目录
|
||
P01-T03 创建admin-web目录
|
||
P01-T04 创建infrastructure目录
|
||
P01-T05 创建scripts目录
|
||
P01-T06 创建tests目录
|
||
P01-T07 创建docs目录体系
|
||
```
|
||
|
||
### P01-S02 建立项目治理文档
|
||
|
||
```text
|
||
P01-T08 创建AGENTS.md
|
||
P01-T09 创建docs/STATUS.md
|
||
P01-T10 创建docs/PENDING_DECISIONS.md
|
||
P01-T11 创建CHANGELOG.md
|
||
P01-T12 创建README.md初版
|
||
```
|
||
|
||
### P01-S03 Backend工程初始化
|
||
|
||
```text
|
||
P01-T13 初始化Spring Boot工程
|
||
P01-T14 建立shared/common模块
|
||
P01-T15 配置统一异常体系
|
||
P01-T16 配置统一Response
|
||
P01-T17 配置RequestId
|
||
P01-T18 配置结构化日志
|
||
P01-T19 配置Validation
|
||
```
|
||
|
||
### P01-S04 基础设施
|
||
|
||
```text
|
||
P01-T20 Docker Compose开发环境
|
||
P01-T21 PostgreSQL开发容器
|
||
P01-T22 Redis开发容器
|
||
P01-T23 Flyway初始化
|
||
P01-T24 ObjectStorage本地适配
|
||
```
|
||
|
||
### P01-S05 Admin工程
|
||
|
||
```text
|
||
P01-T25 Vue3+TS+Vite初始化
|
||
P01-T26 Router
|
||
P01-T27 Pinia
|
||
P01-T28 Element Plus
|
||
P01-T29 Design Token基础
|
||
```
|
||
|
||
### P01-S06 Mini Program工程
|
||
|
||
```text
|
||
P01-T30 初始化微信小程序
|
||
P01-T31 TypeScript配置
|
||
P01-T32 基础Theme
|
||
P01-T33 API Client
|
||
P01-T34 基础State
|
||
```
|
||
|
||
### P01-S07 CI
|
||
|
||
```text
|
||
P01-T35 Backend Lint/Test
|
||
P01-T36 Admin Build
|
||
P01-T37 Miniapp Build检查
|
||
P01-T38 Migration Validation
|
||
```
|
||
|
||
## Phase 01验收
|
||
|
||
必须:
|
||
|
||
```text
|
||
Backend成功启动
|
||
Admin成功启动
|
||
Miniapp可打开
|
||
PostgreSQL可连接
|
||
Redis可连接
|
||
Migration成功
|
||
/health/live正常
|
||
/health/ready正常
|
||
/version正常
|
||
CI通过
|
||
README能够指导新开发者启动
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 02:认证、Operator、Organization与权限底座
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P02 认证与后台权限基础
|
||
```
|
||
|
||
### 用户认证
|
||
|
||
```text
|
||
P02-T01 微信登录Provider接口
|
||
P02-T02 微信code登录
|
||
P02-T03 User基础表
|
||
P02-T04 user_wechat_accounts
|
||
P02-T05 手机绑定
|
||
P02-T06 Token/Session
|
||
P02-T07 Refresh
|
||
P02-T08 Logout
|
||
P02-T09 /me/status
|
||
```
|
||
|
||
### Operator
|
||
|
||
```text
|
||
P02-T10 operators表
|
||
P02-T11 operator登录
|
||
P02-T12 operator状态
|
||
P02-T13 operator session
|
||
```
|
||
|
||
### Organization
|
||
|
||
```text
|
||
P02-T14 organizations表
|
||
P02-T15 organization状态
|
||
P02-T16 基础组织Service
|
||
```
|
||
|
||
### RBAC
|
||
|
||
```text
|
||
P02-T17 roles
|
||
P02-T18 permissions
|
||
P02-T19 role_permissions
|
||
P02-T20 operator_roles
|
||
P02-T21 PermissionService
|
||
P02-T22 DataScopeService骨架
|
||
P02-T23 后台菜单权限
|
||
P02-T24 API权限中间件
|
||
```
|
||
|
||
### Audit
|
||
|
||
```text
|
||
P02-T25 audit_logs基础
|
||
P02-T26 operator login log
|
||
```
|
||
|
||
## Phase 02验收
|
||
|
||
```text
|
||
用户微信登录成功
|
||
绑定手机号成功
|
||
Operator可登录
|
||
disabled Operator不能访问
|
||
不同角色菜单不同
|
||
直接调用无权限API返回403
|
||
Organization A不能访问Organization B基础资源
|
||
权限修改可即时生效
|
||
关键后台操作有Audit
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 03:实名认证
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P03 实名认证与成年人准入
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P03-T01 user_identities表
|
||
P03-T02 IdentityVerificationProvider接口
|
||
P03-T03 Mock Provider
|
||
P03-T04 正式Provider Adapter接口预留
|
||
P03-T05 姓名身份证提交
|
||
P03-T06 身份证格式校验
|
||
P03-T07 身份证加密
|
||
P03-T08 身份证Hash
|
||
P03-T09 身份去重
|
||
P03-T10 出生日期解析
|
||
P03-T11 成年校验
|
||
P03-T12 认证状态API
|
||
P03-T13 Provider失败重试策略
|
||
P03-T14 日志脱敏
|
||
P03-T15 Consent记录
|
||
```
|
||
|
||
## Phase 03验收
|
||
|
||
```text
|
||
正常成年人认证成功
|
||
未成年人被拒绝
|
||
重复身份证处理正确
|
||
数据库没有身份证明文
|
||
日志没有身份证全文
|
||
Provider超时不会误判用户欺诈
|
||
认证状态可恢复
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 04:用户资料、照片、兴趣、择偶条件与隐私
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P04 用户资料体系
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P04-T01 user_profiles
|
||
P04-T02 user_preferences
|
||
P04-T03 preference_rules设计
|
||
P04-T04 user_interests
|
||
P04-T05 interest_dictionary
|
||
P04-T06 user_photos
|
||
P04-T07 user_privacy_settings
|
||
P04-T08 Basic Profile API
|
||
P04-T09 Lifestyle API
|
||
P04-T10 Relationship Intent API
|
||
P04-T11 Self Intro API
|
||
P04-T12 Interests API
|
||
P04-T13 Photos API
|
||
P04-T14 Object Upload Token
|
||
P04-T15 Signed URL
|
||
P04-T16 EXIF清理
|
||
P04-T17 Profile Completion
|
||
P04-T18 Onboarding Draft
|
||
P04-T19 Preference Required/Preferred
|
||
P04-T20 Privacy API
|
||
```
|
||
|
||
Miniapp:
|
||
|
||
```text
|
||
P04-T21 U06基础资料
|
||
P04-T22 U07职业生活
|
||
P04-T23 U08头像照片
|
||
P04-T24 U09兴趣
|
||
P04-T25 U10婚恋态度
|
||
P04-T26 U11自我介绍
|
||
P04-T27 U12/U13/U14择偶条件
|
||
P04-T28 U15资料确认
|
||
```
|
||
|
||
## Phase 04验收
|
||
|
||
```text
|
||
完整完成Profile
|
||
Required/Preferred正确保存
|
||
未确认数量限制来自配置
|
||
图片为Private
|
||
图片URL非永久公开
|
||
EXIF按规则清理
|
||
本地不长期保存身份证
|
||
Profile Completion正确
|
||
Draft退出后可恢复
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 05:人工资料审核
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P05 用户资料人工审核
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P05-T01 review_tasks
|
||
P05-T02 review_items
|
||
P05-T03 review_reasons
|
||
P05-T04 Submit Review
|
||
P05-T05 Reviewer Queue
|
||
P05-T06 Atomic Claim
|
||
P05-T07 Approve
|
||
P05-T08 Need Edit
|
||
P05-T09 Reject
|
||
P05-T10 Resubmit
|
||
P05-T11 Review History
|
||
P05-T12 Review状态路由
|
||
```
|
||
|
||
后台:
|
||
|
||
```text
|
||
P05-T13 A05审核列表
|
||
P05-T14 A06审核详情
|
||
P05-T15 审核快捷理由
|
||
```
|
||
|
||
用户端:
|
||
|
||
```text
|
||
P05-T16 U16审核中
|
||
P05-T17 U17需修改/拒绝
|
||
```
|
||
|
||
## Phase 05验收
|
||
|
||
```text
|
||
10名审核员同时Claim只能1人成功
|
||
Approve后用户可进入推荐
|
||
Need Edit后用户明确知道改什么
|
||
Resubmit正确生成新审核流程
|
||
旧审核历史保留
|
||
审核员不能修改用户资料
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 06:Match Engine
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P06 双向匹配推荐引擎
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P06-T01 MatchEligibilityService
|
||
P06-T02 RequiredConditionService
|
||
P06-T03 年龄匹配
|
||
P06-T04 身高匹配
|
||
P06-T05 地区匹配
|
||
P06-T06 婚姻状态匹配
|
||
P06-T07 子女匹配
|
||
P06-T08 学历匹配
|
||
P06-T09 吸烟饮酒匹配
|
||
P06-T10 婚姻计划
|
||
P06-T11 定居意愿
|
||
P06-T12 兴趣匹配
|
||
P06-T13 DirectionalScoringService
|
||
P06-T14 MutualScoringService
|
||
P06-T15 RecommendationReasonService
|
||
P06-T16 RankingService
|
||
P06-T17 match_rule_configs
|
||
P06-T18 规则版本
|
||
P06-T19 recommendation_records
|
||
P06-T20 单元测试矩阵
|
||
```
|
||
|
||
## Phase 06验收
|
||
|
||
```text
|
||
A符合B但B不符合A → Reject
|
||
任一Required失败 → Reject
|
||
Preferred失败只影响评分
|
||
算法结果稳定
|
||
规则版本可追溯
|
||
前端DTO不返回具体分数
|
||
推荐理由不虚构
|
||
所有算法关键规则有自动化测试
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 07:首页推荐与找对象
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P07 用户推荐与主动搜索
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P07-T01 Recommendation API
|
||
P07-T02 推荐缓存
|
||
P07-T03 推荐缓存失效
|
||
P07-T04 推荐二次Eligibility
|
||
P07-T05 Discover API
|
||
P07-T06 Temporary Filter
|
||
P07-T07 PublicProfile DTO
|
||
P07-T08 Recommendation Source
|
||
```
|
||
|
||
Miniapp:
|
||
|
||
```text
|
||
P07-T09 U18首页
|
||
P07-T10 RecommendCard
|
||
P07-T11 推荐理由
|
||
P07-T12 U19找对象
|
||
P07-T13 U20筛选
|
||
P07-T14 U21用户详情
|
||
```
|
||
|
||
## Phase 07验收
|
||
|
||
```text
|
||
首页只返回有效候选
|
||
被Block/paused用户不出现
|
||
搜索临时筛选不修改择偶条件
|
||
PublicProfile无真实姓名/手机号/身份证
|
||
无候选时显示合理空状态
|
||
未确认每日推荐数量来自配置
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 08:Like、Pass、Block、Match与关系基础
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P08 用户关系与双向匹配
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P08-T01 user_relations
|
||
P08-T02 Like
|
||
P08-T03 Cancel Like
|
||
P08-T04 Pass
|
||
P08-T05 Pass expires_at
|
||
P08-T06 Block
|
||
P08-T07 Unblock
|
||
P08-T08 matches
|
||
P08-T09 active pair约束
|
||
P08-T10 Mutual事务
|
||
P08-T11 Match Episode/History
|
||
P08-T12 我的缘分三列表
|
||
```
|
||
|
||
Miniapp:
|
||
|
||
```text
|
||
P08-T13 U22我的缘分
|
||
P08-T14 Mutual Match视觉
|
||
P08-T15 Block确认
|
||
```
|
||
|
||
## Phase 08验收
|
||
|
||
```text
|
||
单向Like不创建Match
|
||
双向Like只创建1个Match
|
||
并发100+次不重复Match
|
||
Block即时排除双方
|
||
Unblock不恢复Match
|
||
Pass冷却可配置
|
||
Cancel Like仅Mutual前允许
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 09:Conversation与文字聊天
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P09 一对一实时文字聊天
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P09-T01 conversations
|
||
P09-T02 conversation_members
|
||
P09-T03 messages
|
||
P09-T04 Match创建Conversation
|
||
P09-T05 MessagePermissionService
|
||
P09-T06 REST Send Text
|
||
P09-T07 clientMessageId
|
||
P09-T08 Message Cursor
|
||
P09-T09 History
|
||
P09-T10 Unread
|
||
P09-T11 Read Position
|
||
P09-T12 WebSocket连接
|
||
P09-T13 message.new
|
||
P09-T14 Reconnect
|
||
P09-T15 Event dedupe
|
||
```
|
||
|
||
Miniapp:
|
||
|
||
```text
|
||
P09-T16 U23消息
|
||
P09-T17 U24聊天
|
||
P09-T18 Sending/Sent/Failed
|
||
P09-T19 Chat Draft
|
||
```
|
||
|
||
## Phase 09验收
|
||
|
||
```text
|
||
无Match不能聊
|
||
Mutual后能聊
|
||
重复clientMessageId不重复
|
||
WS断线期间消息最终恢复
|
||
Unmatch后不能发
|
||
Block后不能发
|
||
历史Cursor稳定
|
||
System消息不计真实Chat Started
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 10:图片聊天与聊天安全
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P10 图片消息、反骚扰与消息风控
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P10-T01 Chat Image Upload
|
||
P10-T02 图片Magic Number校验
|
||
P10-T03 EXIF清理
|
||
P10-T04 Signed URL
|
||
P10-T05 MessageRiskService
|
||
P10-T06 Message Rate Limit
|
||
P10-T07 Duplicate Text Spam
|
||
P10-T08 风险关键词
|
||
P10-T09 RiskNotice
|
||
P10-T10 Block实时WS状态
|
||
P10-T11 Account Restriction实时生效
|
||
```
|
||
|
||
## Phase 10验收
|
||
|
||
```text
|
||
伪装恶意图片被拒
|
||
图片Private
|
||
普通快速聊天不误伤
|
||
1秒大量消息触发限流
|
||
风险关键词只提示/记录,不自动永久Ban
|
||
Block无需刷新即可阻止下一条消息
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 11:统一通知系统
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P11 系统通知与业务事件提醒
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P11-T01 notifications
|
||
P11-T02 NotificationService
|
||
P11-T03 通知幂等
|
||
P11-T04 审核通知
|
||
P11-T05 Match通知
|
||
P11-T06 活动通知
|
||
P11-T07 红娘通知
|
||
P11-T08 风控通知
|
||
P11-T09 未读统计
|
||
P11-T10 Read All
|
||
P11-T11 WebSocket notification.new
|
||
P11-T12 微信订阅消息Adapter
|
||
```
|
||
|
||
## Phase 11验收
|
||
|
||
```text
|
||
业务事件不重复生成通知
|
||
通知能跳正确业务页
|
||
站外通知失败不影响核心业务
|
||
系统通知和Chat分离
|
||
未读数一致
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 12:婚恋状态与成功牵手
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P12 婚恋关系进展状态
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P12-T01 RelationshipStatus实现
|
||
P12-T02 Pause
|
||
P12-T03 Resume
|
||
P12-T04 Getting To Know
|
||
P12-T05 Success Request
|
||
P12-T06 Success Confirm
|
||
P12-T07 Success Decline
|
||
P12-T08 relationship_success_requests
|
||
P12-T09 Recommendation状态联动
|
||
P12-T10 Conversation联动
|
||
```
|
||
|
||
## Phase 12验收
|
||
|
||
```text
|
||
Paused不再进入新推荐
|
||
Paused已有聊天继续
|
||
Getting To Know是否暂停推荐由配置/用户选择
|
||
Success必须双确认
|
||
红娘/管理员不能替确认
|
||
成功后停止新推荐
|
||
成功≠法律婚姻状态
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 13:公益红娘
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P13 公益红娘工作台与服务流程
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P13-T01 matchmaker_services
|
||
P13-T02 matchmaker_recommendations
|
||
P13-T03 matchmaker_followups
|
||
P13-T04 服务申请
|
||
P13-T05 服务分配
|
||
P13-T06 Claim
|
||
P13-T07 Start
|
||
P13-T08 Candidate API
|
||
P13-T09 推荐
|
||
P13-T10 Followup
|
||
P13-T11 Waiting User
|
||
P13-T12 Complete
|
||
P13-T13 Cancel
|
||
P13-T14 Risk Referral
|
||
```
|
||
|
||
后台:
|
||
|
||
```text
|
||
P13-T15 R02工作台
|
||
P13-T16 R03服务列表
|
||
P13-T17 R04服务详情
|
||
P13-T18 R05候选
|
||
P13-T19 R06推荐确认
|
||
P13-T20 R07跟进
|
||
P13-T21 R08我的用户
|
||
```
|
||
|
||
用户端:
|
||
|
||
```text
|
||
P13-T22 U33红娘首页
|
||
P13-T23 U34服务申请
|
||
P13-T24 U35服务进度
|
||
P13-T25 U36红娘推荐
|
||
```
|
||
|
||
## Phase 13验收
|
||
|
||
```text
|
||
红娘只能看服务必要资料
|
||
不能看身份证
|
||
不能看私人聊天
|
||
不能替用户Like
|
||
Required冲突不能推荐
|
||
推荐前服务端二次校验
|
||
不同红娘不会无序重复推荐
|
||
服务跟进可连续追踪
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 14:活动基础
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P14 公益相亲活动基础闭环
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P14-T01 activities
|
||
P14-T02 activity_registrations
|
||
P14-T03 Activity CRUD
|
||
P14-T04 Publish
|
||
P14-T05 Cancel
|
||
P14-T06 Activity Browse
|
||
P14-T07 Activity Detail
|
||
P14-T08 Eligibility
|
||
P14-T09 Apply
|
||
P14-T10 Registration Review
|
||
P14-T11 Capacity Transaction
|
||
P14-T12 User Cancel
|
||
P14-T13 My Activities
|
||
```
|
||
|
||
后台:
|
||
|
||
```text
|
||
P14-T14 A11活动列表
|
||
P14-T15 A12创建活动
|
||
P14-T16 A13报名审核
|
||
```
|
||
|
||
Miniapp:
|
||
|
||
```text
|
||
P14-T17 U27活动首页
|
||
P14-T18 U28详情
|
||
P14-T19 U29报名
|
||
P14-T20 U30我的活动
|
||
```
|
||
|
||
## Phase 14验收
|
||
|
||
```text
|
||
活动时间校验正确
|
||
重复报名不会重复
|
||
Pending是否占名额按既定V1规则
|
||
最后1个名额并发只1人通过
|
||
可选性别名额生效
|
||
活动取消后不能再报名
|
||
用户取消释放名额
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 15:活动签到
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P15 活动现场签到
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P15-T01 Checkin Token
|
||
P15-T02 Token签名
|
||
P15-T03 Token过期
|
||
P15-T04 Staff Scan API
|
||
P15-T05 Duplicate Checkin
|
||
P15-T06 Manual Checkin
|
||
P15-T07 Checkin Audit
|
||
P15-T08 Volunteer Activity Scope
|
||
```
|
||
|
||
Miniapp:
|
||
|
||
```text
|
||
P15-T09 U31签到码
|
||
```
|
||
|
||
后台:
|
||
|
||
```text
|
||
P15-T10 A14签到管理
|
||
```
|
||
|
||
## Phase 15验收
|
||
|
||
```text
|
||
二维码不包含敏感明文
|
||
过期Token不可用
|
||
重复签到幂等
|
||
非approved用户不能签到
|
||
志愿者只能操作指定活动
|
||
手工签到有Audit
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 16:活动反馈与互选
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P16 活动后反馈与双向互选
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P16-T01 activity_feedback
|
||
P16-T02 activity_interests
|
||
P16-T03 Feedback API
|
||
P16-T04 Interest Submit
|
||
P16-T05 Interest Cancel/Modify
|
||
P16-T06 Max Selection Config
|
||
P16-T07 Deadline Config
|
||
P16-T08 Mutual Interest
|
||
P16-T09 Activity Match Source
|
||
P16-T10 Existing Match Dedup
|
||
```
|
||
|
||
Miniapp:
|
||
|
||
```text
|
||
P16-T11 U32活动反馈
|
||
P16-T12 活动互选页面
|
||
P16-T13 互选成功页
|
||
```
|
||
|
||
## Phase 16验收
|
||
|
||
```text
|
||
A单选B,B绝对看不到
|
||
双方互选只生成1个Match
|
||
Block对象不能互选
|
||
非本活动参与者不能被选择
|
||
最多人数来自配置
|
||
活动互选不计Success
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 17:举报与风控
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P17 举报、风险与账号处置
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P17-T01 reports
|
||
P17-T02 report_evidences
|
||
P17-T03 user_risk_profiles
|
||
P17-T04 risk_events
|
||
P17-T05 risk_actions
|
||
P17-T06 Report Submit
|
||
P17-T07 Report Triage
|
||
P17-T08 Risk Process
|
||
P17-T09 Warning
|
||
P17-T10 Feature Limit
|
||
P17-T11 Temporary Suspend
|
||
P17-T12 Ban
|
||
P17-T13 Account Capability计算
|
||
P17-T14 Risk Evidence Permission
|
||
P17-T15 Chat Context受控访问
|
||
P17-T16 SensitiveAccessLog
|
||
```
|
||
|
||
后台:
|
||
|
||
```text
|
||
P17-T17 A15举报中心
|
||
P17-T18 A16举报详情
|
||
```
|
||
|
||
## Phase 17验收
|
||
|
||
```text
|
||
举报人身份不泄露
|
||
普通管理员不能看证据
|
||
聊天只能案件上下文访问
|
||
RiskAction实时影响推荐/Like/Chat/Activity/Matchmaker
|
||
单个关键词不自动永久Ban
|
||
所有处置有Audit
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 18:申诉
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P18 用户申诉
|
||
```
|
||
|
||
如决定不首发,则Feature Flag/模块预留,但不得删除数据设计。
|
||
|
||
任务:
|
||
|
||
```text
|
||
P18-T01 appeals
|
||
P18-T02 Appeal Submit
|
||
P18-T03 Appeal Review
|
||
P18-T04 Approve
|
||
P18-T05 Reject
|
||
P18-T06 RiskAction Revoke
|
||
P18-T07 Account Capability Recalculate
|
||
P18-T08 Appeal Notification
|
||
```
|
||
|
||
## Phase 18验收
|
||
|
||
```text
|
||
用户只能申诉自己的有效处置
|
||
Approve正确撤销对应Action
|
||
其他剩余Action仍生效
|
||
Reject不改变现有状态
|
||
全部有Audit
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 19:运营后台完善
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P19 统一运营管理后台
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P19-T01 Dashboard角色化
|
||
P19-T02 用户管理
|
||
P19-T03 用户详情
|
||
P19-T04 审核历史
|
||
P19-T05 Match摘要
|
||
P19-T06 Activity摘要
|
||
P19-T07 Matchmaker摘要
|
||
P19-T08 Organization管理
|
||
P19-T09 Operator管理
|
||
P19-T10 Role管理
|
||
P19-T11 Permission管理
|
||
P19-T12 Role Assignment Boundary
|
||
P19-T13 Sensitive Identity
|
||
P19-T14 Audit查询
|
||
P19-T15 Sensitive Access查询
|
||
P19-T16 临时Volunteer账号
|
||
```
|
||
|
||
## Phase 19验收
|
||
|
||
```text
|
||
不同角色看到不同Dashboard
|
||
机构管理员不能提权
|
||
机构A不能访问机构B
|
||
红娘不能通过User详情看到Chat
|
||
Volunteer不能进入User管理
|
||
敏感数据默认脱敏
|
||
所有高风险操作二次确认
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 20:Analytics
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P20 数据统计与管理驾驶舱
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P20-T01 指标字典
|
||
P20-T02 User Metrics
|
||
P20-T03 Review Metrics
|
||
P20-T04 Recommendation Metrics
|
||
P20-T05 Match Metrics
|
||
P20-T06 Chat Started
|
||
P20-T07 Matchmaker Metrics
|
||
P20-T08 Activity Metrics
|
||
P20-T09 Risk Metrics
|
||
P20-T10 Daily Summary
|
||
P20-T11 Rebuild Metrics
|
||
P20-T12 Platform Dashboard
|
||
P20-T13 Organization Dashboard
|
||
P20-T14 Analytics权限
|
||
```
|
||
|
||
## Phase 20验收
|
||
|
||
固定数据集验证:
|
||
|
||
```text
|
||
注册10
|
||
实名7
|
||
审核通过4
|
||
```
|
||
|
||
必须显示一致。
|
||
|
||
以及:
|
||
|
||
```text
|
||
2个Like = 1个Mutual Match
|
||
System Message不算Chat Started
|
||
活动10对互选≠10对Success
|
||
红娘看20候选、发3个 → Recommendation=3
|
||
```
|
||
|
||
Dashboard和专项页面相同指标必须一致。
|
||
|
||
---
|
||
|
||
# Phase 21:账号生命周期、注销与数据保留接口
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P21 用户账号生命周期
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P21-T01 Service Exit
|
||
P21-T02 Account Deletion Request
|
||
P21-T03 Account Deletion Cancel(如采用宽限期)
|
||
P21-T04 Session Revoke
|
||
P21-T05 Recommendation Removal
|
||
P21-T06 Search Removal
|
||
P21-T07 Matchmaker Stop
|
||
P21-T08 Activity处理
|
||
P21-T09 Conversation展示处理
|
||
P21-T10 Retention Policy Hook
|
||
P21-T11 User Data Rights API
|
||
```
|
||
|
||
## Phase 21验收
|
||
|
||
```text
|
||
注销后不再搜索
|
||
不再推荐
|
||
不能新聊天
|
||
红娘服务停止
|
||
未开始活动按规则处理
|
||
历史关系不崩
|
||
已注销展示名正确
|
||
保留/删除逻辑可配置
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 22:部署、监控、备份、恢复
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P22 生产部署与运维体系
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P22-T01 Backend Dockerfile
|
||
P22-T02 Admin Docker Build
|
||
P22-T03 Docker Compose
|
||
P22-T04 Staging Compose
|
||
P22-T05 Nginx
|
||
P22-T06 HTTPS/WSS配置
|
||
P22-T07 .env.example
|
||
P22-T08 Secret说明
|
||
P22-T09 health/live
|
||
P22-T10 health/ready
|
||
P22-T11 version
|
||
P22-T12 Structured Logging
|
||
P22-T13 Metrics
|
||
P22-T14 Monitoring
|
||
P22-T15 Backup Script
|
||
P22-T16 Restore Script
|
||
P22-T17 Deploy Script
|
||
P22-T18 Rollback Script
|
||
P22-T19 Maintenance Mode
|
||
P22-T20 Feature Flag
|
||
P22-T21 Ops Docs
|
||
```
|
||
|
||
## Phase 22验收
|
||
|
||
```text
|
||
全新服务器可按文档部署
|
||
生产Secret不进Git
|
||
PostgreSQL/Redis不公网
|
||
用户图片Private
|
||
备份能实际恢复
|
||
指定版本可以Rollback
|
||
/health与/version正确
|
||
WSS正常
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 23:完整测试与安全验证
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P23 系统级测试与安全验收
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P23-T01 Core E2E
|
||
P23-T02 Auth E2E
|
||
P23-T03 Review E2E
|
||
P23-T04 Match E2E
|
||
P23-T05 Chat E2E
|
||
P23-T06 Matchmaker E2E
|
||
P23-T07 Activity E2E
|
||
P23-T08 Risk E2E
|
||
P23-T09 Permission Matrix Test
|
||
P23-T10 IDOR
|
||
P23-T11 SQL Injection
|
||
P23-T12 XSS
|
||
P23-T13 CORS
|
||
P23-T14 Upload Security
|
||
P23-T15 Rate Limit
|
||
P23-T16 Simultaneous Like
|
||
P23-T17 Activity Capacity Race
|
||
P23-T18 WebSocket Weak Network
|
||
P23-T19 Restore Test
|
||
P23-T20 Rollback Test
|
||
```
|
||
|
||
## Phase 23验收
|
||
|
||
```text
|
||
P0 = 0
|
||
未接受P1 = 0
|
||
Core E2E全部通过
|
||
权限测试通过
|
||
隐私测试通过
|
||
并发测试通过
|
||
Backup Restore通过
|
||
Rollback通过
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 24:UAT
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P24 真实角色用户验收
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P24-T01 普通用户UAT
|
||
P24-T02 Reviewer UAT
|
||
P24-T03 Matchmaker UAT
|
||
P24-T04 Activity Manager UAT
|
||
P24-T05 Volunteer UAT
|
||
P24-T06 Risk Operator UAT
|
||
P24-T07 Platform Admin UAT
|
||
P24-T08 UAT问题修复
|
||
```
|
||
|
||
## Phase 24验收
|
||
|
||
必须证明:
|
||
|
||
```text
|
||
普通用户不培训基本会用
|
||
审核员可以连续处理审核
|
||
红娘不依赖Excel完成服务
|
||
活动管理员完成整场模拟
|
||
志愿者简单培训即可签到
|
||
风控员能处理标准举报
|
||
管理员能管理权限但不能越权
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 25:Release Candidate
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P25 V1.0.0 Release Candidate
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P25-T01 版本冻结
|
||
P25-T02 Migration最终验证
|
||
P25-T03 OpenAPI冻结
|
||
P25-T04 Release Notes
|
||
P25-T05 Staging Clean Deploy
|
||
P25-T06 全量Regression
|
||
P25-T07 Production Config Review
|
||
P25-T08 Privacy/Agreement版本核对
|
||
P25-T09 Go/No-Go检查
|
||
P25-T10 生成v1.0.0-rc.1
|
||
```
|
||
|
||
## Phase 25验收
|
||
|
||
```text
|
||
Staging从空环境可部署
|
||
所有Migration连续成功
|
||
RC核心流程通过
|
||
Production配置齐全
|
||
备份恢复演练完成
|
||
没有Blocker
|
||
Go/No-Go材料完整
|
||
```
|
||
|
||
---
|
||
|
||
# Phase 26:生产上线
|
||
|
||
## Epic
|
||
|
||
```text
|
||
EPIC-P26 Production Launch
|
||
```
|
||
|
||
任务:
|
||
|
||
```text
|
||
P26-T01 Production Backup
|
||
P26-T02 Production Migration
|
||
P26-T03 Backend Deploy
|
||
P26-T04 Admin Deploy
|
||
P26-T05 Mini Program正式配置
|
||
P26-T06 Health Check
|
||
P26-T07 Smoke Test
|
||
P26-T08 Monitoring Check
|
||
P26-T09 Backup Validation
|
||
P26-T10 Gray Release
|
||
P26-T11 First-day Monitoring
|
||
P26-T12 Release Tag v1.0.0
|
||
P26-T13 STATUS更新
|
||
P26-T14 最终Release Report
|
||
```
|
||
|
||
## Phase 26验收
|
||
|
||
```text
|
||
登录正常
|
||
实名正常
|
||
审核正常
|
||
推荐正常
|
||
Mutual正常
|
||
聊天正常
|
||
Block正常
|
||
红娘正常
|
||
活动正常
|
||
后台权限正常
|
||
监控正常
|
||
备份正常
|
||
无严重生产错误
|
||
```
|
||
|
||
---
|
||
|
||
# 第四部分:跨Phase关键测试任务
|
||
|
||
---
|
||
|
||
# 二十四、必须永久存在的自动化测试套件
|
||
|
||
建立:
|
||
|
||
```text
|
||
tests/invariants/
|
||
```
|
||
|
||
至少:
|
||
|
||
```text
|
||
INV-001 Required不可自动放宽
|
||
INV-002 未Mutual不可聊天
|
||
INV-003 Block后双方不可互动
|
||
INV-004 双向并发Like只创建一个Match
|
||
INV-005 Activity最后一个名额不可超卖
|
||
INV-006 单向活动意向不可泄露
|
||
INV-007 红娘不能替用户Like
|
||
INV-008 非授权Operator不能读取身份证
|
||
INV-009 非案件上下文不能读取聊天
|
||
INV-010 跨Organization不能越权
|
||
```
|
||
|
||
这些测试:
|
||
|
||
> 每次CI都运行。
|
||
|
||
---
|
||
|
||
# 二十五、必须永久存在的权限测试矩阵
|
||
|
||
至少测试:
|
||
|
||
| Role | 用户资料 | 身份证 | Chat | Review | Matchmaker | Activity | Risk | Permission |
|
||
|---|---:|---:|---:|---:|---:|---:|---:|---:|
|
||
| super_admin | 按权限 | 特殊 | 特殊 | 是 | 是 | 是 | 是 | 是 |
|
||
| platform_admin | 是 | 特殊 | 否 | 是 | 是 | 是 | 按授权 | 有限 |
|
||
| organization_admin | 范围内 | 否 | 否 | 按授权 | 本机构 | 本机构 | 默认否 | 有限 |
|
||
| reviewer | 审核必要 | 否 | 否 | 是 | 否 | 否 | 否 | 否 |
|
||
| matchmaker | 服务必要 | 否 | 否 | 否 | 是 | 推荐 | 转交 | 否 |
|
||
| activity_manager | 活动必要 | 否 | 否 | 否 | 否 | 是 | 转交 | 否 |
|
||
| risk_operator | 案件必要 | 特殊 | 案件授权 | 否 | 摘要 | 摘要 | 是 | 否 |
|
||
| volunteer | 否 | 否 | 否 | 否 | 否 | 签到 | 转交 | 否 |
|
||
| data_viewer | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
|
||
|
||
---
|
||
|
||
# 第五部分:WorkBuddy每阶段输出格式
|
||
|
||
每个Phase完成以后必须输出以下报告。
|
||
|
||
```markdown
|
||
# Phase XX Completion Report
|
||
|
||
## Status
|
||
Completed / Partial / Blocked
|
||
|
||
## Implemented
|
||
- ...
|
||
- ...
|
||
|
||
## Database Changes
|
||
- Migration Vxxx
|
||
|
||
## API Changes
|
||
- ...
|
||
|
||
## Frontend Changes
|
||
- ...
|
||
|
||
## Tests
|
||
- Unit:
|
||
- Integration:
|
||
- Permission:
|
||
- Concurrency:
|
||
- E2E:
|
||
|
||
## Test Results
|
||
- PASS:
|
||
- FAIL:
|
||
|
||
## Security Review
|
||
- ...
|
||
|
||
## Known Issues
|
||
- ...
|
||
|
||
## Pending Product Decisions
|
||
- ...
|
||
|
||
## Regression Check
|
||
- ...
|
||
|
||
## Docs Updated
|
||
- AGENTS
|
||
- STATUS
|
||
- OpenAPI
|
||
- CHANGELOG
|
||
|
||
## Next Phase
|
||
Phase XX+1
|
||
```
|
||
|
||
---
|
||
|
||
# 第六部分:WorkBuddy首轮实际执行任务
|
||
|
||
首次把本文档交给WorkBuddy后,不要让它直接执行26个Phase。
|
||
|
||
第一轮只执行以下任务。
|
||
|
||
---
|
||
|
||
# 二十六、首轮任务01:仓库审计
|
||
|
||
如果仓库存在代码,输出:
|
||
|
||
```text
|
||
技术栈
|
||
目录结构
|
||
模块
|
||
数据库
|
||
API
|
||
前端
|
||
测试
|
||
CI
|
||
部署
|
||
依赖
|
||
安全现状
|
||
```
|
||
|
||
---
|
||
|
||
# 二十七、首轮任务02:Gap Analysis
|
||
|
||
建立:
|
||
|
||
```text
|
||
docs/GAP_ANALYSIS.md
|
||
```
|
||
|
||
格式:
|
||
|
||
| Domain | Existing | Required V1 | Gap | Action |
|
||
|---|---|---|---|---|
|
||
| Auth | ... | ... | ... | ... |
|
||
| Match | ... | ... | ... | ... |
|
||
|
||
至少包括:
|
||
|
||
```text
|
||
Auth
|
||
Verification
|
||
Profile
|
||
Review
|
||
Match
|
||
Relationship
|
||
Messaging
|
||
Activity
|
||
Matchmaker
|
||
Risk
|
||
RBAC
|
||
Analytics
|
||
Deployment
|
||
Testing
|
||
```
|
||
|
||
---
|
||
|
||
# 二十八、首轮任务03:技术栈确认
|
||
|
||
如果空仓:
|
||
|
||
采用推荐栈。
|
||
|
||
如果非空:
|
||
|
||
原则:
|
||
|
||
> 优先保留成熟可复用现有技术。
|
||
|
||
只有明确阻碍项目实现才调整。
|
||
|
||
写:
|
||
|
||
```text
|
||
docs/decisions/ADR-001-technology-stack.md
|
||
```
|
||
|
||
---
|
||
|
||
# 二十九、首轮任务04:创建治理文件
|
||
|
||
必须创建:
|
||
|
||
```text
|
||
AGENTS.md
|
||
docs/STATUS.md
|
||
docs/PENDING_DECISIONS.md
|
||
CHANGELOG.md
|
||
README.md
|
||
```
|
||
|
||
---
|
||
|
||
# 三十、首轮任务05:建立Jira任务源文件
|
||
|
||
如果暂时没有真实Jira连接,则创建:
|
||
|
||
```text
|
||
docs/project/JIRA_BACKLOG.md
|
||
```
|
||
|
||
按本文档写入:
|
||
|
||
```text
|
||
Phase
|
||
Epic
|
||
Story
|
||
Task
|
||
Priority
|
||
Dependencies
|
||
Acceptance Criteria
|
||
Status
|
||
```
|
||
|
||
保证后续可以直接导入Jira。
|
||
|
||
---
|
||
|
||
# 三十一、首轮任务06:Phase 01详细Task Breakdown
|
||
|
||
WorkBuddy把P01继续拆成:
|
||
|
||
> 0.5~1天左右粒度的工程任务。
|
||
|
||
不要把:
|
||
|
||
```text
|
||
完成整个Backend
|
||
```
|
||
|
||
当成一个Task。
|
||
|
||
---
|
||
|
||
# 三十二、首轮任务07:建立测试骨架
|
||
|
||
创建:
|
||
|
||
```text
|
||
tests/
|
||
unit/
|
||
integration/
|
||
api/
|
||
permission/
|
||
concurrency/
|
||
e2e/
|
||
```
|
||
|
||
并先实现:
|
||
|
||
```text
|
||
Health Test
|
||
Migration Test
|
||
Permission Test基础
|
||
```
|
||
|
||
---
|
||
|
||
# 三十三、首轮任务08:执行Phase 01
|
||
|
||
完成后必须:
|
||
|
||
> 停止继续开发Phase 02。
|
||
|
||
先提交:
|
||
|
||
```text
|
||
Phase 01 Completion Report
|
||
```
|
||
|
||
等待下一条开发指令。
|
||
|
||
---
|
||
|
||
# 第七部分:Jira优先级
|
||
|
||
---
|
||
|
||
# 三十四、P0
|
||
|
||
阻碍核心V1上线:
|
||
|
||
```text
|
||
登录
|
||
实名
|
||
审核
|
||
匹配
|
||
Mutual
|
||
Chat
|
||
Block
|
||
权限
|
||
风控
|
||
活动核心
|
||
红娘核心
|
||
数据安全
|
||
```
|
||
|
||
---
|
||
|
||
# 三十五、P1
|
||
|
||
V1必须,但可以较后开发:
|
||
|
||
```text
|
||
图片聊天
|
||
活动互选
|
||
申诉
|
||
Analytics
|
||
高级通知
|
||
运营增强
|
||
```
|
||
|
||
---
|
||
|
||
# 三十六、P2
|
||
|
||
可进入:
|
||
|
||
> 1.0.x
|
||
|
||
例如:
|
||
|
||
```text
|
||
MFA增强
|
||
动态水印
|
||
更多统计
|
||
登录异常提醒
|
||
高级风控规则
|
||
```
|
||
|
||
---
|
||
|
||
# 第八部分:Bug优先级
|
||
|
||
---
|
||
|
||
# 三十七、Blocker
|
||
|
||
```text
|
||
无法登录
|
||
数据库损坏
|
||
敏感数据泄露
|
||
权限系统失效
|
||
Match逻辑整体错误
|
||
```
|
||
|
||
---
|
||
|
||
# 三十八、Critical
|
||
|
||
```text
|
||
未Mutual可聊天
|
||
Block无效
|
||
跨组织越权
|
||
红娘看身份证
|
||
普通管理员看聊天
|
||
活动严重超卖
|
||
重复Match
|
||
```
|
||
|
||
---
|
||
|
||
# 三十九、Major
|
||
|
||
```text
|
||
筛选错误
|
||
通知漏发
|
||
统计严重错误
|
||
部分图片异常
|
||
```
|
||
|
||
---
|
||
|
||
# 四十、Minor
|
||
|
||
```text
|
||
UI局部错位
|
||
非关键文案
|
||
小体验问题
|
||
```
|
||
|
||
---
|
||
|
||
# 第九部分:Go/No-Go
|
||
|
||
---
|
||
|
||
# 四十一、绝对No-Go
|
||
|
||
任何以下情况存在:
|
||
|
||
```text
|
||
P0 Bug > 0
|
||
未接受P1安全Bug > 0
|
||
权限越权
|
||
身份证明文
|
||
Block失效
|
||
Mutual并发错误
|
||
活动容量错误
|
||
数据库无备份
|
||
恢复未验证
|
||
无法Rollback
|
||
```
|
||
|
||
禁止生产上线。
|
||
|
||
---
|
||
|
||
# 四十二、Go最低标准
|
||
|
||
```text
|
||
Core E2E通过
|
||
权限矩阵通过
|
||
隐私测试通过
|
||
并发测试通过
|
||
Backup Restore通过
|
||
Rollback通过
|
||
运营UAT通过
|
||
P0=0
|
||
Critical=0
|
||
```
|
||
|
||
---
|
||
|
||
# 第十部分:开发过程中禁止出现的“捷径”
|
||
|
||
---
|
||
|
||
# 四十三、禁止直接赋予管理员全部权限
|
||
|
||
不得:
|
||
|
||
```text
|
||
if admin → allow everything
|
||
```
|
||
|
||
---
|
||
|
||
# 四十四、禁止把全部用户数据返回前端再隐藏
|
||
|
||
权限过滤:
|
||
|
||
> 必须后端完成。
|
||
|
||
---
|
||
|
||
# 四十五、禁止用Redis作为Match事实数据
|
||
|
||
Redis只能缓存。
|
||
|
||
---
|
||
|
||
# 四十六、禁止用前端判断Chat权限
|
||
|
||
服务端每条Message Send都重新检查。
|
||
|
||
---
|
||
|
||
# 四十七、禁止为了推荐数量自动突破Required
|
||
|
||
没有候选:
|
||
|
||
> 返回无候选。
|
||
|
||
---
|
||
|
||
# 四十八、禁止活动Pending直接算正式名额,除非未来规则明确修改
|
||
|
||
当前V1建议:
|
||
|
||
> Approved占正式名额。
|
||
|
||
---
|
||
|
||
# 四十九、禁止把活动互选算成功牵手
|
||
|
||
必须严格区分。
|
||
|
||
---
|
||
|
||
# 五十、禁止红娘后台存在“代用户喜欢”
|
||
|
||
完全不要开发这个按钮/API。
|
||
|
||
---
|
||
|
||
# 五十一、禁止普通用户详情返回内部Risk Score
|
||
|
||
风险数据内部使用。
|
||
|
||
---
|
||
|
||
# 五十二、禁止生产Debug接口
|
||
|
||
例如:
|
||
|
||
```text
|
||
/mock-user
|
||
/create-match
|
||
/test-login
|
||
```
|
||
|
||
Production必须关闭或不存在。
|
||
|
||
---
|
||
|
||
# 第十一部分:项目长期维护规则
|
||
|
||
---
|
||
|
||
# 五十三、任何新需求首先判断
|
||
|
||
属于:
|
||
|
||
```text
|
||
Bug
|
||
V1缺失
|
||
V1.0.x
|
||
V1.1
|
||
V2
|
||
```
|
||
|
||
不得直接塞进当前Phase。
|
||
|
||
---
|
||
|
||
# 五十四、新需求必须先更新文档
|
||
|
||
顺序:
|
||
|
||
```text
|
||
需求确认
|
||
↓
|
||
设计更新
|
||
↓
|
||
STATUS/Pending更新
|
||
↓
|
||
Jira
|
||
↓
|
||
开发
|
||
```
|
||
|
||
---
|
||
|
||
# 五十五、任何重大架构变化必须ADR
|
||
|
||
例如:
|
||
|
||
```text
|
||
更换数据库
|
||
更换认证模式
|
||
引入MQ
|
||
引入搜索引擎
|
||
拆微服务
|
||
```
|
||
|
||
都必须:
|
||
|
||
> ADR。
|
||
|
||
---
|
||
|
||
# 五十六、任何敏感数据新增必须回答
|
||
|
||
```text
|
||
为什么需要?
|
||
是否必要?
|
||
谁能看?
|
||
存多久?
|
||
如何删除?
|
||
如何加密?
|
||
```
|
||
|
||
回答不了:
|
||
|
||
> 不采集。
|
||
|
||
---
|
||
|
||
# 五十七、任何算法新增必须回答
|
||
|
||
```text
|
||
是否透明?
|
||
是否可解释?
|
||
是否涉及敏感推断?
|
||
是否会覆盖Required?
|
||
用户是否可控?
|
||
```
|
||
|
||
---
|
||
|
||
# 五十八、任何Operator权限新增必须回答
|
||
|
||
```text
|
||
哪个角色需要?
|
||
为什么?
|
||
数据范围?
|
||
是否敏感?
|
||
是否审计?
|
||
```
|
||
|
||
---
|
||
|
||
# 第十二部分:最终执行要求
|
||
|
||
WorkBuddy必须将整个项目理解为:
|
||
|
||
> **一个长期可运营的公益婚恋服务系统。**
|
||
|
||
而不是:
|
||
|
||
> “一个相亲小程序页面集合”。
|
||
|
||
本项目最重要的技术难点依次是:
|
||
|
||
```text
|
||
权限
|
||
隐私
|
||
状态
|
||
双向关系
|
||
并发一致性
|
||
线下活动闭环
|
||
人工红娘协同
|
||
```
|
||
|
||
不是页面数量。
|
||
|
||
因此整个开发过程中始终遵循:
|
||
|
||
> **正确优先于快。**
|
||
|
||
> **简单优先于炫技。**
|
||
|
||
> **安全优先于方便。**
|
||
|
||
> **配置优先于硬编码。**
|
||
|
||
> **测试优先于主观判断。**
|
||
|
||
> **文档优先于个人记忆。**
|
||
|
||
> **用户自主权优先于平台效率。**
|
||
|
||
---
|
||
|
||
# 第十三部分:给WorkBuddy的首轮最终指令
|
||
|
||
现在开始执行本项目。
|
||
|
||
你本轮只允许完成以下工作:
|
||
|
||
```text
|
||
1. 审计当前仓库
|
||
2. 输出Gap Analysis
|
||
3. 确认技术栈
|
||
4. 创建AGENTS.md
|
||
5. 创建STATUS.md
|
||
6. 创建PENDING_DECISIONS.md
|
||
7. 创建JIRA_BACKLOG.md
|
||
8. 建立测试目录
|
||
9. 拆解Phase 01
|
||
10. 完成Phase 01
|
||
11. 完整运行Phase 01测试
|
||
12. 输出Phase 01 Completion Report
|
||
```
|
||
|
||
本轮完成以后:
|
||
|
||
> **不要自动继续Phase 02。**
|
||
|
||
等待下一条明确开发指令。
|
||
|
||
如果发现任何需求冲突:
|
||
|
||
> 不擅自修改既有产品规则。
|
||
|
||
在:
|
||
|
||
```text
|
||
docs/PENDING_DECISIONS.md
|
||
```
|
||
|
||
记录并采用最小影响、可配置、可回滚的技术实现。
|
||
|
||
最终目标不是最快写完最多代码。
|
||
|
||
最终目标是:
|
||
|
||
> **每一个Phase完成以后项目都处于可运行、可验证、可继续接手的状态,并最终形成一套真实、安全、稳定、易维护的丹阳公益婚恋服务平台V1.0。** |