# Live streaming project **Repository Path**: north-dream-testing/live-streaming-project ## Basic Information - **Project Name**: Live streaming project - **Description**: 直播课堂是一个面向教学场景的企业级直播管理系统,专注于为教学和测试练习提供完整的直播生命周期管理。系统采用现代化的微服务架构,支持多角色权限管理、实时音视频互动、直播场次管理、运营数据监控等核心功能。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-23 - **Last Updated**: 2026-10-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# 北梦测直播课堂 ### 面向教学与测试练习的企业级直播系统 [![Java](https://img.shields.io/badge/Java-17-orange.svg)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-4.0.8-brightgreen.svg)](https://spring.io/projects/spring-boot) [![Vue](https://img.shields.io/badge/Vue-3.x-blue.svg)](https://vuejs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)](https://www.typescriptlang.org/) [![MySQL](https://img.shields.io/badge/MySQL-8.4-blue.svg)](https://www.mysql.com/) [![LiveKit](https://img.shields.io/badge/LiveKit-1.13.7-purple.svg)](https://livekit.io/) [![License](https://img.shields.io/badge/License-Private-red.svg)]() **让每一场直播,都有迹可循** [快速开始](#-快速开始) • [功能特性](#-功能特性) • [系统架构](#-系统架构) • [界面预览](#-界面预览) • [部署指南](#-部署指南) • [API 文档](#-api-文档)
--- ## 项目简介 **北梦测直播课堂**是一个面向教学场景的企业级直播管理系统,专注于为教学和测试练习提供完整的直播生命周期管理。系统采用现代化的微服务架构,支持多角色权限管理、实时音视频互动、直播场次管理、运营数据监控等核心功能。 ### 核心价值 - 完整的直播生命周期管理:从创建、开播、监控到结束的全流程追踪 - 多角色权限体系:管理员、主播、观众三种角色,权限隔离清晰 - 实时运营监控:工作台实时展示关键运营指标,支持数据驱动决策 - 音视频质量保障:基于 LiveKit 的专业音视频方案,支持断线重连和异常告警 - 操作审计追踪:所有关键操作留痕,满足合规要求 ### 技术栈 | 层级 | 技术选型 | 说明 | |------|---------|------| | **后端服务** | Java 17 + Spring Boot 4.0.8 | 企业级后端框架,稳定可靠 | | **管理前端** | Vue 3 + TypeScript + Element Plus | 现代化前端技术栈 | | **移动端** | Android + Kotlin + Compose | 原生 Android 应用 | | **音视频** | LiveKit Server 1.13.7 | 专业音视频通信方案 | | **数据库** | MySQL 8.4 | 关系型数据存储 | | **缓存** | Redis 7.4 | 高性能缓存(可选) | | **对象存储** | MinIO | 分布式对象存储(可选) | | **容器化** | Docker + Docker Compose | 标准化部署方案 | --- ## 功能特性 ### 核心功能模块 #### 1. 用户与权限管理 - **多角色体系**:管理员、主播、观众三种角色 - **账号生命周期**:创建、启用、停用、密码重置 - **权限控制**:基于角色的访问控制(RBAC) - **操作审计**:记录所有敏感操作,支持追溯查询 #### 2. 直播场次管理 - **场次创建**:支持预约直播、设置标题和分类 - **状态流转**:准备开播 → 直播中 → 直播中断 → 关闭中 → 已结束 - **实时监控**:在线人数、峰值在线、展示人气等指标 - **异常检测**:主播断连、媒体中断、观众播放错误等自动识别 - **恢复机制**:中断后自动重试,超时告警 #### 3. 运营工作台 - **实时数据看板**:总场次、当前直播间、活跃主播、在线人数等 - **时间范围筛选**:支持自定义时间段的数据统计 - **人气算法配置**:可调节展示增量,优化观众体验 - **数据可视化**:图表展示关键指标趋势 #### 4. 举报与审核 - **举报管理**:观众举报处理流程 - **审核处置**:管理员审核举报内容并做出处置决定 - **反馈机制**:处理结果通知举报人 #### 5. 质量监控与告警 - **场次质量比较**:对比不同场次的技术指标 - **异常告警**:实时检测并推送异常事件 - **告警处置**:待处理、处理中、已完成状态管理 - **历史追溯**:完整的告警记录查询 #### 6. 音视频互动 - **实时通话**:基于 WebRTC 的低延迟音视频传输 - **屏幕共享**:支持主播屏幕共享 - **弹幕聊天**:实时消息互动 - **关注互动**:观众关注主播功能 - **摄像头控制**:主播可切换前后摄像头 ### 高级特性 - **断线重连**:网络不稳定时自动重连,保证直播连续性 - **多实例支持**:支持多个直播间同时运行 - **数据备份恢复**:完整的数据备份和恢复方案 - **API 限流**:防止接口滥用的保护机制 - **媒体会话管理**:专业的媒体资源调度 --- ## 系统架构 ### 整体架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 客户端层 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Web 管理端 │ │ Android App │ │ 观众端 H5 │ │ │ │ (Vue 3) │ │ (Compose) │ │ (WebRTC) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ API 网关层 │ │ Spring Boot RESTful API │ │ 端口:19080 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 业务服务层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 用户服务 │ │ 直播服务 │ │ 审计服务 │ │ 告警服务 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 基础设施层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ MySQL │ │ LiveKit │ │ Redis │ │ MinIO │ │ │ │ 数据库 │ │ 音视频 │ │ 缓存 │ │ 存储 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### 技术架构特点 - **分层架构**:清晰的职责分离,便于维护和扩展 - **微服务化**:业务模块独立部署,互不影响 - **容器化部署**:Docker Compose 一键启动所有服务 - **高可用性**:支持服务健康检查和自动重启 - **数据安全**:密码加密存储,敏感操作审计 ### 目录结构 ``` live-classroom-dev/ ├── server/ # Java 后端服务 │ ├── src/ │ │ ├── main/ │ │ │ ├── java/ # 业务代码 │ │ │ └── resources/ # 配置文件 │ │ └── test/ # 测试代码 │ ├── pom.xml # Maven 配置 │ └── Dockerfile # 容器镜像 ├── admin/ # Vue 管理前端 │ ├── src/ │ │ ├── components/ # 组件 │ │ ├── views/ # 页面 │ │ └── api/ # 接口调用 │ ├── package.json # 依赖配置 │ └── vite.config.ts # Vite 配置 ├── android/ # Android 移动端 │ ├── app/ # 应用模块 │ └── build.gradle # Gradle 配置 ├── deploy/ # 部署配置 │ ├── compose.yml # Docker Compose │ └── dev/ # 开发环境配置 ├── scripts/ # 脚本工具 │ ├── init-local.py # 初始化脚本 │ ├── start-infra.sh # 启动基础设施 │ └── start-server.sh # 启动后端服务 └── docs/ # 文档资料 ├── screenshots/ # 界面截图 └── *.md # 各类文档 ``` --- ## 界面预览 ### 登录界面 系统提供统一的登录入口,管理员通过 Web 端登录,主播和观众通过 Android App 登录。 ![登录界面](docs/screenshots/01-login.png) *图:管理后台登录界面,支持账号密码登录* ### 运营工作台 管理员登录后的主界面,实时展示关键运营指标。 ![运营工作台](docs/screenshots/01-workspace.png) *图:运营工作台 - 实时数据看板,包含总场次、当前直播间、活跃主播、在线人数等核心指标* **功能说明:** - **实时数据更新**:每 10 秒自动刷新当前值 - **时间范围筛选**:支持自定义起始和结束时间 - **历史数据统计**:期间创建场次、开播场次、最高在线、累计观看秒数 - **人气算法配置**:可启用展示增量,目标增量 20-50,每 10 秒波动±2 ### 直播管理 管理所有直播场次,支持多维度筛选和查询。 ![直播管理](docs/screenshots/01-workspace.png) *图:直播场次管理列表,支持按状态、主播、时间、异常类型等条件筛选* **功能特性:** - **组合筛选**:关键词/编号、状态、主播 ID、场次 ID、时间范围、异常类型 - **实时刷新**:当前查询每 5 秒自动刷新 - **状态管理**:准备开播、直播中、直播中断、关闭中、已结束 - **数据展示**:编号、标题、主播、状态、展示人气、真实在线、峰值在线、时间信息 - **操作功能**:查看详情、跟进状态、结束直播等 ### 账号管理 管理系统用户账号,支持账号的全生命周期管理。 ![账号管理](docs/screenshots/04-account.png) *图:账号管理界面,支持账号的新增、编辑、停用、启用、密码重置* **功能特性:** - **账号列表**:展示所有用户账号及其状态 - **新增账号**:创建新的管理员、主播或观众账号 - **账号编辑**:修改账号信息和显示名称 - **状态管理**:启用、停用账号 - **密码重置**:为账号重置登录密码 - **角色分配**:设置用户角色和权限 ### 举报管理 处理观众举报内容,维护直播环境秩序。 ![举报管理](docs/screenshots/05-report.png) *图:举报管理界面,展示待处理和已处理的举报记录* **功能特性:** - **举报列表**:展示所有举报记录 - **状态筛选**:待处理、处理中、已完成 - **举报详情**:查看举报内容、举报人、被举报场次 - **审核处置**:管理员审核并做出处置决定 - **处理记录**:记录处理过程和结果 ### 异常告警 实时监控直播异常,及时推送告警信息。 ![异常告警](docs/screenshots/06-alert.png) *图:异常告警界面,展示当前活跃的告警事件* **告警类型:** - **主播断连**:主播网络中断,无法继续直播 - **媒体中断**:音视频服务异常 - **观众播放错误**:观众端播放失败 - **观众卡顿**:观众端视频卡顿 - **开播超时**:预约直播未按时开始 - **恢复超时**:中断后未能及时恢复 - **媒体控制失败**:媒体资源调度失败 **功能特性:** - **实时告警**:异常事件即时推送 - **告警列表**:展示所有告警事件及状态 - **告警详情**:查看告警原因、影响范围、发生时间 - **处置流程**:待处理、处理中、已完成状态管理 - **历史查询**:支持按时间范围查询历史告警 ### 操作审计 记录所有敏感操作,支持合规审计和问题追溯。 ![操作审计](docs/screenshots/02-audit.png) *图:操作审计界面,展示系统操作记录* **审计内容:** - **账号操作**:登录、登出、密码修改 - **直播操作**:创建、开播、结束、中断 - **管理操作**:账号新增、编辑、停用、启用 - **举报处理**:举报审核、处置决定 - **系统操作**:配置修改、权限变更 **功能特性:** - **操作记录**:详细记录操作人、操作时间、操作内容 - **时间筛选**:支持按时间范围查询 - **操作人筛选**:按用户账号筛选操作记录 - **操作类型筛选**:按操作类别筛选 - **详情查看**:查看操作的完整信息和上下文 ### 场次质量比较 对比不同直播场次的技术指标,分析质量差异。 ![场次质量比较](docs/screenshots/03-quality.png) *图:场次质量比较界面,展示多场直播的技术指标对比* **比较维度:** - **在线人数**:峰值在线、平均在线、当前在线 - **直播时长**:总时长、有效时长、中断时长 - **网络质量**:延迟、丢包率、带宽使用 - **音视频质量**:分辨率、帧率、码率 - **异常统计**:中断次数、恢复时间、错误类型 **功能特性:** - **多场次对比**:选择多个场次进行横向对比 - **时间范围**:支持自定义对比的时间段 - **图表展示**:可视化展示各项指标的趋势 - **数据导出**:支持导出对比报告 ### 移动端界面(响应式适配) 管理后台采用响应式设计,完美适配移动设备。以下是移动端界面展示: #### 移动端 - 运营工作台 ![移动端运营工作台](docs/screenshots/mobile-01-workspace.png) *图:移动端运营工作台 - 数据看板在移动设备上的展示效果* #### 移动端 - 操作审计 ![移动端操作审计](docs/screenshots/mobile-02-audit.png) *图:移动端操作审计 - 操作记录查询界面* #### 移动端 - 账号管理 ![移动端账号管理](docs/screenshots/mobile-03-account.png) *图:移动端账号管理 - 用户账号管理界面* #### 移动端 - 举报管理 ![移动端举报管理](docs/screenshots/mobile-04-report.png) *图:移动端举报管理 - 举报记录处理界面* #### 移动端 - 异常告警 ![移动端异常告警](docs/screenshots/mobile-05-alert.png) *图:移动端异常告警 - 告警事件监控界面* ### Android App 界面 Android 原生应用提供主播和观众的移动端体验,采用 Kotlin + Jetpack Compose 开发。 > **说明**:Android App 是独立的原生应用,需要在移动设备上运行。 **主要功能界面包括:** - **首页**:双列直播卡片、分类筛选、搜索 - **登录**:账号密码登录、手机号登录 - **关注**:已关注主播列表、在线筛选 - **我的**:个人中心、统计数据、功能入口 - **开播准备**:摄像头预览、标题分类、封面上传 - **直播间(主播)**:视频背景、弹幕、控制栏 - **直播间(观众)**:视频播放、弹幕、礼物举报 - **直播结果**:时长统计、峰值人数、离线记录 详细界面说明请参阅 [Android UI 文档](docs/android-ui.md)。 --- ## 快速开始 ### 环境要求 - **Java**: JDK 17 或更高版本 - **Node.js**: 22.22 或更高版本 - **Python**: 3.x(用于初始化脚本) - **Docker**: Docker Engine 20.10+ 和 Docker Compose 2.0+ - **操作系统**: Windows 10/11、macOS、Linux ### 安装步骤 #### 1. 克隆项目 ```bash git clone cd live-classroom-dev ``` #### 2. 初始化本地配置 运行初始化脚本生成随机密码和配置文件: ```bash # Windows (Git Bash) python scripts/init-local.py # macOS/Linux python3 scripts/init-local.py ``` 脚本会在 `.local/dev.env` 生成以下配置: - 数据库密码(DB_PASSWORD、MYSQL_ROOT_PASSWORD) - LiveKit API 密钥(LIVEKIT_API_KEY、LIVEKIT_API_SECRET) - MinIO 存储密码(MINIO_ROOT_USER、MINIO_ROOT_PASSWORD) - 测试账号密码(LOCAL_ADMIN_PASSWORD、LOCAL_HOST_PASSWORD、LOCAL_VIEWER_PASSWORD) **重要**:`.local/dev.env` 包含敏感信息,已添加到 `.gitignore`,请勿提交到版本库。 #### 3. 启动基础设施 启动 MySQL 和 LiveKit 容器: ```bash # Windows (PowerShell) powershell -Command "docker compose --env-file .local/dev.env -f deploy/compose.yml up -d --wait mysql livekit" # macOS/Linux bash scripts/start-infra.sh ``` 等待容器健康检查通过(约 30 秒)。 #### 4. 启动后端服务 ```bash # Windows (PowerShell) $env:JAVA_HOME='C:\jdk17\jdk-17.0.20.1+1' # 根据实际路径调整 $env:PATH="$env:JAVA_HOME\bin;$env:PATH" $env:SPRING_PROFILES_ACTIVE='local' # 加载环境变量 Get-Content .\.local\dev.env | ForEach-Object { if ($_.Trim() -and -not $_.StartsWith('#')) { $parts = $_.Split('=', 2) if ($parts.Length -eq 2) { [System.Environment]::SetEnvironmentVariable($parts[0], $parts[1], 'Process') } } } # 启动服务 cd server .\mvnw spring-boot:run # macOS/Linux export $(cat .local/dev.env | xargs) export SPRING_PROFILES_ACTIVE=local bash scripts/start-server.sh ``` 首次启动会: - 下载 Maven 依赖(约 2-5 分钟) - 执行数据库迁移(26 个版本,约 2 分钟) - 初始化测试账号 启动成功后会看到: ``` Started LiveApplication in XXX seconds Tomcat started on port 19080 (http) ``` #### 5. 启动管理前端 打开新的终端窗口: ```bash cd admin # 安装依赖 npm ci # 启动开发服务器 npm run dev ``` 启动成功后访问:http://127.0.0.1:19173 #### 6. 登录系统 使用初始化管理员账号登录: - **账号**: `admin` - **密码**: 查看 `.local/dev.env` 中的 `LOCAL_ADMIN_PASSWORD` --- ## 部署指南 ### 本地开发部署 #### 启动所有服务 ```bash # 1. 启动基础设施(MySQL + LiveKit) docker compose --env-file .local/dev.env -f deploy/compose.yml up -d --wait mysql livekit # 2. 启动后端服务(终端 1) export $(cat .local/dev.env | xargs) export SPRING_PROFILES_ACTIVE=local cd server && ./mvnw spring-boot:run # 3. 启动管理前端(终端 2) cd admin && npm run dev ``` #### 可选服务 启动 Redis 和 MinIO(用于缓存和对象存储): ```bash docker compose --env-file .local/dev.env -f deploy/compose.yml --profile extras up -d ``` #### 停止服务 ```bash # 停止业务服务 # 在后端和管理端终端按 Ctrl+C # 停止容器(不删除数据) docker compose --env-file .local/dev.env -f deploy/compose.yml down # 停止并删除数据(谨慎使用) docker compose --env-file .local/dev.env -f deploy/compose.yml down -v ``` ### 生产环境部署 #### Docker 镜像构建 ```bash # 构建后端镜像 cd server ./mvnw clean package -DskipTests docker build -t live-classroom-server:1.0.0 . # 推送镜像 docker tag live-classroom-server:1.0.0 your-registry.com/live-classroom-server:1.0.0 docker push your-registry.com/live-classroom-server:1.0.0 ``` #### 生产环境配置 1. **数据库配置** - 使用独立的 MySQL 实例 - 配置强密码和访问控制 - 启用 SSL/TLS 连接 - 定期备份数据 2. **LiveKit 配置** - 配置 TURN 服务器用于 NAT 穿透 - 启用 HTTPS/WSS - 配置域名和 SSL 证书 3. **应用配置** - 设置 `SERVER_ADDRESS=0.0.0.0` 允许外部访问 - 配置 `LIVEKIT_PUBLIC_URL` 为公网地址 - 启用告警通知(邮件、钉钉、企业微信) 4. **反向代理** - 使用 Nginx 或 Caddy 作为反向代理 - 配置 HTTPS 证书 - 设置请求限流和缓存 --- ## API 文档 ### 基础信息 - **Base URL**: `http://127.0.0.1:19080` - **协议**: HTTP/HTTPS - **数据格式**: JSON - **认证方式**: Bearer Token ### 认证接口 #### 用户登录 ```http POST /api/auth/login Content-Type: application/json { "username": "admin", "password": "your-password" } ``` **响应示例**: ```json { "token": "Ui7RFvA9ImTbm8ol2NusRc2qTh5O6V8mhAxEquNU_5Y", "user": { "id": 1, "username": "admin", "displayName": "教学管理员", "role": "ADMIN" } } ``` #### 使用 Token 所有需要认证的接口,在请求头中添加: ```http Authorization: Bearer Ui7RFvA9ImTbm8ol2NusRc2qTh5O6V8mhAxEquNU_5Y ``` ### 直播管理接口 #### 获取直播场次列表 ```http GET /api/live/sessions Authorization: Bearer {token} # 查询参数 ?keyword=关键词 &status=PREPARING|LIVE|INTERRUPTED|CLOSING|ENDED &hostId=主播ID &sessionId=场次ID &page=1 &size=20 ``` #### 创建直播场次 ```http POST /api/live/sessions Authorization: Bearer {token} Content-Type: application/json { "title": "教学直播 - 第一章", "categoryId": 1, "scheduledStartTime": "2026-10-22T10:00:00" } ``` #### 开始直播 ```http POST /api/live/sessions/{sessionId}/start Authorization: Bearer {token} ``` #### 结束直播 ```http POST /api/live/sessions/{sessionId}/end Authorization: Bearer {token} ``` ### 账号管理接口 #### 获取账号列表 ```http GET /api/admin/accounts Authorization: Bearer {token} # 查询参数 ?keyword=关键词 &role=ADMIN|HOST|VIEWER &status=ACTIVE|DISABLED &page=1 &size=20 ``` #### 创建账号 ```http POST /api/admin/accounts Authorization: Bearer {token} Content-Type: application/json { "username": "teacher01", "displayName": "张老师", "password": "secure-password", "role": "HOST" } ``` ### 健康检查 ```http GET /actuator/health ``` **响应示例**: ```json { "status": "UP", "groups": ["liveness", "readiness"] } ``` ### 错误码说明 | 错误码 | 说明 | |--------|------| | 400 | 请求参数错误 | | 401 | 未认证或 Token 过期 | | 403 | 无权限访问 | | 404 | 资源不存在 | | 429 | 请求过于频繁(限流) | | 500 | 服务器内部错误 | --- ## 开发指南 ### 后端开发 #### 代码结构 ``` server/src/main/java/com/beimengce/live/ ├── admin/ # 管理后台相关 ├── auth/ # 认证授权 ├── live/ # 直播业务 ├── dashboard/ # 运营数据 └── config/ # 配置类 ``` #### 运行测试 ```bash cd server ./mvnw test ``` #### 代码检查 ```bash ./mvnw verify ``` ### 前端开发 #### 代码结构 ``` admin/src/ ├── components/ # 公共组件 ├── views/ # 页面组件 ├── api/ # API 接口 └── utils/ # 工具函数 ``` #### 开发模式 ```bash cd admin npm run dev ``` #### 构建生产版本 ```bash npm run build ``` ### Android 开发 #### 构建调试包 ```bash cd android ./gradlew assembleDebug ``` 生成的 APK 位于:`android/app/build/outputs/apk/debug/app-debug.apk` --- ## 测试 ### 后端测试 ```bash # 运行所有测试 cd server ./mvnw test # 运行特定测试类 ./mvnw test -Dtest=AuthServiceTest ``` ### 前端测试 ```bash cd admin # 运行单元测试 npm run test:unit # 运行 E2E 测试 npm run test:e2e ``` ### API 冒烟测试 ```bash # 基础 API 测试 python3 scripts/smoke-api.py # 社交功能测试 python3 scripts/smoke-social.py ``` --- ## 常见问题 ### 1. 后端启动失败:数据库连接错误 **问题**:`Access denied for user 'live_classroom'@'...'` **解决方案**: 1. 检查 `.local/dev.env` 中的 `DB_PASSWORD` 是否正确 2. 确认 MySQL 容器正在运行:`docker ps` 3. 重新启动后端服务,确保环境变量已加载 ### 2. 前端无法访问后端 API **问题**:浏览器控制台显示 CORS 错误 **解决方案**: 1. 确认后端服务已启动(http://127.0.0.1:19080/actuator/health) 2. 检查后端配置中的 `SERVER_ADDRESS` 是否为 `127.0.0.1` 3. 清除浏览器缓存并刷新页面 ### 3. LiveKit 连接失败 **问题**:音视频功能无法使用 **解决方案**: 1. 检查 LiveKit 容器状态:`docker ps | grep livekit` 2. 查看 LiveKit 日志:`docker logs bmc-live-classroom-livekit-1` 3. 确认 `.local/livekit.yaml` 配置正确 ### 4. Maven 依赖下载缓慢 **问题**:首次构建下载依赖很慢 **解决方案**: 配置 Maven 镜像(中国用户),编辑 `~/.m2/settings.xml`: ```xml aliyun central https://maven.aliyun.com/repository/central ``` ### 5. Android 模拟器无法连接后端 **问题**:App 无法访问 http://127.0.0.1:19080 **解决方案**: Android 模拟器使用特殊地址访问宿主机:`http://10.0.2.2:19080` --- ## 项目结构 ### 核心模块 | 模块 | 说明 | 技术栈 | |------|------|--------| | **server** | 后端服务 | Java 17, Spring Boot 4.0.8, MySQL 8.4 | | **admin** | 管理前端 | Vue 3, TypeScript, Element Plus, Vite | | **android** | 移动端 | Kotlin, Jetpack Compose, LiveKit SDK | | **deploy** | 部署配置 | Docker Compose, LiveKit Server | | **scripts** | 工具脚本 | Python, Bash, PowerShell | | **docs** | 项目文档 | Markdown, 截图资料 | --- ## 贡献指南 ### 开发流程 1. Fork 项目仓库 2. 创建功能分支:`git checkout -b feature/amazing-feature` 3. 提交更改:`git commit -m 'feat: add amazing feature'` 4. 推送分支:`git push origin feature/amazing-feature` 5. 提交 Pull Request ### 代码规范 - **Java**: 遵循 Google Java Style Guide - **TypeScript**: 遵循项目 ESLint 配置 - **Kotlin**: 遵循 Kotlin Coding Conventions - **提交信息**: 使用语义化提交信息(Conventional Commits) --- ## 版本历史 ### v1.0.0 (2026-10-15) **第一阶段:基础管理** - ✅ 用户认证与权限管理 - ✅ 直播场次生命周期管理 - ✅ 运营工作台数据看板 - ✅ 账号管理(新增、编辑、停用、密码重置) - ✅ 操作审计日志 - ✅ 举报管理流程 - ✅ 异常告警系统 - ✅ 场次质量比较分析 - ✅ 展示人气算法配置 --- ## 许可证 本项目为私有项目,仅供教学和内部测试使用。 **使用限制**: - 不得用于商业目的 - 不得分发或再许可 - 必须保留原始版权声明 --- ## 联系方式 ### 技术支持 - **项目仓库**: [GitHub Issues](https://github.com/your-org/live-classroom/issues) - **文档中心**: [docs/](docs/) - **常见问题**: [FAQ](#-常见问题) --- ## 致谢 感谢以下开源项目和技术支持: - [Spring Boot](https://spring.io/projects/spring-boot) - 后端框架 - [Vue.js](https://vuejs.org/) - 前端框架 - [LiveKit](https://livekit.io/) - 音视频通信 - [MySQL](https://www.mysql.com/) - 数据库 - [Element Plus](https://element-plus.org/) - UI 组件库 - [Jetpack Compose](https://developer.android.com/jetpack/compose) - Android UI ---