Files
autoclip/frontend
Kris Ka d09a3c8df5 优化合集卡片UI和修复封面显示
- 增加CollectionCard高度:420px → 480px
- 增加CollectionCardMini高度:200px → 240px
- 增加封面区域高度:180px → 220px (CollectionCard), 100px → 120px (CollectionCardMini)
- 优化内容间距:16px → 20px (CollectionCard), 12px → 16px (CollectionCardMini)
- 重新设计统计信息区域,去掉重复的时长和评分信息
- 将时长和评分信息移到内容区域底部,布局更清晰
- 修复CollectionResponse schema缺少thumbnail_path字段的问题
- 修复CollectionService中get_collections_paginated方法缺少thumbnail_path映射
- 修复collections API响应构建中缺少video_path和thumbnail_path字段
- 封面提取功能现在正常工作,API正确返回thumbnail_path
2025-09-15 23:25:23 +08:00
..
2025-08-21 01:05:23 +08:00

Auto Clips Frontend

基于 React + TypeScript + Vite + Ant Design 的视频自动切片前端应用。

功能特性

🎯 核心功能

  • 视频上传: 支持拖拽上传视频文件和字幕文件
  • 智能处理: AI 自动提取视频精彩片段
  • 片段管理: 查看、编辑、下载视频片段
  • 合集创建: AI 推荐合集 + 手动创建合集
  • 实时监控: 处理进度实时反馈

🎨 用户界面

  • 现代化设计: 基于 Ant Design 组件库
  • 响应式布局: 支持桌面和移动端
  • 直观操作: 拖拽排序、一键下载
  • 状态反馈: 清晰的处理状态和进度显示

技术栈

  • 前端框架: React 18 + TypeScript
  • 构建工具: Vite
  • UI 组件: Ant Design
  • 状态管理: Zustand
  • 路由: React Router DOM
  • HTTP 客户端: Axios
  • 拖拽功能: React Beautiful DnD
  • 视频播放: React Player
  • 文件上传: React Dropzone

快速开始

环境要求

  • Node.js >= 16
  • npm 或 yarn

安装依赖

npm install
# 或
yarn install

启动开发服务器

npm run dev
# 或
yarn dev

访问 http://localhost:3000

构建生产版本

npm run build
# 或
yarn build

项目结构

frontend/
├── public/                 # 静态资源
├── src/
│   ├── components/         # 可复用组件
│   │   ├── Header.tsx      # 页面头部
│   │   ├── FileUpload.tsx  # 文件上传组件
│   │   ├── ProjectCard.tsx # 项目卡片
│   │   ├── ClipCard.tsx    # 视频片段卡片
│   │   └── CollectionCard.tsx # 合集卡片
│   ├── pages/              # 页面组件
│   │   ├── HomePage.tsx    # 项目首页
│   │   └── ProjectDetailPage.tsx # 项目详情页
│   ├── services/           # API 服务
│   │   └── api.ts          # API 接口定义
│   ├── store/              # 状态管理
│   │   └── useProjectStore.ts # 项目状态
│   ├── App.tsx             # 应用主组件
│   ├── main.tsx            # 应用入口
│   └── index.css           # 全局样式
├── package.json
├── vite.config.ts          # Vite 配置
├── tsconfig.json           # TypeScript 配置
└── README.md

页面说明

项目首页 (/)

  • 项目列表展示
  • 搜索和筛选功能
  • 新建项目(文件上传)
  • 项目状态监控

项目详情页 (/project/:id)

  • 项目信息和处理状态
  • 视频片段管理
  • AI 合集展示
  • 手动创建合集
  • 下载和导出功能

组件说明

FileUpload

  • 支持拖拽和点击上传
  • 文件类型验证
  • 上传进度显示
  • 自动创建项目

ProjectCard

  • 项目信息展示
  • 状态指示器
  • 快捷操作按钮
  • 进度条显示

ClipCard

  • 视频片段信息
  • 在线预览功能
  • 编辑和下载
  • 添加到合集

CollectionCard

  • 合集信息展示
  • 片段列表管理
  • 拖拽排序
  • 生成合集视频

API 接口

前端通过 /api 代理与后端通信,主要接口包括:

  • GET /api/projects - 获取项目列表
  • POST /api/projects - 创建新项目
  • GET /api/projects/:id - 获取项目详情
  • POST /api/projects/:id/upload - 上传文件
  • POST /api/projects/:id/process - 开始处理
  • GET /api/projects/:id/status - 获取处理状态
  • PUT /api/projects/:id/clips/:clipId - 更新片段
  • PUT /api/projects/:id/collections/:collectionId - 更新合集
  • GET /api/projects/:id/download - 下载视频

开发说明

状态管理

使用 Zustand 进行轻量级状态管理,主要管理:

  • 项目列表和当前项目
  • 视频片段和合集数据
  • 加载状态和错误信息

样式规范

  • 使用 Ant Design 主题色彩
  • 响应式设计,支持移动端
  • 统一的间距和圆角规范
  • 自定义滚动条和悬停效果

类型定义

所有数据结构都有完整的 TypeScript 类型定义,确保类型安全。

部署说明

开发环境

npm run dev

生产环境

npm run build
npm run preview

Docker 部署

FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "preview"]

后续优化

功能增强

  • 视频在线编辑
  • 批量操作
  • 导出多种格式
  • 用户权限管理
  • 云端存储集成

性能优化

  • 虚拟滚动
  • 图片懒加载
  • 代码分割
  • 缓存策略

用户体验

  • 快捷键支持
  • 主题切换
  • 国际化
  • 无障碍访问

贡献指南

  1. Fork 项目
  2. 创建功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建 Pull Request

许可证

MIT License