Files
2026-05-09 16:40:29 +08:00

168 lines
7.4 KiB
Markdown
Raw Permalink 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.
## 用户端(前端:Web/App/小程序)需要的功能规划
> 前端技术栈使用 uniapp ,需要对 h5、小程序、app 进行支持
前端的目标是让用户“**快速发现地点 → 看懂怎么去怎么拍 → 愿意贡献内容 → 形成互动**”。建议把用户端拆成 6 个页面域:发现、地点、创作、互动、约拍、我的。
**阶段 1MVP 必须有)**
* 登录注册:手机号/邮箱/第三方(可后置),基本资料(昵称、头像、城市、身份:coser/摄影/都可)
* 地图发现:地图点位展示、同城切换、附近/范围检索、地点列表与地图联动
* 地点详情:场景描述、交通方式、最佳拍摄时间建议、难走路径说明、示例图片/作品、收藏按钮
* 上传地点:表单(标题、城市、坐标、描述、交通、时间建议、路线困难说明)+ 上传示例图;提交后提示“待审核”
* 我的:我的收藏、我上传的地点(审核状态:待审/通过/驳回原因)、积分概览(先只显示即可)
**阶段 2(社区增强)**
* 评论与回复:评论列表、回复、@、评论举报
* 评分:1~5 星 + 可选短评、展示平均分/评分数
* 标签筛选:按标签筛地点、热门标签
* 搜索:关键词(地点名/描述/标签)
**阶段 3(约拍)**
* 约拍广场:发布约拍单、筛选(城市/时间/风格/预算/互免)
* 约拍详情:报名、接受/拒绝、状态(开放/匹配/结束)
* 站内沟通:会话列表、消息、拉黑/举报(可选但通常需要)
**阶段 4(活动)**
* 活动列表与详情:活动发布、报名、通知、活动相册(作品沉淀回地点)
**阶段 5(商业化)**
* 商业标识:推广位/商家地点清晰标注
* 会员中心:权益展示、购买/续费、发票(如需要)
---
## 后端(服务端)需要的功能规划
后端的目标是“**统一数据与规则**”:地图检索、UGC审核、积分、互动、约拍/活动状态机、统计与风控。建议一开始用**单体服务 + 模块化代码结构**,以后按流量再拆。
**基础能力(无论哪个阶段都要有)**
* 鉴权与权限:JWT/Session、角色(user/admin/moderator)、接口权限控制
* 地理能力:坐标存储、附近/范围查询、同城筛选、排序(热门/最近/评分/距离)
* 文件与图片:上传签名、回调入库、图片元信息、缩略图、鉴黄/鉴政(可接第三方)
* 内容安全与风控:频率限制、防刷、敏感词、黑名单、设备/账号风控(起步先做最基本)
* 审核体系:所有UGC都有 audit_statuspending/approved/rejected)与驳回原因
* 通用能力:日志、审计日志、监控、备份、任务队列(生成缩略图/统计汇总)
**阶段 1MVP 的核心 API**
* 用户:注册登录、资料、城市
* 地点:创建/编辑/删除(软删)、列表、详情、地图点位、附近查询
* 地点图片:上传、设封面、删除
* 收藏:收藏/取消收藏、我的收藏列表
* 积分:上传地点审核通过后发放积分(用积分流水 point_ledger
**阶段 2(社区增强 API**
* 评论:发评论/回复、评论列表、删除、举报
* 评分:评分写入/更新、地点评分聚合(avg/count 缓存)
* 标签:标签管理(用户可选/管理员维护)、地点打标签
* 点赞:地点/评论/图片点赞(可选)
**阶段 3(约拍 API**
* 约拍单:发布、编辑、关闭、列表筛选、详情
* 报名/邀请:报名、接受/拒绝、撤回、状态机
* 私信:会话、消息、已读、拉黑(如做)
**阶段 4(活动 API**
* 活动:发布、报名、取消、通知、活动相册
* 活动与地点关联:活动绑定集合地点、活动产出作品回流地点
**阶段 5(商业化 API**
* 推广:投放创建、排期、展示策略、素材
* 统计:曝光/点击/收藏转化日统计
* 会员:权益校验、购买、到期、限制策略(上传额度/置顶次数等)
---
## 管理端(后台/运营端)需要的功能规划
管理端的目标是“**保证内容质量 + 提升运营效率 + 可追溯**”。后台一定要有“列表处理效率”,否则审核会拖垮你。
**阶段 1MVP 必须有)**
* 登录与权限:管理员/审核员角色
* 地点审核:待审列表、详情预览(含地图位置与图片)、通过/驳回(填写原因)、下架/恢复
* 地点管理:编辑纠错(坐标、城市、描述)、合并重复地点(可后置)
* 图片审核:图片待审、批量通过/驳回
* 用户管理:用户列表、封禁/解封、查看用户上传历史
* 操作日志:谁在什么时候做了什么(审计日志)
**阶段 2(社区治理)**
* 评论审核:待审/举报队列、批量处理
* 举报中心:按优先级处理(地点/评论/图片/用户),处理结论记录
* 标签管理:标签新增、合并、禁用、分类维护
* 风控面板:高频上传/刷分/异常账号提示(起步可以非常简单)
**阶段 3(约拍/活动运营)**
* 约拍管理:违规约拍单下架、用户投诉处理、黑名单
* 活动管理:活动审核(如需要)、报名数据导出、群发通知(站内/短信可选)
**阶段 5(商业化运营)**
* 推广位管理:排期、素材审核、定价策略
* 报表:曝光/点击/转化、同城/标签维度分析、ROI
* 商家/合作方管理:资质、合同/发票信息(如果走到这一步)
# 技术栈要求
下面是**仅技术栈规定**
## 总体形态
* 架构:**前后端分离**
* 用户端:**uni-app**(优先小程序 + H5,后续可打包 App)
* 服务端:**Python + FastAPI**REST API 为主)
* 管理端:**基于 FastAPI 的管理后台**(可用现成 Admin 组件快速生成)
---
## 前端(uni-app)技术栈规定
* 框架:uni-app(建议 Vue3
* UI 组件库:固定选一套(如 uView / thorui / NutUI),避免混用
* 状态管理:PiniaVue3)或 uni-app 官方推荐方案(二选一)
* 网络请求:统一封装(token 自动携带、错误码统一处理)
* 地图能力:统一选定一个地图服务(国内优先高德/腾讯),多端适配按同一供应商方案走
* 图片上传:使用对象存储直传(前端上传、后端签名/回调)
---
## 后端(FastAPI)技术栈规定
* Web 框架:FastAPI
* ASGI 服务器:Uvicorn(生产可配 Gunicorn + UvicornWorker
* ORMSQLAlchemy 2.x(或 SQLModel,二选一且全项目统一)
* 数据库迁移:Alembic
* 数据库:PostgreSQL
* 强烈建议:**PostGIS**(地理位置检索/附近查询/范围查询)
* 缓存与消息:Redis
* 用途:限流、验证码、缓存、任务队列 broker(如需)
* 异步任务(可选但建议预留):Celerybroker 用 Redis
* 对象存储:S3 兼容(MinIO/OSS/COS 任一,统一用 S3 兼容 SDK 方案)
* 鉴权:JWTaccess + refresh)或 OAuth2 password flow(统一规范)
* 数据校验:PydanticFastAPI 自带)
* 日志:标准 logging + 结构化日志(JSON
* 错误监控:Sentry(或同类错误上报方案)
---
## 管理端技术栈规定(基于 FastAPI)
* 管理后台:**sqladmin / fastapi-admin**(二选一且统一)
* 权限:RBAC(至少 admin / moderator / user
* 审计:管理操作写入审计日志表(谁、何时、对什么做了什么)