共享文库方案设计
总体架构
前端:微信小程序(登录、上传、浏览、收藏、评论、分享、离线缓存)
后端:Flask + Flask-RESTful 或 Flask-Smorest(API),PostgreSQL(主数据),Redis(缓存、限流、Celery broker)
对象存储:腾讯 COS / 阿里 OSS / S3(推荐前端直传,服务端下发临时凭证或签名)
异步任务:Celery + Redis(缩略图、OCR、索引)
搜索:Postgres ts_vector 起步,Meilisearch/Elasticsearch 可选
鉴权:微信 code -> openid -> 本端创建/查找用户,返回 JWT(flask_jwt_extended)
核心功能模块与数据模型(简化)
用户(微信 openid 关联)
文档资源(元信息、文件 URL、类型、标签、权限)
评论、收藏、下载/分享记录
权限/库(公共/私有/小组)
API 设计要点
RESTful 资源:/api/docs/, /api/docs/{id}/, /api/docs/{id}/comments/, /api/favorites/, /api/users/me
支持分页、筛选(按标签、类型、owner)、排序(最新/热度)
文件处理任务异步:上传后入队列:生成缩略图、提取文本(OCR/Tika)、建立全文索引
权限:公开/私人/指定用户组;API 层校验 owner 和 ACL
搜索策略
起步:使用 PostgreSQL 的 ts_vector(内置)做全文搜索
进阶:Meilisearch(简单、速度快)或 Elasticsearch(功能强)
性能与安全
使用对象存储避免数据库存二进制
对上传文件做类型和大小校验,必要时做病毒扫描
对高频接口做限流(DRF throttle + Redis)
HTTPS、CORS、CSRF(小程序一般使用 token header)
部署与运维(简要)
本地开发:python manage.py runserver_plus 或 docker-compose up
生产:Docker + Gunicorn + Nginx;配置域名并在微信后台添加合法请求域名与下载域名
自动化:CI(lint -> tests -> build image -> deploy)
发与测试建议
先实现最小可用产品(上传/浏览/分享/收藏)
编写单元测试与 API 测试(pytest + DRF)
使用 Postman / Insomnia 或 微信开发者工具调试小程序端
可选增强功能
文档预览(PDF 转图片/HTML)
OCR 提取全文并建立搜索索引
管理后台(Django admin / 自建后台)
分享链路统计、访问控制与过期链接
1 | cd /Users/shgny/Project/SharedLibrary/backend |