| 1 | # AiBatchGenerateBar |
| 2 | |
| 3 | 草稿箱 AI 批量生成输入栏。该目录只放当前组件私有实现,外部调用方只应引用组件入口 `index.tsx`。 |
| 4 | |
| 5 | ## 目录结构 |
| 6 | |
| 7 | | 目录 | 说明 | |
| 8 | | ------------- | --------------------------------------------------------------------------------------------------------------------- | |
| 9 | | `components/` | 当前输入栏私有 UI 子组件,例如提示词输入区、工具栏、媒体堆叠、弹窗和提示浮层。 | |
| 10 | | `hooks/` | 当前输入栏私有 Hook,例如入口 controller、模型派生、计费校验、平台文案、上传校验、拖拽粘贴、媒体 mention 和提交流程。 | |
| 11 | | `store/` | 当前输入栏私有局部 store,按 `configKey` 隔离工具栏、提示词和生成参数状态。 | |
| 12 | | `types/` | 当前输入栏私有 props、状态模型和辅助类型。 | |
| 13 | | `utils/` | 当前输入栏私有纯函数、模型参数计算、平台限制、媒体持久化和提示词 token 工具。 | |
| 14 | | `styles/` | 当前输入栏入口样式;子组件私有样式仍保留在对应子组件目录。 | |
| 15 | |
| 16 | ## Hook 分层 |
| 17 | |
| 18 | | 文件 | 说明 | |
| 19 | | ------------------------------------ | -------------------------------------------------------------------------------- | |
| 20 | | `useAiBatchGenerateBarController.ts` | 入口 controller,只负责串联局部 store、业务 hooks 和视图 props,不直接渲染 JSX。 | |
| 21 | | `useAiBatchCreditState.ts` | 视频编辑态、数量派生、模型参数派生和 duration 自动修正。 | |
| 22 | | `useAiBatchPlatformPromptState.ts` | 平台兼容性、有效平台、平台限制和系统文案默认值同步。 | |
| 23 | |
| 24 | ## 维护规则 |
| 25 | |
| 26 | - `index.tsx` 只负责组合编排,不再直接追加大段上传、提交、模型派生或 UI 区块逻辑。 |
| 27 | - 新增子组件放入 `components/<PascalCase>/index.tsx`。 |
| 28 | - 新增组件私有 Hook 放入 `hooks/useXxx.ts`。 |
| 29 | - 新增组件私有纯函数或常量放入 `utils/`。 |
| 30 | - 新增组件私有类型放入 `types/`,不要和组件、hooks 或 utils 混写。 |
| 31 | - 多个私有子组件共享可写状态或出现多层 props 透传时,优先在 `store/` 建立局部 store。 |
| 32 | - 如果某个能力被 `AiBatchGenerateBar` 之外的多个草稿箱组件复用,再评估提升到 `src/components/draft-box/hooks`、`src/components/draft-box/utils` 或更高层公共目录。 |
| 33 |