You've already forked lubo_comment_query
3.6 KiB
3.6 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
这是一个基于 Laravel 8 框架的视频评论和弹幕查询系统,主要功能包括:
- 视频评论查询和搜索
- 节目管理和视频关联
- 弹幕数据管理(支持B站、西瓜视频、抖音)
- WebAuthn 身份验证
- 文件上传和管理
常用开发命令
后端 PHP/Laravel 命令
# 安装 PHP 依赖
composer install
# 开发环境安装(包含开发依赖)
composer install
# 生产环境安装(不含开发依赖)
composer install --optimize-autoloader --no-dev
# 运行测试
vendor/bin/phpunit
# 或
php artisan test
# 清除缓存
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
# 生成应用密钥
php artisan key:generate
# 数据库迁移
php artisan migrate
# 启动开发服务器
php artisan serve
前端构建命令
# 安装前端依赖
yarn install
# 或
npm install
# 开发模式构建
yarn dev
# 或
npm run dev
# 监听文件变化并自动重新构建
yarn watch
# 或
npm run watch
# 生产环境构建
yarn production
# 或
npm run production
生产环境部署
使用 build.sh
脚本进行完整的生产环境构建:
./build.sh
该脚本会依次执行:
- 安装 PHP 依赖(生产环境)
- 安装前端依赖
- 构建前端资源
- 缓存配置、路由和视图
核心架构
数据模型关系
Videos
: 视频主表,以 bvid 为主键VideoComments
: 视频评论,关联到 VideosVideoDanmakus
: 视频弹幕,支持多平台(B站、西瓜、抖音)Programs
: 节目表ProgramVideos
: 节目与视频的多对多关联表ProgramAppends
: 节目的点播内容User
: 用户表,支持传统登录和 WebAuthn
控制器架构
查询控制器(公开访问)
CommentQueryController
: 评论搜索,支持关键词分词搜索VideoQueryController
: 视频信息查询ProgramQueryController
: 节目查询,包含关联视频DanmakuQueryController
: 弹幕查询
管理控制器(需要登录)
ProgramConstructController
: 节目创建和编辑ProgramVideoConstructController
: 节目视频关联管理ProgramAppendConstructController
: 节目点播内容管理DanmakuConstructController
: 弹幕批量导入FileController
: 文件上传
用户认证
UserController
: 传统用户名密码认证UserWebAuthnController
: WebAuthn 无密码认证
前端资源结构
- 使用 Laravel Mix 构建工具
- 支持 TailwindCSS 样式框架
- JavaScript 组件化,主要包含:
from_select.js
: 下拉选择组件webauthn.js
: WebAuthn 认证逻辑
- 生产环境支持版本哈希和 S3 部署
视图组件
- Blade 模板引擎
- 组件化设计:
components/links/
: 用户和视频链接组件components/appends/
: 点播内容列表组件
- 支持中文本地化(zh_CN)
特殊功能
- 多平台弹幕支持: 通过 platform_id 区分不同平台(1=B站,2=西瓜,3=抖音)
- 关键词分词搜索: 评论搜索支持空格分隔的多关键词
- WebAuthn 集成: 支持现代无密码认证
- 文件上传: 支持 S3 兼容存储
- 时间戳处理: 使用 Unix 时间戳格式存储
路由分组
/
: 公开评论查询页面/construct/*
: 需要认证的管理功能/user/*
: 用户认证相关功能
数据库时间格式
模型使用 Unix 时间戳格式 (protected $dateFormat = 'U'
),注意在处理时间相关逻辑时需要考虑这个格式。