--- type: project name: tg-live-game-web status: active created: 2024-12-25 updated: 2026-01-06 kanban_id: 32214e97-f833-485f-8c7c-cf4d82327e0b parent: "[[_project|TG Live Game]]" --- # TG Live Game Web 直播游戏平台前端应用,基于 Vue 3 + TypeScript + Element Plus 构建。 ## 技术栈 | 类别 | 技术 | 版本 | |------|------|------| | 框架 | Vue | 3.5.24 | | 语言 | TypeScript | 5.9.3 | | 构建工具 | Vite | 7.2.4 | | UI 组件库 | Element Plus | 2.13.0 | | 状态管理 | Pinia | 3.0.4 | | 路由 | Vue Router | 4.6.4 | | HTTP 客户端 | Axios | 1.13.2 | | 视频播放 | HLS.js | 1.6.15 | ## 项目结构 ``` src/ ├── api/ # API 接口 │ ├── login.ts # 认证接口 │ ├── user.ts # 用户管理接口 │ ├── camera.ts # 摄像头接口 │ ├── stream.ts # 直播/视频接口 │ └── cloudflare-stream.ts # Cloudflare Stream API ├── assets/ # 静态资源 │ └── styles/ # 全局样式 ├── components/ # 公共组件 ├── composables/ # 组合式函数 ├── layout/ # 布局组件 ├── router/ # 路由配置 ├── store/ # Pinia 状态管理 │ └── user.ts # 用户状态 ├── types/ # TypeScript 类型 ├── utils/ # 工具函数 │ ├── auth.ts # Token 管理 │ └── request.ts # Axios 封装 ├── views/ # 页面组件 │ ├── login/ # 登录页 │ ├── camera/ # 摄像头管理 │ │ ├── index.vue # 摄像头列表 │ │ ├── channel.vue # 通道列表 │ │ ├── video.vue # 视频播放 │ │ └── stream-test.vue # Stream 测试 │ ├── stream/ # 直播/视频管理 │ │ ├── video-list.vue # 视频列表 │ │ ├── live-list.vue # 直播列表 │ │ └── config.vue # Stream 配置 │ └── user/ # 用户管理 │ └── index.vue # 用户列表 ├── App.vue └── main.ts ``` ## 功能模块 ### 已完成 ✅ | 模块 | 功能 | 路由 | |------|------|------| | 登录认证 | JWT 登录、Token 刷新、记住我 | `/login` | | 摄像头管理 | CRUD、通道管理、视频播放 | `/camera` | | Stream 测试 | Cloudflare Stream 播放测试 | `/stream-test` | | 视频管理 | 视频列表、上传、删除 | `/stream/videos` | | 直播管理 | Live Input 管理、推流配置 | `/stream/live` | | Stream 配置 | Cloudflare 账户配置 | `/stream/config` | | 用户管理 | RBAC 用户 CRUD | `/user` | ### 待开发 ❌ - [ ] 仪表盘统计页面 - [ ] 观看统计展示 - [ ] 审计日志查看 - [ ] 权限管理页面 ## 认证系统 ### Token 管理 ```typescript // 存储 Key const TOKEN_KEY = 'Admin-Token' const REFRESH_TOKEN_KEY = 'Admin-Refresh-Token' // API 响应 interface AuthResponse { accessToken: string refreshToken: string expiresIn: number user: { id: string; username: string; role: string } } ``` ### 路由守卫 - 白名单路由:`/login`, `/stream-test` - 其他路由需要登录 - 未登录自动跳转登录页 ## API 配置 ### 开发环境代理 ```typescript // vite.config.ts proxy: { '/api': { target: 'https://tg-live-game-api.ifoodme.com', changeOrigin: true, secure: true } } ``` ### 后端服务 - **地址**: `https://tg-live-game-api.ifoodme.com` - **技术**: Hono + Cloudflare Workers + D1 - **认证**: JWT Bearer Token ## 开发命令 ```bash # 安装依赖 pnpm install # 开发服务器 (localhost:3000) pnpm dev # 类型检查 + 构建 pnpm build # 预览构建产物 pnpm preview ``` ## 代码仓库 | 环境 | 路径 | |------|------| | 开发 | `/Users/yibu/dev_workspace/frontend/tg-live-game/tg-live-game-web` | ## 相关文档 - [[_project|TG Live Game]] - 父项目 - [[tg-live-game-hono/_project|tg-live-game-hono]] - 后端项目 - [[architecture-v1]] - 系统架构 - [[workflow]] - 开发工作流