一、立项背景与目标
随着俱乐部成员数量增长,传统的手工统计活动记录、排期与人员匹配方式已无法满足高频活动组织需求。为提升活动组织效率、减少人为统计误差、增强会员活跃度,本项目旨在建设一个集活动管理、行为数据分析、智能匹配于一体的轻量化微信小程序系统。系统以提升运营效率、增强用户参与体验为目标,实现活动全流程数字化与智能化。
二、软件功能与核心模块介绍
1. 历史活动查询
提供成员参加过的活动记录,包括时间、场地、类型以及个人数据展示,便于用户查看过往参与情况和管理员调取历史数据。
2. 活跃度排名
自动统计用户参与次数、连续参与天数等行为指标,生成实时活跃度榜单,用于俱乐部内部激励、等级制度或福利发放依据。
3. 取消活动排名
对用户取消报名的行为进行统计,计算取消频次、取消时间点等指标,用作运营分析与规范报名流程的参考依据。
4. 双人活动匹配(双向加权 + 微调 tie-break)
提供智能化双打配对算法,基于双方互选意愿与权重评分进行匹配,包含:
双向选择校验(双方互选才对比权重)
权重得分排序
平手情况下的 tie-break 微调规则
匹配可扩展到多人、多轮匹配场景
三、业务流程与功能路径描述
1. 活动管理流程
用户报名 → 系统记录 → 活动开始后提交结果(或自动更新) → 进入历史活动列表。
2. 行为统计流程(活跃度与取消排名)
系统定时/实时获取报名与取消记录 → 汇总到用户行为模型 → 生成排行榜 → 内部展示或管理员导出。
3. 双人匹配流程
用户进入匹配页面 → 填写/选择意向对象 → 系统根据互选情况筛选符合条件的配对 → 计算双方权重分 → 使用 tie-break 微调 → 输出最终匹配结果 → 管理员可二次审核或直接发布。
一、整体架构与设计思路(含技术栈)
本项目采用前后端分离架构,整体设计围绕“轻量、稳定、可扩展”原则展开:
前端:微信小程序 + Taro(多端实现)
通过 Taro 构建微信端页面组件,实现活动列表、匹配操作、排行榜展示等功能,同时保持代码可跨端复用。
后端:Python + FastAPI
FastAPI 提供高性能异步接口,用于活动管理、数据统计、匹配计算等服务;采用依赖注入与路由模块化设计,保证扩展性和可维护性。
数据库:MySQL
用于存储用户资料、活动记录、历史数据、统计指标;关键查询使用索引优化,提升历史查询与排名统计的性能。
整体架构通过 REST API 进行通信,前端实时获取活动状态与数据结果,同时支持定时任务进行活跃度与取消记录的自动统计。
二、我负责的模块与成果
在项目中,我主要负责以下核心模块开发与交付:
双人活动智能匹配模块(双向加权 + tie-break)
设计并实现权重计算、互选规则校验、平分微调逻辑;
匹配效率提升 约 70%,管理员人工调整减少 80%。
活跃度排名与取消排名统计服务
开发数据聚合 API,构建行为统计模型;
将统计计算从手工表格处理缩短为 毫秒级接口响应。
历史活动记录查询模块(前后端联调)
通过索引与分页优化,使查询性能提升 3~5 倍。
部分前端页面(Taro)功能实现
活动详情页、匹配结果展示页、排行榜 UI。
系统部署与接口文档维护
推动接口标准化,使前后端联调效率提高 50%+。
三、我遇到的难点、坑,以及解决方案
1. 双向加权匹配算法难以处理多人、多互选场景
问题: 不同成员权重相同或出现多个互选组合时容易出现匹配冲突。
解决方案:
引入 tie-break 规则(如优先级、历史匹配次数、规则序号),
使用稳定匹配思路改造权重排序逻辑,
最终实现 可控、稳定、可扩展 的配对结果。
2. 排名统计在高并发/高数据量时性能下降
问题: 活跃度与取消记录计算涉及多表 JOIN,早期 SQL 性能不足。
解决方案:
添加组合索引(phone_tail + cancel_time 等),
引入定时任务预计算核心指标,
使用缓存减少重复查询。
性能从秒级降到 <200ms。
3. Taro 小程序端兼容性问题(UI / 生命周期不同步)
问题: Taro 与微信原生生命周期不完全一致,导致部分页面在返回时状态丢失。
解决方案:
将原本的 onLoad 逻辑迁移到 onShow 中,
全局 store 保存关键状态避免重建,
统一组件的渲染逻辑。
最终稳定了页面数据展示,减少了用户误操作反馈。