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