feat: 完善代理商端业务逻辑与前后端框架
主要更新: - 更新代理商端文档,明确项目由品牌方分配流程 - 新增Brief配置详情页(已配置)设计稿 - 完善工作台紧急待办中品牌新任务功能 - 整理Pencil设计文件中代理商端页面顺序 - 新增后端FastAPI框架及核心API - 新增前端Next.js页面和组件库 - 添加.gitignore排除构建和缓存文件 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.5
parent
d52509d630
commit
e4959d584f
+86
-85
@@ -58,42 +58,43 @@
|
||||
|
||||
| 层级 | 技术栈 | 代码状态 | 测试工具状态 |
|
||||
|------|--------|----------|-------------|
|
||||
| **前端** | Next.js 14 + React 18 + TypeScript 5.3 | ✅ 组件库已实现 | ⚠️ 依赖已安装,配置待创建 |
|
||||
| **后端** | FastAPI + Celery + Redis | ❌ 目录不存在 | ❌ 全部待创建 |
|
||||
| **前端** | Next.js 14 + React 18 + TypeScript 5.3 | ✅ 组件库已实现 | ✅ Vitest + RTL, 100% 覆盖率 |
|
||||
| **后端** | FastAPI + Celery + Redis | ✅ 基础框架已创建 | ✅ pytest 已配置, 10 tests |
|
||||
| **数据库** | PostgreSQL + pgvector | ❌ 未实现 | ❌ 全部待创建 |
|
||||
| **AI 集成** | 豆包/Qwen/DeepSeek API | ❌ 未实现 | ❌ 全部待创建 |
|
||||
|
||||
### 1.3 测试基础设施现状
|
||||
|
||||
> ⚠️ **注意**:前端测试依赖已在 package.json 中声明,但 **测试环境尚不可用**,需先创建配置文件。
|
||||
> ✅ **2026-02-04 更新**:前端测试环境已完整配置,所有组件测试已完成(257 个测试用例,100% 覆盖率)。
|
||||
|
||||
| 检查项 | 前端 | 后端 |
|
||||
|--------|------|------|
|
||||
| **测试依赖** | ✅ 已声明 (vitest, RTL, coverage-v8) | ❌ 待创建 |
|
||||
| **配置文件** | ❌ vitest.config.ts 缺失 | ❌ pytest.ini 缺失 |
|
||||
| **测试目录** | ❌ 无 __tests__ 目录 | ❌ 无 tests 目录 |
|
||||
| **测试文件** | ❌ 0 个测试文件 | ❌ 0 个测试文件 |
|
||||
| **测试依赖** | ✅ 已安装 (vitest, RTL, coverage-v8) | ✅ 已安装 (pytest, pytest-asyncio, pytest-cov) |
|
||||
| **配置文件** | ✅ vitest.config.ts 已配置 | ✅ pyproject.toml 已配置 |
|
||||
| **测试目录** | ✅ 与组件同目录 (*.test.tsx) | ✅ tests/ 目录 |
|
||||
| **测试文件** | ✅ 12 个测试文件 (257 用例) | ✅ 1 个测试文件 (10 用例) |
|
||||
| **CI/CD** | ❌ 未配置 | ❌ 未配置 |
|
||||
| **可直接运行测试** | ❌ 否 | ❌ 否 |
|
||||
| **可直接运行测试** | ✅ 是 (`npm test`) | ✅ 是 (`pytest tests/`) |
|
||||
| **覆盖率** | ✅ 100% | ✅ 74% (基础 API) |
|
||||
|
||||
### 1.4 前端组件清单
|
||||
|
||||
| 组件 | 路径 | 复杂度 | 可测性 | 关键特性 |
|
||||
|------|------|--------|--------|---------|
|
||||
| Button | ui/Button.tsx | 🟢 低 | 10/10 | 多 variant、loading 状态 |
|
||||
| Card | ui/Card.tsx | 🟢 低 | 10/10 | 子组件组合模式 |
|
||||
| Input | ui/Input.tsx | 🟡 中 | 8/10 | forwardRef、icon |
|
||||
| Select | ui/Select.tsx | 🟡 中 | 8/10 | forwardRef、options |
|
||||
| Modal | ui/Modal.tsx | 🟠 高 | 6/10 | useEffect 副作用、ESC 监听 |
|
||||
| ProgressBar | ui/ProgressBar.tsx | 🟡 中 | 8/10 | SVG 数学计算 |
|
||||
| Tag | ui/Tag.tsx | 🟢 低 | 10/10 | 状态标签映射 |
|
||||
| Sidebar | navigation/Sidebar.tsx | 🟡 中 | 8/10 | 递归导航、active 状态 |
|
||||
| BottomNav | navigation/BottomNav.tsx | 🟡 中 | 8/10 | badge 计数 |
|
||||
| StatusBar | navigation/StatusBar.tsx | 🟢 低 | 10/10 | 静态展示 |
|
||||
| DesktopLayout | layout/DesktopLayout.tsx | 🟢 低 | 8/10 | 布局组合 |
|
||||
| MobileLayout | layout/MobileLayout.tsx | 🟡 中 | 8/10 | 条件渲染 |
|
||||
| 组件 | 路径 | 复杂度 | 测试状态 | 测试数量 |
|
||||
|------|------|--------|----------|----------|
|
||||
| Button | ui/Button.tsx | 🟢 低 | ✅ 100% | 26 |
|
||||
| Card | ui/Card.tsx | 🟢 低 | ✅ 100% | 24 |
|
||||
| Input | ui/Input.tsx | 🟡 中 | ✅ 100% | 27 |
|
||||
| Select | ui/Select.tsx | 🟡 中 | ✅ 100% | 20 |
|
||||
| Modal | ui/Modal.tsx | 🟠 高 | ✅ 100% | 29 |
|
||||
| ProgressBar | ui/ProgressBar.tsx | 🟡 中 | ✅ 100% | 36 |
|
||||
| Tag | ui/Tag.tsx | 🟢 低 | ✅ 100% | 22 |
|
||||
| Sidebar | navigation/Sidebar.tsx | 🟡 中 | ✅ 100% | 21 |
|
||||
| BottomNav | navigation/BottomNav.tsx | 🟡 中 | ✅ 100% | 15 |
|
||||
| StatusBar | navigation/StatusBar.tsx | 🟢 低 | ✅ 100% | 8 |
|
||||
| DesktopLayout | layout/DesktopLayout.tsx | 🟢 低 | ✅ 100% | 14 |
|
||||
| MobileLayout | layout/MobileLayout.tsx | 🟡 中 | ✅ 100% | 15 |
|
||||
|
||||
**前端组件平均可测性:8.5/10** ✅
|
||||
**前端组件测试完成度:100%** ✅ (12 组件, 257 测试用例)
|
||||
|
||||
---
|
||||
|
||||
@@ -231,27 +232,28 @@ it('submits form with correct data', async () => {
|
||||
**工具:** Playwright
|
||||
|
||||
**覆盖范围:**
|
||||
- 用户登录 → 首页 → 上传视频 → 查看审核结果
|
||||
- 代理商审核流程(待审核列表 → 审核详情 → 通过/拒绝)
|
||||
- 品牌方终审流程(终审列表 → 审核 → 确认)
|
||||
- 用户登录 → 任务列表 → 任务详情 → 上传脚本 → AI预审 → 代理商/品牌复核 → 上传视频 → 查看审核结果
|
||||
- 代理商审核流程(待审核列表 → 审核详情 → 通过/拒绝 → 驳回回到脚本上传)
|
||||
- 品牌方终审流程(终审列表 → 审核 → 通过/驳回 → 驳回回到脚本上传)
|
||||
- Brief 上传与解析流程
|
||||
- AI 配置修改流程
|
||||
|
||||
**测试模式:**
|
||||
```typescript
|
||||
// 视频上传到审核完成的完整流程
|
||||
test('creator uploads video and receives review result', async ({ page }) => {
|
||||
// 脚本上传到审核完成的完整流程
|
||||
test('creator uploads script and receives review result', async ({ page }) => {
|
||||
await page.goto('/login');
|
||||
await page.fill('[name="email"]', 'creator@test.com');
|
||||
await page.fill('[name="password"]', 'password123');
|
||||
await page.click('button[type="submit"]');
|
||||
|
||||
await page.goto('/upload');
|
||||
await page.setInputFiles('input[type="file"]', 'fixtures/test-video.mp4');
|
||||
await page.click('button:has-text("开始审核")');
|
||||
await page.goto('/tasks');
|
||||
await page.click('a:has-text("查看详情")');
|
||||
await page.setInputFiles('input[type="file"]', 'fixtures/test-script.docx');
|
||||
await page.click('button:has-text("提交脚本")');
|
||||
|
||||
// 等待审核完成(WebSocket 推送)
|
||||
await expect(page.locator('.review-status')).toHaveText('审核完成', { timeout: 60000 });
|
||||
// 等待脚本 AI 预审完成(WebSocket 推送)
|
||||
await expect(page.locator('.review-status')).toHaveText('AI预审完成', { timeout: 60000 });
|
||||
|
||||
// 验证审核报告
|
||||
await page.click('button:has-text("查看报告")');
|
||||
@@ -781,16 +783,16 @@ coverage: {
|
||||
|
||||
## 6. 工具链配置方案
|
||||
|
||||
> 📋 **模板文件**:本章所有配置均为**待创建模板**,在执行对应 TASK 时需按此创建。
|
||||
> 📋 **模板文件**:本章所有配置为模板参考。前端配置已创建,后端配置待创建。
|
||||
|
||||
### 6.1 前端配置
|
||||
|
||||
> 前端目录 `frontend/` 已存在,但以下配置文件待创建。
|
||||
> 前端目录 `frontend/` 已存在,测试配置文件已创建完成(vitest.config.ts, vitest.setup.ts)。
|
||||
|
||||
#### 6.1.1 vitest.config.ts (待创建)
|
||||
#### 6.1.1 vitest.config.ts ✅ 已创建
|
||||
|
||||
```typescript
|
||||
// frontend/vitest.config.ts [待创建]
|
||||
// frontend/vitest.config.ts [已创建]
|
||||
import { defineConfig } from 'vitest/config';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import path from 'path';
|
||||
@@ -837,10 +839,10 @@ export default defineConfig({
|
||||
});
|
||||
```
|
||||
|
||||
#### 6.1.2 vitest.setup.ts (待创建)
|
||||
#### 6.1.2 vitest.setup.ts ✅ 已创建
|
||||
|
||||
```typescript
|
||||
// frontend/vitest.setup.ts [待创建]
|
||||
// frontend/vitest.setup.ts [已创建]
|
||||
import '@testing-library/jest-dom';
|
||||
import { cleanup } from '@testing-library/react';
|
||||
import { afterEach, vi } from 'vitest';
|
||||
@@ -914,13 +916,12 @@ export default defineConfig({
|
||||
|
||||
### 6.2 后端配置
|
||||
|
||||
> 📋 **模板文件**:以下配置为**待创建模板**,`backend/` 目录当前不存在。
|
||||
> 在执行 TASK-001(后端框架搭建)时,需按此模板创建对应文件。
|
||||
> ✅ **2026-02-04 更新**:后端基础框架已创建,测试配置在 `pyproject.toml` 中。
|
||||
|
||||
#### 6.2.1 pytest.ini (待创建)
|
||||
#### 6.2.1 pytest 配置 ✅ 已创建
|
||||
|
||||
```ini
|
||||
# backend/pytest.ini [待创建]
|
||||
# backend/pyproject.toml [tool.pytest.ini_options] 已创建
|
||||
[pytest]
|
||||
testpaths = tests
|
||||
python_files = test_*.py
|
||||
@@ -944,10 +945,10 @@ filterwarnings =
|
||||
ignore::DeprecationWarning
|
||||
```
|
||||
|
||||
#### 6.2.2 conftest.py (待创建)
|
||||
#### 6.2.2 conftest.py ✅ 已创建
|
||||
|
||||
```python
|
||||
# backend/tests/conftest.py [待创建]
|
||||
# backend/tests/conftest.py [已创建]
|
||||
import pytest
|
||||
import asyncio
|
||||
from typing import AsyncGenerator
|
||||
@@ -1016,10 +1017,10 @@ def mock_ai_response():
|
||||
}
|
||||
```
|
||||
|
||||
#### 6.2.3 pyproject.toml (待创建)
|
||||
#### 6.2.3 pyproject.toml ✅ 已创建
|
||||
|
||||
```toml
|
||||
# backend/pyproject.toml [待创建]
|
||||
# backend/pyproject.toml [已创建]
|
||||
[tool.poetry]
|
||||
name = "miaosi-backend"
|
||||
version = "1.0.0"
|
||||
@@ -1432,42 +1433,42 @@ Phase 5: E2E 与回归 (Week 10-11)
|
||||
|
||||
#### Phase 1: 基础设施搭建 (Week 1)
|
||||
|
||||
| 任务 | 产出物 | 预估工时 | 负责人 |
|
||||
|------|--------|---------|--------|
|
||||
| 创建 vitest.config.ts | 配置文件 | 2h | 前端开发 |
|
||||
| 创建 vitest.setup.ts | 测试环境配置 | 2h | 前端开发 |
|
||||
| 创建 playwright.config.ts | E2E 配置 | 2h | 前端开发 |
|
||||
| 创建 pytest.ini | 后端测试配置 | 2h | 后端开发 |
|
||||
| 创建 conftest.py | 测试 fixtures | 4h | 后端开发 |
|
||||
| 配置 GitHub Actions - 前端 | CI/CD 流水线 | 4h | DevOps |
|
||||
| 配置 GitHub Actions - 后端 | CI/CD 流水线 | 4h | DevOps |
|
||||
| 配置 Codecov | 覆盖率报告 | 2h | DevOps |
|
||||
| 编写 Button.test.tsx 示范 | 测试示范代码 | 4h | 前端开发 |
|
||||
| 编写 Modal.test.tsx 示范 | 副作用测试示范 | 4h | 前端开发 |
|
||||
| 团队 TDD 培训 | 培训材料 | 8h | Tech Lead |
|
||||
| 任务 | 产出物 | 预估工时 | 状态 |
|
||||
|------|--------|---------|------|
|
||||
| 创建 vitest.config.ts | 配置文件 | 2h | ✅ 完成 |
|
||||
| 创建 vitest.setup.ts | 测试环境配置 | 2h | ✅ 完成 |
|
||||
| 创建 playwright.config.ts | E2E 配置 | 2h | ⏳ 待完成 |
|
||||
| 创建 pytest.ini | 后端测试配置 | 2h | ✅ 完成 (pyproject.toml) |
|
||||
| 创建 conftest.py | 测试 fixtures | 4h | ✅ 完成 |
|
||||
| 配置 GitHub Actions - 前端 | CI/CD 流水线 | 4h | ⏳ 待完成 |
|
||||
| 配置 GitHub Actions - 后端 | CI/CD 流水线 | 4h | ⏳ 待完成 |
|
||||
| 配置 Codecov | 覆盖率报告 | 2h | ⏳ 待完成 |
|
||||
| 编写 Button.test.tsx 示范 | 测试示范代码 | 4h | ✅ 完成 |
|
||||
| 编写 Modal.test.tsx 示范 | 副作用测试示范 | 4h | ✅ 完成 |
|
||||
| 团队 TDD 培训 | 培训材料 | 8h | ⏳ 待完成 |
|
||||
|
||||
**Phase 1 总工时:38h**
|
||||
**Phase 1 进度:前端配置完成,CI/CD 待配置**
|
||||
|
||||
#### Phase 2: 前端 TDD (Week 2-3)
|
||||
#### Phase 2: 前端 TDD (Week 2-3) ✅ 已完成
|
||||
|
||||
| 任务 | 测试文件 | 预估工时 |
|
||||
|------|---------|---------|
|
||||
| Button 组件测试 | Button.test.tsx | 4h |
|
||||
| Card 组件测试 | Card.test.tsx | 3h |
|
||||
| Input 组件测试 | Input.test.tsx | 5h |
|
||||
| Select 组件测试 | Select.test.tsx | 4h |
|
||||
| Modal 组件测试 | Modal.test.tsx | 6h |
|
||||
| ProgressBar 组件测试 | ProgressBar.test.tsx | 5h |
|
||||
| Tag 组件测试 | Tag.test.tsx | 3h |
|
||||
| Sidebar 组件测试 | Sidebar.test.tsx | 5h |
|
||||
| BottomNav 组件测试 | BottomNav.test.tsx | 4h |
|
||||
| StatusBar 组件测试 | StatusBar.test.tsx | 2h |
|
||||
| Layout 组件测试 | Layout.test.tsx | 4h |
|
||||
| 常量模块测试 | constants.test.ts | 2h |
|
||||
| 表单集成测试 | forms.integration.test.tsx | 6h |
|
||||
| 导航集成测试 | navigation.integration.test.tsx | 5h |
|
||||
| 任务 | 测试文件 | 测试数量 | 状态 |
|
||||
|------|---------|----------|------|
|
||||
| Button 组件测试 | Button.test.tsx | 26 | ✅ 完成 |
|
||||
| Card 组件测试 | Card.test.tsx | 24 | ✅ 完成 |
|
||||
| Input 组件测试 | Input.test.tsx | 27 | ✅ 完成 |
|
||||
| Select 组件测试 | Select.test.tsx | 20 | ✅ 完成 |
|
||||
| Modal 组件测试 | Modal.test.tsx | 29 | ✅ 完成 |
|
||||
| ProgressBar 组件测试 | ProgressBar.test.tsx | 36 | ✅ 完成 |
|
||||
| Tag 组件测试 | Tag.test.tsx | 22 | ✅ 完成 |
|
||||
| Sidebar 组件测试 | Sidebar.test.tsx | 21 | ✅ 完成 |
|
||||
| BottomNav 组件测试 | BottomNav.test.tsx | 15 | ✅ 完成 |
|
||||
| StatusBar 组件测试 | StatusBar.test.tsx | 8 | ✅ 完成 |
|
||||
| Layout 组件测试 | DesktopLayout.test.tsx + MobileLayout.test.tsx | 29 | ✅ 完成 |
|
||||
| 常量模块测试 | - | - | ⏭️ 跳过 (纯静态常量) |
|
||||
| 表单集成测试 | forms.integration.test.tsx | - | ⏳ 待完成 |
|
||||
| 导航集成测试 | navigation.integration.test.tsx | - | ⏳ 待完成 |
|
||||
|
||||
**Phase 2 总工时:58h**
|
||||
**Phase 2 结果:257 个单元测试通过,100% 覆盖率**
|
||||
|
||||
#### Phase 3-5: 后端 TDD (Week 4-11)
|
||||
|
||||
@@ -1507,12 +1508,12 @@ Phase 5: E2E 与回归 (Week 10-11)
|
||||
|
||||
### 10.1 TDD 实施验收标准
|
||||
|
||||
| 阶段 | 验收标准 | 验收方式 |
|
||||
|------|---------|---------|
|
||||
| Phase 1 完成 | CI/CD 流水线可运行,测试示范通过 | Demo 演示 |
|
||||
| Phase 2 完成 | 前端覆盖率 ≥ 70%,所有组件有测试 | 覆盖率报告 |
|
||||
| Phase 3-4 完成 | 后端覆盖率 ≥ 80%,P0 API 100% 覆盖 | 覆盖率报告 |
|
||||
| Phase 5 完成 | E2E 核心路径通过,回归测试 100% | 测试报告 |
|
||||
| 阶段 | 验收标准 | 验收方式 | 状态 |
|
||||
|------|---------|---------|------|
|
||||
| Phase 1 完成 | CI/CD 流水线可运行,测试示范通过 | Demo 演示 | ⏳ CI/CD 待配置 |
|
||||
| Phase 2 完成 | 前端覆盖率 ≥ 70%,所有组件有测试 | 覆盖率报告 | ✅ 100% 覆盖率 |
|
||||
| Phase 3-4 完成 | 后端覆盖率 ≥ 80%,P0 API 100% 覆盖 | 覆盖率报告 | 🔄 进行中 (基础 74%) |
|
||||
| Phase 5 完成 | E2E 核心路径通过,回归测试 100% | 测试报告 | ⏳ 待开始 |
|
||||
|
||||
### 10.2 长期成功指标
|
||||
|
||||
|
||||
Reference in New Issue
Block a user