_project.md 4.9 KB


type: project name: tg-live-game-hono status: active created: 2024-12-31 updated: 2026-01-06 kanban_id: 7c6bb2ce-90a2-4e96-bc04-5facdcdb33

parent: "[[_project|TG Live Game]]"

TG Live Game Hono

后端 API 服务,基于 Hono + Cloudflare Workers + D1 构建。

技术栈

类别 技术 版本
框架 Hono 4.11.1
运行时 Cloudflare Workers -
数据库 Cloudflare D1 (SQLite) -
验证 Zod 4.3.5
语言 TypeScript 5.9.3
测试 Vitest 3.2.4
Lint Biome 2.3.11
部署 Wrangler 4.56.0

项目结构

src/
├── index.ts              # 应用入口
├── node.ts               # Node.js 本地开发入口
├── middleware/           # 中间件
│   └── auth.ts          # JWT 认证 + RBAC 权限
├── routes/              # API 路由
│   ├── auth.ts         # 认证接口
│   ├── user.ts         # 用户管理 (admin only)
│   ├── cameras.ts      # 摄像头管理
│   ├── sessions.ts     # 会话管理
│   ├── stats.ts        # 观看统计
│   ├── stream.ts       # Cloudflare Stream
│   └── audit.ts        # 审计日志
├── services/            # 业务服务
├── types/               # TypeScript 类型
└── utils/               # 工具函数

API 路由

公开接口

方法 路由 描述
POST /api/auth/login 用户登录
POST /api/auth/refresh 刷新 Token

认证接口

方法 路由 描述 权限
GET /api/auth/me 获取当前用户 *
POST /api/auth/logout 退出登录 *
POST /api/auth/change-password 修改密码 *

用户管理 (admin)

方法 路由 描述
GET /api/users 用户列表
GET /api/users/:id 用户详情
POST /api/users 创建用户
PUT /api/users/:id 更新用户
DELETE /api/users/:id 删除用户

摄像头管理

方法 路由 描述
GET /api/cameras 摄像头列表
GET /api/cameras/:id 摄像头详情
POST /api/cameras 创建摄像头
PUT /api/cameras/:id 更新摄像头
DELETE /api/cameras/:id 删除摄像头

Stream 管理

方法 路由 描述
GET /api/stream/videos 视频列表
GET /api/stream/live-inputs 直播输入列表
POST /api/stream/live-inputs 创建直播输入
DELETE /api/stream/live-inputs/:id 删除直播输入

统计 & 审计

方法 路由 描述
GET /api/stats/* 观看统计
GET /api/audit/* 审计日志

数据库设计

D1 配置

[[d1_databases]]
binding = "DB"
database_name = "tg_live_game"
database_id = "970f081e-42c8-46bb-b385-b7c1ab2ceaa5"

数据表

表名 描述
users 用户信息
user_permissions 用户权限
cameras 摄像头配置
live_sessions 直播会话
videos 视频记录
view_stats 观看统计
audit_logs 审计日志

认证系统

JWT 配置

[vars]
JWT_EXPIRES_IN = "86400"      # 24小时
REFRESH_EXPIRES_IN = "604800"  # 7天

RBAC 角色

角色 权限
admin 所有权限
operator 摄像头/视频/直播管理
viewer 只读访问

中间件

// 认证中间件
authMiddleware()

// 角色检查
requireRole('admin')
requireRole('admin', 'operator')

部署信息

属性
Worker 名称 tg-live-game-api
域名 https://tg-live-game-api.ifoodme.com
Account ID d31caaf9d6
D1 Database ID 970f081e-42c8-46bb-b385-b7c1ab2cea

开发命令

# 安装依赖
pnpm install

# 本地开发 (使用本地 D1)
pnpm dev

# 远程开发 (使用远程 D1)
pnpm dev:remote

# 类型检查
pnpm typecheck

# 运行测试
pnpm test

# 代码检查
pnpm lint

# 格式化代码
pnpm format

# 部署
pnpm deploy

D1 数据库操作

# 本地执行 SQL
npx wrangler d1 execute tg_live_game --command "SELECT * FROM users;"

# 远程执行 SQL
npx wrangler d1 execute tg_live_game --remote --command "SELECT * FROM users;"

# 初始化 Schema
npx wrangler d1 execute tg_live_game --remote --file=./schema.sql

Secrets 管理

wrangler secret put JWT_SECRET
wrangler secret put CF_ACCOUNT_ID
wrangler secret put CF_API_TOKEN
wrangler secret put CUSTOMER_SUBDOMAIN

代码仓库

环境 路径
开发 /Users/yibu/dev_workspace/frontend/tg-live-game/tg-live-game-hono

相关文档

  • [[_project|TG Live Game]] - 父项目
  • [[tg-live-game-web/_project|tg-live-game-web]] - 前端项目
  • [[architecture-v1]] - 系统架构
  • [[workflow]] - 开发工作流