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