TIP 的目标不是只做一个前端页面或单独的推荐算法脚本,而是把“社区内容产品”和“推荐系统”放进同一个完整工程中。用户可以完成正常的社区互动,系统也可以基于这些互动行为训练模型并返回个性化推荐结果。
这个项目适合用于:
- GitHub 作品集展示
- 课程设计或毕业设计提交
- Vue + Django 全栈项目练习
- 推荐系统工程化落地示例
前端位于 frontend_vue/,基于 Vue 3、TypeScript 和 Vite 构建,负责:
- 首页信息流
- 帖子详情页
- 发帖与编辑页
- 个人中心
- 管理后台页面
- 调用社区、后台和推荐接口
前端默认通过 Vite 代理将 /api 请求转发到 Django,因此第三方本地运行时通常不需要额外处理跨域问题。
后端位于 backend_django/,基于 Django 构建,负责:
- 用户注册、登录、退出和会话恢复
- 社区帖子、评论、关注、互动接口
- 管理端审核与日志接口
- 推荐数据导出与训练命令
- 统一 API 响应结构
后端当前使用 SQLite,适合演示、课程项目和本地运行。后续如果需要上线,可以替换为 PostgreSQL 或 MySQL。
推荐系统位于 recommend_system/,负责:
- 读取交互导出数据
- 构建用户-内容交互矩阵
- 使用 ALS 训练隐式反馈模型
- 保存模型和映射文件
- 为后端在线推荐提供模型文件支持
推荐系统并不是孤立存在的,而是通过 train_recsys 命令与业务数据库联通。
- 注册与登录
- 浏览首页内容流
- 查看帖子详情
- 发布与编辑帖子
- 评论帖子
- 点赞、收藏、分享帖子
- 关注作者
- 查看个人主页和个人内容
- 查看后台总览信息
- 审核帖子
- 管理评论可见性
- 切换用户是否为管理员
- 查看审计日志
- 记录阅读、点赞、收藏、分享等行为
- 导出交互数据到 CSV
- 执行离线训练
- 在线接口返回个性化推荐结果
- 模型异常时回退为热门内容
项目的推荐闭环如下:
- 用户在前端浏览或互动。
- 后端记录行为到
PostInteraction。 - 训练命令从数据库导出
daily_interactions.csv。 - ALS 模型训练完成后生成模型文件。
- 推荐接口读取模型结果并返回帖子列表。
- 当模型缺失或出错时,系统自动回退到热门排序。
当前已纳入推荐信号的行为包括:
readlikefavoriteshare
README.md:GitHub 首页说明requirements.txt:根 Python 依赖run_project.sh:一键启动脚本.env.example:环境变量模板docs/:项目文档目录
backend_django/backend_django/:Django 配置backend_django/community/models.py:数据模型backend_django/community/views.py:业务接口backend_django/community/recommendation.py:在线推荐逻辑backend_django/community/recsys_pipeline.py:推荐训练管道backend_django/community/management/commands/:训练与演示数据命令
frontend_vue/src/api/:接口请求封装frontend_vue/src/components/:页面和组件frontend_vue/src/composables/:状态逻辑和业务组合函数
recommend_system/recommender.py:训练入口recommend_system/recsys/data.py:数据处理recommend_system/recsys/trainer.py:模型训练与评估
对于第三方用户,建议按照以下最短路径运行:
git clone <your-repo-url>
cd tip
cp .env.example .env
bash run_project.sh --install如果需要演示数据:
cd backend_django
python manage.py seed_demo_data