Files
danyang-match/WorkBuddy首轮启动提示词 + Phase 01~Phase 26 Jira级任务清单 + 每阶段验收条件.md
T
Codex 60eeb8aef5 docs(brand): 全仓库 Codex 署名统一为 WorkBuddy + 5 个文件重命名
## 背景
用户指令:「先将 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 个新文件名与全部引用一致
2026-09-16 14:37:44 +08:00

2790 lines
39 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 丹阳公益婚恋服务平台
# 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。**