# FiveTeam **Repository Path**: shawn-xi/group-five-projects ## Basic Information - **Project Name**: FiveTeam - **Description**: 亲爱的组员们 一起过来奋斗吧!!!!! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-24 - **Last Updated**: 2026-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 面试达人 - Python 后端完整框架 ## 项目介绍 亲爱的组员们,一起过来奋斗吧!!!!! ## 架构总览 ``` ┌──────────────────────────────────────────────────────────┐ │ MySQL 数据库 │ │ (23张表:RBAC + 业务 + 视频通话 + 信令) │ └────┬──────────────────┬──────────────────┬───────────────┘ │ │ │ ┌────▼─────┐ ┌────────▼──────┐ ┌──────▼──────────┐ │ app_api │ │ admin_api │ │ SocketIO │ │ 端口8001 │ │ 端口8002 │ │ 端口8003 │ │ JWT密钥A │ │ JWT密钥B │ │ WebRTC信令 │ │ 用户端API│ │ 后台管理API │ │ 即时消息推送 │ └──────────┘ └───────────────┘ └─────────────────┘ │ │ │ ┌────▼─────┐ ┌────────▼──────┐ ┌──────▼──────────┐ │面试App前端│ │ 后台管理前端 │ │ Web/Flutter端 │ │(Vue/React)│ │ (独立部署) │ │ 实时通信客户端 │ └──────────┘ └───────────────┘ └─────────────────┘ ``` ## 目录结构 ``` backend/ ├── common/ # 共享层 │ ├── config.py # 配置(JWT/AI/Coturn/端口) │ ├── database.py # 数据库(同步+异步双引擎) │ ├── models.py # 23张表 ORM 模型 │ └── schemas.py # Pydantic 请求/响应 │ ├── app_api/ # 用户端 API(端口8001) │ ├── main.py # FastAPI 入口 │ ├── auth.py # 用户端 JWT 认证 │ └── routers/ │ ├── auth_router.py # 登录/注册/验证码 │ ├── user_router.py # 用户信息 │ ├── question_router.py # 题库(常见题+代码题) │ ├── interview_router.py # AI面试 + 视频通话信令API │ ├── chat_router.py # 好友/聊天 │ ├── notification_router.py # 通知 │ ├── search_router.py # 搜索 │ └── news_router.py # 动态 │ ├── admin_api/ # 后台管理 API(端口8002) │ ├── main.py # FastAPI 入口 │ ├── auth.py # 后台 JWT 认证(仅管理员) │ └── routers/ │ ├── auth_router.py # 后台登录 │ ├── dashboard_router.py # 数据总览仪表盘 │ └── management_router.py # 用户/题库/面试/视频/日志/通知/角色管理 │ ├── services/ # 业务服务 │ ├── ai_service.py # 通义千问 AI 面试 + 语音转文字 │ └── socketio_server.py # SocketIO 信令服务器(WebRTC+即时消息) │ ├── sql/ │ └── init.sql # 数据库初始化(建表+种子数据) ├── .env # 环境变量 ├── requirements.txt # Python 依赖 ├── start.py # 一键启动脚本 └── README.md # 本文件 ``` ## 数据库表(23张) | 分类 | 表名 | 说明 | |------|------|------| | RBAC | `role`, `permission`, `role_permission` | 角色权限体系 | | 用户 | `user`, `user_stats` | 用户信息+统计 | | 好友 | `friend`, `chat_message` | 好友关系+聊天记录 | | 题库 | `question_category`, `question`, `coding_question`, `code_submission`, `featured_bank`, `user_favorite` | 完整题库系统 | | 面试 | `interview_schedule` | 面试日程 | | AI | `ai_interview_session`, `ai_interview_qa` | AI面试会话+问答记录(含上下文JSON) | | 语音 | `voice_record` | 语音转文字记录 | | 视频 | `video_call`, `webrtc_signal_log` | 视频通话记录+信令日志 | | 其他 | `operation_log`, `notification`, `news_feed`, `search_history`, `data_version` | 日志/通知/动态/搜索/版本控制 | ## 安装教程 ### 1. 创建数据库 ```bash mysql -u root -p < sql/init.sql ``` ### 2. 安装依赖 ```bash cd backend pip install -r requirements.txt ``` ### 3. 配置环境变量 编辑 `.env`,修改数据库密码和 Coturn 配置 ### 4. 启动服务 ```bash # 方式一:一键启动(三个服务同时启动) python start.py # 方式二:分别启动 uvicorn app_api.main:app --reload --port 8001 # 用户端 uvicorn admin_api.main:app --reload --port 8002 # 后台管理 uvicorn services.socketio_server:socketio_app --port 8003 # SocketIO ``` ## API 文档 | 服务 | 地址 | |------|------| | 用户端 Swagger | http://localhost:8001/docs | | 后台管理 Swagger | http://localhost:8002/docs | ## 默认账号 | 账号 | 密码 | 角色 | |------|------|------| | 13800000001 | admin123 | 超级管理员 | ## 安全隔离 | 隔离层 | 用户端(8001) | 后台(8002) | |--------|:-----------:|:----------:| | JWT 密钥 | `APP_JWT_SECRET_KEY` | `ADMIN_JWT_SECRET_KEY` | | Token 标记 | `type: "app"` | `type: "admin"` | | 角色限制 | 所有用户 | 仅 super_admin/operator | | 跨服务访问 | 后台token→用户端: **401** | 用户端token→后台: **401** | ## WebRTC 视频通话流程 ``` 1. 前端调用 POST /api/interview/video/start → 创建 room_id 2. 前端通过 SocketIO 发送 call_user 事件 → 通知被叫方 3. 被叫方 accept_call → 双方加入信令房间 4. 双方交换 SDP offer/answer → SocketIO 转发 signal 事件 5. 双方交换 ICE candidate → 建立 P2P 连接 6. 若 P2P 失败 → Coturn TURN 中继转发 7. 挂断 hangup → 更新 video_call 表状态 + 记录时长 ``` ## 权限体系 | 角色 | 用户端(8001) | 后台(8002) | |------|:---:|:---:| | super_admin | ✅ | ✅ 全部 | | operator | ✅ | ✅ 部分 | | user | ✅ | ❌ | ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request