Files
xiaoxia-saas/apps/web
Coze Agent 37f7aa3329
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 1s
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Validate - Style (pull_request) Has been skipped
CI/CD Pipeline / Validate - Security (pull_request) Has been skipped
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Check push changed paths (push) Successful in 21s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 35s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 52s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 54s
CI/CD Pipeline / Build Staging API Image (push) Successful in 1m22s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (push) Successful in 3m0s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m28s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 3m31s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 3m47s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 3m0s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m51s
CI/CD Pipeline / CI Gate (pull_request) Successful in 3s
CI/CD Pipeline / Validate - Style (push) Successful in 4m18s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 5m12s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 5m11s
AI Code Review / AI Code Review (pull_request) Successful in 6m13s
CI/CD Pipeline / Unit Tests (push) Successful in 10m58s
CI/CD Pipeline / Validate - Security (push) Successful in 17m26s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / CI Gate (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 47m30s
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 2m26s
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
feat(viral-video): 爆款视频创作页 #2041
三栏暗色科技风布局 + 完整 v1.2/v1.3 创作流程:

【布局】
- 左栏:历史记录(30条最近任务,点击恢复,状态色标)+ 新建按钮
- 中栏:素材上传 + 文案融合 + 参数表单 + 参考视频(v1.3)
- 右栏:预览窗口 + 11阶段进度条 + 成片下载/重试
- 整体暗色渐变背景 (#0b0f1a→#0f172a),紫色品牌色 (#6366f1/#8b5cf6),
  磨砂玻璃卡片 + 紫色光晕装饰线;响应式≤1024px自动竖向堆叠

【v1.2 核心功能】
- 图片上传:1-9 张产品图,支持点击/拖拽上传、预览、删除、HTML5 拖拽排序
- 文案融合:三档分段按钮(AI全写 / 我打草稿AI润色 / 按我的话来),textarea 自适应提示
- 参数表单:行业/目标客户/爆款结构/营销目的/BGM偏好/时长(15-90s)6 字段网格
- 提交后 11 阶段进度条(图片分析→视频风格→意图理解→文案→分镜→审核→
  配音→BGM→渲染→数字人→上传),shimmer 动画 + 阶段节点脉冲
- AI 意图摘要卡片(wait_user_confirm 状态):展示目标人群/核心卖点/营销钩子,
  用户可直接修改 AI 润色文案后点击「确认并继续生成」调用 confirm-intent
- 失败重试、成片下载、新任务重置

【v1.3 参考视频扩展】
- 参考视频上传(复用 /assets/upload 接口),内嵌 <video controls> 预览,可移除重传
- 风格强度三档(轻度参考 / 中度模仿 / 像素级复刻)
- 风格模板库(GET /style-templates),卡片网格展示缩略图/名称/描述,
  选中态紫色描边,默认「不使用模板」
- 风格分析在后端 video_analysis 阶段自动触发(_emit_progress 已实现),
  前端轮询会自动拿到 style_guide 更新

【技术】
- 新增 services 层 src/api/viral-video/(types.ts + index.ts),
  与后端 Pydantic schema 严格对齐
- useViralVideoPolling hook:HTTP 轮询(1.5s 间隔,指数退避容错),
  解析 status/stage 插值为 0-100 总进度;支持 onComplete/onWaitConfirm/onFailed 回调
- 路由:/app/viral-video,加入 Sidebar「创作工具」分组 + Header 导航 + 面包屑
- 新增 FireOutlined 图标入口
- 轮询兜底:后端 WS endpoint 尚未暴露,先 HTTP 轮询;
  待 /ws/viral-video/{id} 上线后切 WS(hook 已预留切换点)

【验证】
- tsc --noEmit ✅
- eslint ✅(0 error 0 warning)
- prettier --write ✅
- vite build ✅(独立 chunk ViralVideoPage-BMawaWN9.js 20KB gz 7KB)
2026-09-30 08:45:39 +08:00
..
2026-06-15 15:17:40 +08:00

小虾 SaaS - 前端应用

基于 Vite + React 18 + TypeScript + Ant Design 的现代化 SaaS 前端应用。

快速开始

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 构建生产版本
npm run build

# 预览生产版本
npm run preview

技术栈

  • 框架: React 18.3.1
  • 语言: TypeScript 5.5.3
  • 构建工具: Vite 5.3.1
  • UI 组件库: Ant Design 5.18.0
  • 路由: React Router 6.24.0
  • 状态管理: Zustand 4.5.2
  • 数据获取: React Query 5.45.0
  • HTTP 客户端: Axios 1.7.2
  • 表单: React Hook Form 7.52.0 + Zod 3.23.8

项目结构

src/
├── api/              # API 服务层
├── components/       # React 组件
│   ├── common/      # 通用组件
│   ├── layout/      # 布局组件
│   └── business/    # 业务组件
├── pages/           # 页面组件
│   ├── auth/        # 认证页面
│   ├── workspace/   # 工作空间
│   ├── subscription/# 订阅管理
│   ├── admin/       # Admin 后台
│   └── profile/     # 个人中心
├── hooks/           # 自定义 Hooks
├── store/           # 状态管理
├── router/          # 路由配置
├── types/           # TypeScript 类型
├── utils/           # 工具函数
└── styles/          # 全局样式

功能特性

  • ✅ 用户认证(登录/注册/密码重置)
  • ✅ 工作空间管理
  • ✅ 成员管理和权限控制
  • ✅ 订阅计划和升级
  • ✅ 配额使用监控
  • ✅ Admin 管理后台
  • ✅ 个人设置和安全
  • ✅ 响应式设计

环境变量

创建 .env 文件:

VITE_API_URL=http://localhost:8000

开发指南

添加新页面

  1. 在 src/pages/ 下创建页面组件
  2. 在 src/router/index.tsx 中添加路由
  3. 确保导出 Component 用于懒加载

添加新 API

  1. 在 src/api/ 下创建服务模块
  2. 定义 TypeScript 接口
  3. 使用 apiClient 发起请求

状态管理

使用 Zustand 创建 Store:

import { create } from "zustand"

interface MyStore {
  data: any
  setData: (data: any) => void
}

export const useMyStore = create<MyStore>((set) => ({
  data: null,
  setData: (data) => set({ data }),
}))

部署

# 构建
npm run build

# 产物在 dist/ 目录

License

MIT