Fuju Product Knowledge Base
阜阳本地生活与同城社交产品手册
覆盖微信小程序、Node.js 服务端和 Vue 运营后台的功能边界、业务流程、权限配置、实时通信、部署运维与常见问题,供产品、运营、开发和审核人员统一使用。
System
系统架构#
三个应用独立运行。小程序和后台通过统一 API 访问业务数据,实时场景通过服务端 WebSocket 主动推送。
Reading Guide
功能状态怎么读#
已有前后端闭环
仓库中存在页面、API 和数据实现,可进入测试。真机可用还依赖合法域名与生产配置。
运营可开关或维护
入口、首页内容或集成参数由后台控制,不必重新打包小程序。
依赖用户动作
发布、互动、报名和私聊需登录;微信通知必须由用户逐模板授权。
For Users
用户可以在阜聚做什么#
阜聚把城市发现、同城社交、本地服务和线下娱乐放在一个小程序里。用户既可以直接浏览公开内容,也可以登录后发布、互动、报名和建立自己的同城关系。
从发现阜阳,到认识同频的人
首页根据当前地区组织附近内容,让用户快速找到活动、圈子、城市热点和生活服务;底部五个主入口分别承载发现、地图、同城、组局与个人中心。

无需登录也能看
浏览首页、地图、地点、公开动态、圈子、官方活动和本地攻略,先了解城市正在发生什么。
登录后参与互动
发布动态和旧物、点赞评论、加入圈子、报名组局、预约拍摄、投纸条和发起私聊。
持续收到重要消息
在消息中心查看审核、互动、私聊、预约和活动变化;需要时可逐项授权微信订阅提醒。
Mini Program
首页、搜索、地区与地图#
首页负责城市内容分发,地图页负责地点发现。定位不可用或当前区域无内容时回退到阜阳市区内容。
首页
沉浸顶部、地区入口、固定搜索框、运营头图、功能入口、当前热点、附近组局和热门圈子。
头图后台维护入口后台开关地图发现
地图作为首屏背景;附近、景点、美食、咖啡、亲子等分类同步决定下方当地精选和推荐内容。
独立搜索
搜索落地页包含热门搜索和图文推荐,并聚合地点、动态、圈子等服务端内容。
地区定位
地区页加载阜阳区县、乡镇。位置文案优先显示乡镇,其次区县,不统一写成“阜阳”。
后台功能开关
| 开关 | 控制内容 | 关闭效果 |
|---|---|---|
| 首页双向滑动入口 | 匿名公屏与滑动娱乐 | 隐藏滑动引导和入口 |
| 官方活动 | 同城页活动频道 | 隐藏频道并阻止接口访问 |
| 美食 / 文化 / 旅游 | 首页入口与数据库内容页 | 隐藏相应入口 |
| 旧物 / 约拍 / 纸条 | 独立业务入口 | 隐藏相应入口 |
Community
同城动态与圈子#
同城页包含动态、圈子、活动三个频道。公共动态与圈内内容相互独立,圈内发布入口位于圈子主页底部。
动态信息流
- 图文发布、话题、详情、浏览、点赞、评论和举报。
- 评论回复归入同一主评论,可展开查看。
- 帖子列表使用“浏览 / 点赞 / 评论”文字标识统计。
- 帖子详情内由圈主处理置顶申请。
圈子
- 优先展示已加入圈子;未加入时展示可申请列表。
- 支持创建、加入申请、圈主审核、成员等级和自定义头衔。
- 圈主维护公告、圈规、成员头衔和帖子置顶。
- 少于 10 人时,圈主可申请解散。
| 角色 | 能力 | 显示规则 |
|---|---|---|
| 圈主 | 审核加入、维护规则、授予头衔、处理置顶、符合条件时解散 | 评论区可显示圈主标识;主页不堆叠额外圈主卡片 |
| 圈内成员 | 浏览圈内内容、发布、申请置顶 | 展示圈内等级或授予的头衔 |
| 未加入用户 | 查看公开信息、提交加入申请 | 展示申请入口和状态 |
Activities
组局与官方活动#
用户组局
支持多图、分类、24 小时时间、跨零点、地址、人数、详情须知与可选群二维码。
- 默认全城展示,距离由用户与活动坐标计算。
- 详情顶部显示发局人头像、昵称、私聊和已加入状态。
- 底部固定主要动作;本人可从“我的组局”管理或解散。
- 列表统一白色卡片并显示报名中、已结束。
官方活动
仅后台创建,小程序完整展示普通、投票、抽奖和评选活动。
- 运营维护图片、规则、选项、时间和状态。
- 支持草稿、已发布、已结束。
- 后台执行开奖并向中奖者生成消息。
- 同城“活动”频道可由后台整体关闭。
Local Services
本地生活服务#
美食
数据库驱动的本地美食图文与推荐店铺,可与地图分类联动。
文化
阜阳文化列表和图文内容,由后台运营维护。
旅游
路线规划、行程节点与图文信息,数据不在小程序写死。
旧物
多图发布、详情、收藏、状态、真正删除和“我的发布”。
发布需登录可审核约拍
摄影师列表、作品详情、拍者申请、拍者中心、排期与带联系方式的预约。
拍者审核纸条
投放一句话和微信联系方式,也可随机抽取;本人可删除自己的纸条。
约拍闭环
Messaging
匿名公屏、私聊与消息中心#
匿名公屏
消息入库并经 WebSocket 实时广播,支持文字、图片、视频、GIF / Live 图资源和表情。进入连接,离开或后台时断开。
WebSocket一对一私聊
支持文字、图片、GIF、视频和 CDN 表情。按对方聚合未读;接收者正在对应聊天页时不触发微信订阅提醒。
WebSocket需登录| 分类 | 内容 | 未读处理 |
|---|---|---|
| 系统信息 | 审核、申请、活动变更、预约处理、系统消息 | 查阅后标已读并跳到具体业务 |
| 互动信息 | 点赞、评论、回复、圈内互动 | 点击查阅自动消除未读 |
| 私聊 | 头像、昵称、最后消息和红点/未读数 | 打开会话后清除该对方未读 |
Entertainment
滑动娱乐与城市躲猫猫#
酒局工具
- 全屏指尖游戏,触点跳动直到停止。
- 轮盘、骰子、愤怒大叔、同桌争霸。
- 填写姓名与杯数生成喝酒认怂书。
- 重要操作支持震感和音效。
城市躲猫猫
- 感染/淘汰模式、人数、猫数、倒计时和技能配置。
- 以当前位置设置地图中心与安全围栏。
- 成员头像、GPS 位置、身份、存活和越界状态实时同步。
- 开局、抓捕确认、感染转换、结束结算与 MVP。
Account
登录、资料与个人中心#
个人主页
沉浸背景图、头像昵称和内容;上滑后固定白色用户栏,可更换背景和发起私聊。前十位注册用户可显示专属认证标识。
偏好设置
震感开关保存到服务端,重新打开或换设备仍保持;Tab、频道和游戏统一读取该偏好。
Admin Console
运营后台模块#
Vue 3 + Vite 后台提供响应式侧栏、全局搜索、加载反馈、路由权限与操作审计。运营概览集中展示业务指标、审核任务、用户趋势和匿名化位置热力分布。

| 分组 | 页面 | 主要能力 |
|---|---|---|
| 概览 | 运营概览 | 业务指标、待审核数、趋势、最新内容、用户位置热力图和乡镇排名 |
| 内容运营 | 首页、官方活动、美食、文化、旅游、地点 | 头图跳转、内容 CRUD、排序、上下线、开奖、地图内容 |
| 社区治理 | 动态、公屏、圈子、组局、躲猫猫、约拍、旧物 | 审核、状态、内容处置与业务记录 |
| 用户风控 | 用户、反馈、举报 | 账号状态、问题受理和举报处置 |
| 系统 | 管理员、日志、设置 | 角色、审计、功能开关和集成配置 |
Governance
审核、状态与治理#
内容审核
动态、组局、旧物和拍者申请进入对应后台。通过或驳回后写入站内系统消息;用户有额度时再发送微信审核通知。
举报与反馈
后台受理违规举报和用户问题,管理员结果与关键操作写入审计日志。
删除语义
多类内容当前使用物理删除接口,后台删除需填写原因。关联数据要由事务和数据库约束保证完整性。
圈内自治
圈子加入、头衔、规则与置顶由圈主处理,不混入平台日常审核。
Configuration
系统配置#
超级管理员统一维护功能开关和微信集成。敏感值在数据库中以 AES-256-GCM 加密,后台读取仅返回掩码和配置状态。
小程序与地图
AppID、AppSecret、地图 Key,以及首页入口和官方活动等功能开关。
微信支付
启用状态、商户号、API v3 密钥、证书、公私钥和通知地址;启用前校验必要字段。
订阅消息
总开关、formal / trial / developer 环境,以及各业务模板 ID 和字段键顺序。
运行策略
功能与运营参数的变更写入管理员审计,服务端保存后刷新配置缓存。
RBAC
管理员角色权限#
| 角色 | 名称 | 当前范围 |
|---|---|---|
super_admin | 超级管理员 | 全部模块,包括管理员、审计与系统设置 |
operator | 内容运营 | 概览、首页/美食/文化/旅游/地点、组局、官方活动、旧物、躲猫猫 |
moderator | 社区审核 | 概览、动态、公屏、圈子、组局、活动、躲猫猫、约拍、旧物、举报 |
support | 客服 | 概览、用户、反馈、举报 |
Business Flows
核心业务流程#
内容发布与审核
组局报名与提醒
Notifications
站内消息与微信订阅通知#
站内消息负责可靠留痕,微信订阅消息只作离线触达。用户需按具体模板授权,每次接受通常增加该模板一次额度,模板之间不能共享。
| 模板业务 | 用途 | 典型触发 |
|---|---|---|
| 圈子动态 | 提醒圈内成员 | 圈内新内容发布 |
| 点赞 / 评论 | 内容互动 | 帖子被赞、被评论或回复 |
| 活动报名 | 通知发起人 | 新用户报名 |
| 审核 / 申请结果 | 审核和通用申请 | 内容、拍者、圈子、置顶状态变化 |
| 聊天消息 | 私聊离线触达 | 接收者不在对应聊天页 |
| 活动开始 / 变更 / 结果 | 活动全周期 | 即将开始、时间地址变更、结果公布 |
| 预约提醒 | 约拍闭环 | 新预约、确认、拒绝、取消 |
- 授权额度默认收起,用户主动展开后逐模板续订。
- 客户端只请求当前动作需要的模板,避免无关打扰。
- 发送成功后扣减对应模板额度,失败不误扣。
- 点击消息携带业务 ID,直接到旧物详情、帖子、活动或具体预约。
Realtime
实时通信与请求治理#
| 通道 | 路径 | 认证 | 用途 |
|---|---|---|---|
| 匿名公屏 | /ws/anonymous-chat | 匿名访客标识 | ready、message、心跳 |
| 私聊 | /ws/private-chat | Token + 对方 ID | ready、send、message、error |
| 躲猫猫 | /ws/hide-seek | Token + 房间 ID | 实时房间 snapshot |
客户端生命周期
- 进入页面连接,收到 ready 或首个快照后显示“已连接”。
- 页面隐藏、离开或进入后台时断开。
- 异常按 2、4、8、15、30 秒退避重连,恢复后拉取最新快照。
- 登录、普通查询、上传和发消息使用独立额度;合并重复请求、搜索防抖、隐藏后停止刷新。
API
API 模块概览#
默认前缀为 /api。这里展示业务域,不替代精确接口契约。
GET /api/health 返回服务与数据库状态,可用于监控探针;生产环境不宜向公网暴露过多内部信息。Data
数据、定位与删除#
业务数据
用户、动态评论、圈子、组局、地点攻略、旧物、拍者预约、纸条、聊天、官方活动、躲猫猫、通知、订阅额度和审计日志。
用户定位
小程序保存 GCJ-02 坐标与区县/乡镇。后台 Leaflet 展示前转 WGS84;热力图按网格聚合,不显示身份和轨迹。
物理删除
本人删除和后台删除应移除记录,而非仅改状态。删除前检查外键、媒体、消息引用和统计影响。
备份恢复
迁移与永久删除前备份;生产环境验证加密、保留周期、异地存储和恢复演练。
Development
本地开发#
服务端
cd server
cp .env.example .env
npm install
npm run db:init
npm run migrate
npm run dev运营后台
cd admin
npm install
npm run dev微信小程序
使用 HBuilderX 将仓库根目录运行到微信开发者工具。真机测试需保证网络互通;生产必须使用微信允许的 HTTPS 域名,不长期依赖局域网 IP 或临时隧道。
| 场景 | 检查 |
|---|---|
| 服务状态 | 访问 /api/health 并查看 Node 与数据库日志 |
| 3000 端口占用 | 确认是否已有同一服务进程,不重复启动 |
| 后台构建 | cd admin && npm run build |
| 服务端测试 | cd server && npm test |
| 数据库 | 运行迁移并确认最新版本成功记录 |
Production
生产部署检查清单#
基础设施
- Node.js 18+、MySQL、进程守护和日志轮转。
- Nginx 终止 HTTPS,并转发 WebSocket Upgrade。
- API、上传和后台使用稳定域名。
- 监控、告警、备份与恢复演练。
微信后台
- 配置 request、uploadFile、downloadFile、socket 合法域名。
- 后台填入生产小程序、地图、支付和通知配置。
- 订阅环境切到 formal 并核对字段键。
- 分享冷启动页提供返回首页兜底。
安全配置
- 强随机 JWT_SECRET 和独立 CONFIG_ENCRYPTION_KEY。
- 数据库最小权限且不直接暴露公网。
- CORS 限制可信来源。
- 上传校验并使用对象存储/CDN。
性能容量
- 不同请求类型分别限流。
- 静态缓存压缩,主包控制在 2MB 内。
- 列表分页、搜索防抖、请求合并。
- 监控 WebSocket 心跳、重连和连接数。
Security & Privacy
安全、隐私与合规#
- 位置、微信号、联系方式、聊天媒体需说明用途、范围、保存期限和删除方式。
- 躲猫猫只在明确授权和对局期间采集位置,退出、后台或结束即停止。
- 管理员敏感操作使用 RBAC、二次确认和审计,超级管理员采用强密码。
- 支付回调验签且幂等,私钥只保存在服务端。
- 聊天、公屏、动态和图片配套内容安全、举报、封禁与申诉。
- 任何密钥、密码或令牌都不进入客户端、Wiki、日志或前端产物。
Troubleshooting
常见问题#
公屏一直“连接中”或消息不实时?
检查 WebSocket 服务是否挂载、代理是否转发 Upgrade、微信 socket 合法域名和 wss:// 地址。客户端应收到 ready 后再显示已连接。
真机图片加载失败?
检查 URL 是否稳定 HTTPS、公网可访问、已加入 downloadFile 合法域名、MIME 正确且没有临时隧道警告页。生产使用对象存储/CDN。
分享页进入后返回失效?
分享冷启动没有上一页栈。详情页判断页面栈,只有一层时使用 reLaunch 或 switchTab 回首页。
订阅消息没有发送?
检查总开关、模板 ID、字段键、运行环境、openid、该模板额度和微信接口返回。不同模板额度不能共享。
欢迎序号为何与用户 ID 不一致?
数据库删除用户后主键不会自动回退。欢迎排序应使用稳定注册顺序或创建时间计算,仅新用户增加。
热力点为什么偏移?
小程序坐标通常为 GCJ-02,Leaflet / OSM 为 WGS84。后台展示前统一转换,避免重复转换。
页面到顶或到底还会拖动外层?
让唯一滚动容器承担滚动,配置 disableScroll 并用 scroll-view;聊天键盘弹出时调整消息区,不移动整个页面。

