# 相亲小程序开发规划 ## 1. 项目目标 ## 当前进度 - [x] 已创建 `backend/`、`miniprogram/`、`admin-web/` 项目骨架 - [x] 已完成后端基础初始化:FastAPI 入口、配置、数据库会话、JWT 工具、认证路由、Alembic 基础文件 - [x] 已完成核心数据库模型和首个迁移文件:`users`、`activities`、`registrations`、`match_likes`、`matches`、`announcements`、`admins` - [x] 已完成小程序基础初始化:`app.js`、`app.json`、`app.wxss`、请求封装、登录封装、核心页面壳 - [x] 已完成后台管理端基础初始化:Vite + Vue3 + Element Plus 基础结构、路由和页面壳 - [x] 已完成用户中心第一批真实接口:`GET /users/me`、`PUT /users/me`、`POST /users/submit-audit` - [x] 已完成资料完整度计算和审核提交必填校验基础逻辑 - [x] 已完成真实微信登录建档基础流程:`POST /auth/wx-login` 已接入 `code2session` 和用户自动创建/复用逻辑 - [x] 已完成头像上传基础接口:`POST /upload/avatar`,包含图片校验、压缩、模糊图生成、头像字段回写 - [x] 已完成活动系统第一批后端接口:`GET /activities`、`GET /activities/{id}`、`POST /activities/{id}/register`、`DELETE /activities/{id}/register` - [x] 已完成匹配系统第一批后端接口:`GET /matches/candidates`、`POST /matches/like`、`GET /matches/my`、`GET /matches/{match_id}/detail` - [x] 已完成公开资料分级接口:`GET /users/public/{user_id}` - [x] 已完成小程序用户中心基础联调:`profile`、`profile-edit`、`audit-status` - [x] 已完成小程序活动页基础联调:`activity`、`activity-detail` - [x] 已完成小程序匹配页基础联调:`match`、`my-matches` - [x] 已完成小程序我的活动页基础联调:`my-activities` - [x] 已完成后台审核链路基础联调:管理员登录、待审核列表、审核通过/驳回 - [x] 已完成后台活动管理基础联调:活动列表、活动创建、发布/下架 - [x] 已完成公告系统基础联调:前台公告列表/详情、后台公告创建与列表管理 - [x] 已完成首页运营基础内容联调:首页活动预告、公告栏、公告详情页 - [x] 已完成 AI 推荐基础联调:`POST /matches/ai-suggest`、匹配页 AI 推荐展示、首页会员推荐区 - [x] 已完成后台数据看板基础联调:`GET /admin/dashboard` 与管理端展示页面 - [x] 已补管理员种子账号初始化脚本与说明 - [x] 已完成后端统一错误响应格式基础接入 - [x] 已完成后台活动编辑基础联调 - [x] 已补根目录启动说明文档 `README.md` - [x] 已完成一轮关键代码检查与高风险问题修复 - [x] 已清理小程序远程占位图依赖,避免合法域名问题 - [x] 已补手工验收清单 `验收清单.md` - [x] 已补上线准备清单 `上线准备清单.md` - [x] 已补后台后端增强接口:用户详情、封禁/解封、匹配记录、系统配置 - [x] 已完成微信订阅消息基础接入:审核结果通知、匹配成功通知 - [x] 已完成 Redis 基础接入:微信 access_token 缓存、登录限流、匹配 like 限流 - [ ] 下一步:补推荐列表 Redis 缓存、COS 真上传、自动化测试和最终部署验证 基于 `相亲小程序开发详情.md`,从零到一完成一个微信小程序相亲平台,覆盖以下完整链路: `微信登录 -> 填写资料 -> 提交审核 -> 审核通过 -> 报名活动 -> 参与匹配 -> 查看匹配结果` 项目整体包含 3 个子系统: 1. 微信小程序前端 2. Python FastAPI 后端 3. Vue3 + Element Plus 后台管理端 开发原则: 1. 先完成 MVP,再逐步补全高级功能 2. 先后端和数据模型,再对接小程序页面 3. 先跑通主链路,再补 AI 推荐、通知、数据看板等增强功能 ## 2. 总体开发策略 ### 2.1 优先级原则 优先保证业务闭环: 1. 用户能登录 2. 用户能填写资料并提交审核 3. 管理员能审核 4. 用户能报名活动 5. 用户能浏览和匹配异性 ### 2.2 版本拆分 1. `V0.1 基础框架` 前后端项目初始化、数据库连通、登录鉴权、统一响应结构 2. `V0.2 用户资料与审核` 用户资料编辑、头像上传、完整度计算、提交审核、后台审核 3. `V0.3 活动报名` 活动列表、详情、报名、取消报名、后台活动管理 4. `V0.4 匹配主链路` 候选列表、感兴趣、双向匹配成功、我的匹配 5. `V0.5 AI 推荐与通知` AI 推荐、每日推荐缓存、微信订阅消息 6. `V0.6 后台完善与上线` 公告、看板、系统配置、测试、部署、提审 ## 3. 开发阶段规划 ### 阶段 0:需求冻结与项目初始化 状态:已完成 目标:把规格文档转化为工程执行基础。 交付物: 1. 项目目录结构 2. 接口清单 3. 页面清单与跳转关系 4. `.env.example` 5. README 和开发约定 核心任务: 1. 创建项目目录:`miniprogram/`、`backend/`、`admin-web/` 2. 明确运行环境:Python 3.11、MySQL 8、Redis 7、Node LTS、微信开发者工具 3. 梳理 API 列表与页面流转图 4. 确定代码规范、分支策略、环境变量管理方式 已完成标记: 1. [x] 创建项目目录:`miniprogram/`、`backend/`、`admin-web/` 2. [x] 明确运行环境:Python 3.11、MySQL 8、Redis 7、Node LTS、微信开发者工具 3. [x] 梳理 API 列表与页面流转图 4. [x] 确定代码规范、分支策略、环境变量管理方式 验收标准: 1. 三个项目目录可独立初始化 2. 开发者可按文档快速启动本地环境 ### 阶段 1:后端基础设施 状态:进行中 目标:完成后端骨架,支撑后续全部业务模块。 核心任务: 1. 初始化 FastAPI 项目结构 2. 实现 `config.py`、`database.py`、`dependencies.py` 3. 接入 MySQL、Redis、Alembic 4. 增加统一响应格式和异常处理 5. 增加 JWT 鉴权能力 6. 封装微信 `code2session` 调用 7. 封装 COS 上传能力 8. 配置基础日志与健康检查接口 已完成标记: 1. [x] 初始化 FastAPI 项目结构 2. [x] 实现 `config.py`、`database.py`、`dependencies.py` 3. [x] 接入 MySQL、Redis、Alembic 4. [x] 增加统一响应格式和异常处理 5. [x] 增加 JWT 鉴权能力 6. [x] 封装微信 `code2session` 调用 7. [x] 封装 COS 上传能力 8. [x] 配置基础日志与健康检查接口 验收标准: 1. 后端服务可启动 2. 数据库和 Redis 可连接 3. Alembic 可生成并执行迁移 4. JWT 可签发和校验 ### 阶段 2:数据库与模型实现 状态:已完成基础模型与首个迁移 目标:建立稳定的数据层。 核心表: 1. `users` 2. `activities` 3. `registrations` 4. `match_likes` 5. `matches` 6. `announcements` 7. `admins` 核心任务: 1. 编写 SQLAlchemy ORM 模型 2. 编写 Pydantic 请求/响应模型 3. 配置索引与唯一约束 4. 编写 Alembic 迁移脚本 5. 初始化管理员账号种子数据 已完成标记: 1. [x] 编写 SQLAlchemy ORM 模型 2. [x] 编写基础 Pydantic 响应模型 3. [x] 配置索引与唯一约束 4. [x] 编写 Alembic 迁移脚本 5. [ ] 初始化管理员账号种子数据 重点注意: 1. `users` 中 JSON 字段映射 2. `matches` 唯一索引避免并发重复匹配 3. 审核状态、报名状态、活动状态的枚举设计 验收标准: 1. 全部核心表迁移成功 2. 本地能插入和查询样例数据 ### 阶段 3:认证与用户中心后端 状态:进行中 目标:完成登录、资料编辑、审核提交的后端能力。 接口范围: 1. `POST /auth/wx-login` 2. `POST /auth/refresh` 3. `GET /users/me` 4. `PUT /users/me` 5. `POST /users/submit-audit` 6. `POST /upload/avatar` 核心任务: 1. 微信登录后自动创建用户 2. 获取当前用户资料 3. 支持增量更新资料 4. 自动计算 `profile_completeness` 5. 修改已审核资料后重置为待审核 6. 头像上传、压缩、生成模糊图并上传 COS 7. 审核提交前校验必填字段 已完成标记: 1. [ ] 微信登录后自动创建用户 1. [x] 微信登录后自动创建用户 2. [x] 获取当前用户资料 3. [x] 支持增量更新资料 4. [x] 自动计算 `profile_completeness` 5. [x] 修改已审核资料后重置为待审核 6. [x] 头像上传、压缩、生成模糊图并上传 COS 7. [x] 审核提交前校验必填字段 验收标准: 1. 新用户首次登录能自动建档 2. 用户可多次保存资料 3. 用户可成功提交审核 4. 头像上传成功并回写数据库 ### 阶段 4:小程序基础框架 状态:已完成基础初始化,后续继续迭代 目标:完成小程序基础壳、登录态和通用请求封装。 核心任务: 1. 初始化 `app.js`、`app.json`、`app.wxss` 2. 实现 `utils/request.js` 3. 实现登录态管理 `utils/auth.js` 4. 配置 TabBar 页面 5. 建立通用组件: `empty-state`、`audit-badge`、`progress-bar`、`activity-card`、`match-card` 6. 完成页面基础壳: `home`、`activity`、`match`、`profile`、`profile-edit`、`audit-status`、`activity-detail`、`my-activities`、`my-matches`、`announcement` 已完成标记: 1. [x] 初始化 `app.js`、`app.json`、`app.wxss` 2. [x] 实现 `utils/request.js` 3. [x] 实现登录态管理 `utils/auth.js` 4. [x] 配置 TabBar 页面 5. [ ] 建立通用组件:`empty-state`、`audit-badge`、`progress-bar`、`activity-card`、`match-card` 6. [x] 完成页面基础壳:`home`、`activity`、`match`、`profile`、`profile-edit`、`audit-status`、`activity-detail`、`my-activities`、`my-matches`、`announcement` 验收标准: 1. 小程序项目可在微信开发者工具启动 2. token 可持久化保存 3. 页面可正常跳转 4. 接口请求封装可统一处理错误和鉴权 ### 阶段 5:资料填写与审核链路联调 目标:跑通第一条完整业务主链路。 小程序侧任务: 1. `profile` 页面展示用户资料摘要、审核状态、完整度 2. `profile-edit` 分步骤填写并自动保存 3. `audit-status` 展示审核状态与驳回原因 已完成标记: 1. [x] `profile` 页面展示用户资料摘要、审核状态、完整度 2. [x] `profile-edit` 分步骤填写并自动保存 3. [x] `audit-status` 展示审核状态与驳回原因 后台侧任务: 1. 管理员登录 2. 待审核用户列表 3. 用户详情查看 4. 审核通过/驳回 已完成标记: 1. [x] 管理员登录 2. [x] 待审核用户列表 3. [ ] 用户详情查看 4. [x] 审核通过/驳回 验收标准: 1. 用户可在小程序完整填写资料 2. 管理员可在后台审核资料 3. 审核结果可同步反馈到小程序 ### 阶段 6:活动系统 状态:进行中 目标:跑通第二条业务主链路“浏览活动并报名”。 后端接口: 1. `GET /activities` 2. `GET /activities/{id}` 3. `POST /activities/{id}/register` 4. `DELETE /activities/{id}/register` 5. 后台活动管理接口 已完成标记: 1. [x] `GET /activities` 2. [x] `GET /activities/{id}` 3. [x] `POST /activities/{id}/register` 4. [x] `DELETE /activities/{id}/register` 5. [x] 后台活动管理接口 小程序页面: 1. 首页活动预告 2. 活动列表页 3. 活动详情页 4. 我的活动页 已完成标记: 1. [ ] 首页活动预告 2. [x] 活动列表页 3. [x] 活动详情页 4. [x] 我的活动页 后台页面: 1. 活动列表 2. 创建活动 3. 编辑活动 4. 发布/下架活动 已完成标记: 1. [x] 活动列表 2. [x] 创建活动 3. [ ] 编辑活动 4. [x] 发布/下架活动 关键校验: 1. 活动已发布 2. 活动报名未截止 3. 用户审核状态已通过 4. 性别名额未满 5. 已报名请求幂等处理 6. 活动开始前 24 小时不可取消 验收标准: 1. 管理员可发布活动 2. 用户可浏览活动并报名 3. 报名状态和按钮态展示正确 ### 阶段 7:匹配系统基础版 状态:进行中 目标:跑通第三条主链路“浏览候选人并双向匹配”。 后端接口: 1. `GET /matches/candidates` 2. `POST /matches/like` 3. `GET /matches/my` 4. `GET /matches/{match_id}/detail` 5. `GET /users/public/{user_id}` 已完成标记: 1. [x] `GET /matches/candidates` 2. [x] `POST /matches/like` 3. [x] `GET /matches/my` 4. [x] `GET /matches/{match_id}/detail` 5. [x] `GET /users/public/{user_id}` 小程序页面: 1. 匹配首页候选人列表 2. 卡片详情弹窗 3. 我的匹配记录页 已完成标记: 1. [x] 匹配首页候选人列表 2. [x] 卡片详情弹窗 3. [x] 我的匹配记录页 核心规则: 1. 过滤已不感兴趣用户、已匹配用户、当天已展示用户 2. 点击感兴趣写入 `match_likes` 3. 若存在反向 like,则生成 `matches` 4. 根据关系返回 Level 1/2/3 不同信息层级 5. 利用数据库唯一约束避免重复匹配 验收标准: 1. 用户可浏览候选人 2. 用户可发送感兴趣 3. 双方互相感兴趣时成功匹配 4. 匹配详情仅双方可见 ### 阶段 8:AI 推荐 状态:进行中 目标:把候选人浏览升级为可解释的智能推荐。 核心任务: 1. 按规格实现 `match_service.py` 2. 实现 `POST /matches/ai-suggest` 3. 输出匹配分和匹配理由 4. 使用 Redis 缓存每日推荐结果 5. 控制推荐多样性,避免结果过于同质化 已完成标记: 1. [x] 按规格实现 `match_service.py` 2. [x] 实现 `POST /matches/ai-suggest` 3. [x] 输出匹配分和匹配理由 4. [ ] 使用 Redis 缓存每日推荐结果 5. [x] 控制推荐多样性,避免结果过于同质化 验收标准: 1. AI 推荐接口可返回 Top N 候选人 2. 每个候选人具备分数和理由 3. 当日推荐列表稳定且不重复 ### 阶段 9:公告与首页运营能力 状态:进行中 目标:补齐内容运营能力和首页展示模块。 核心任务: 1. 完成公告接口:`GET /announcements`、`GET /announcements/{id}` 2. 后台支持公告增删改查 3. 首页展示活动轮播、公告栏、会员推荐区 4. 完成公告详情页 已完成标记: 1. [x] 完成公告接口:`GET /announcements`、`GET /announcements/{id}` 2. [x] 后台支持公告增删改查 3. [x] 首页展示活动轮播、公告栏 4. [x] 完成公告详情页 5. [x] 首页会员推荐区 验收标准: 1. 后台发布公告后首页可见 2. 用户可查看公告详情 ### 阶段 10:微信能力与生产能力补强 目标:让系统达到可试运营水平。 核心任务: 1. 接入微信订阅消息 2. 实现审核结果通知 3. 实现匹配成功通知 4. 配置服务器域名、上传域名、COS 域名 5. 增加登录和匹配接口频控 6. 缓存微信 `access_token` 7. 增加日志、异常监控、后台配置项 验收标准: 1. 审核和匹配消息可正常发送 2. 线上域名配置完整可用 3. 接口具备基本限流能力 ### 阶段 11:后台管理端完善 状态:进行中 目标:让审核、活动运营、公告管理、数据查看进入可实际使用状态。 页面范围: 1. `/login` 2. `/dashboard` 3. `/users` 4. `/users/audit` 5. `/activities` 6. `/activities/new` 7. `/matches` 8. `/announcements` 9. `/settings` 优先级: 1. 管理员登录 2. 待审核队列 3. 活动管理 4. 公告管理 5. 数据看板 6. 系统设置 已完成标记: 1. [x] 管理员后台项目基础初始化 2. [x] 路由结构搭建 3. [x] 登录、看板、用户、活动、匹配、公告、设置页面壳建立 4. [x] 登录页真实业务联调 5. [x] 待审核列表页真实业务联调 6. [x] 活动管理页真实业务联调 7. [x] 公告管理页真实业务联调 8. [x] 数据看板真实业务页面开发 9. [x] 活动编辑基础能力联调 10. [x] 设置页真实业务联调 11. [x] 匹配记录页真实业务联调 12. [x] 用户详情、搜索筛选基础能力联调 13. [ ] 更多后台增强页面与交互优化 验收标准: 1. 审核人员可高效处理审核任务 2. 运营人员可独立管理活动和公告 3. 管理员可查看核心业务数据 ### 阶段 12:测试、部署与上线 状态:进行中 目标:完成交付前的稳定性验证和正式上线准备。 测试范围: 1. 单元测试 匹配分计算、资料完整度计算、审核状态流转、活动报名校验 2. 接口测试 `auth/users/activities/matches/admin` 3. 联调测试 小程序与后端、后台与后端 4. 手工验收 新用户流程、审核驳回重提流程、活动报名流程、双向匹配流程 5. 基础压测 登录、活动列表、匹配列表、like 接口 上线准备: 1. 配置生产环境 `.env` 2. HTTPS 域名与服务器 3. MySQL / Redis 生产实例 4. 腾讯云 COS 正式存储桶 5. 微信小程序服务器域名配置 6. 后端和后台部署 7. 小程序隐私协议、提审资料准备 验收标准: 1. 主链路可完整运行 2. 关键功能通过手工和接口验证 3. 小程序具备提审条件 ## 4. 推荐开发顺序 为保证效率,建议严格按以下顺序推进: 1. 后端基础框架 + 数据库模型 2. 用户登录、资料、头像上传 3. 小程序登录与资料填写页面 4. 后台登录与审核页面 5. 活动系统前后端 6. 匹配系统前后端 7. AI 推荐能力 8. 公告系统 9. 微信通知、看板、系统设置 10. 测试、部署、上线 ## 5. MVP 最小可用范围 如果目标是尽快上线试运营,建议首版只做以下功能: 1. 微信登录 2. 用户资料编辑 3. 提交审核 4. 后台审核 5. 活动列表与活动报名 6. 匹配候选人列表 7. 感兴趣与双向匹配 8. 我的匹配 9. 公告列表 可放到第二阶段的能力: 1. AI 权重后台调参 2. 数据看板复杂图表 3. 微信订阅消息 4. 高级隐私设置 5. 小程序分包优化 6. 更复杂的推荐缓存与去重策略 ## 6. 预估工期 按单人开发、AI 辅助编码、边开发边联调估算: 1. 基础框架和数据库:2-3 天 2. 用户资料与审核链路:3-4 天 3. 活动系统:3-4 天 4. 匹配系统:4-5 天 5. 后台管理端:4-6 天 6. AI 推荐与通知:2-3 天 7. 测试与上线准备:3-4 天 总工期: `21-29 天` 如果只做 MVP: `12-16 天` ## 7. 主要风险与注意事项 1. 微信登录、合法域名、服务器配置容易成为前期阻塞点 2. COS 上传和图片处理链路必须在真实环境验证 3. 审核状态、资料状态、报名状态存在较多边界条件 4. 双向匹配存在并发创建重复记录风险 5. 小程序页面较多,前期若状态管理不统一,后期维护成本会升高 6. 后台和小程序共用后端接口,鉴权体系必须从一开始区分清楚 ## 8. 下一步执行建议 建议立刻开始工程落地,而不是继续停留在规划阶段。 首个执行动作建议为: 1. 创建 `backend/`、`miniprogram/`、`admin-web/` 项目骨架 2. 优先完成 `backend` 初始化 3. 建立数据库模型和迁移 4. 先打通登录、资料、审核主链路 完成上述步骤后,再按规划逐阶段推进即可。