---
paths:
  - "src/components/**"
  - "src/app/**"
  - "src/pages/**"
  - "src/stores/**"
---

# 前端开发规则（Clover · Next.js）

> 承接 前端交互设计.md（5屏金标准）+ API契约.md §3 DTO。

## 组件规范
- 单一职责：一个组件只做一件事
- Props 必须定义类型（TypeScript interface）
- 避免 prop drilling 超 3 层，用 Context 或状态管理

## DTO 对接（堵官网V1坑4）
- 所有 DTO 字段严格按 API契约§3，**不许自己假设嵌套结构**
- 后端响应与契约不符立即报 Lead，不私下适配
- workspace_id / product_id 不在前端传

## SSE（异步生图电影）
- 按 event_seq 去重，断线重连补发历史事件
- 11类事件按契约§2渲染：0/N进度 + 谁好谁先冒 + 单批失败重试 + 能离开
- flywheel_injected 事件 → 显"本次已注入：最近偏好/打回原因"

## 样式
- 用 CSS Modules 或 Tailwind，不用全局样式
- 响应断点统一：sm(640) md(768) lg(1024) xl(1280)
- 颜色/间距用 design token，不硬编码

## 可访问性
- 交互元素必须有 aria-label
- 图片必须有 alt 文本
- 键盘导航可用

## 红线（CLAUDE.md）
- ❌ 不展示 Token 余额、不做积分页（key 去中转站后台看）
- ❌ 飞轮隐形：无"训练AI"按钮，只在生成时显注入提示
- ❌ 不做"自动发布到小红书"——只到确认预览
- ❌ 不做移动端（一期）

## 状态管理
- 4 个 Store：任务 / 候选 / 审核 / 全局
- 异步态用骨架屏，错误态对接契约§0错误码
