ai-cut/doc/CUT_AI_FRONTEND_SPEC.md

122 lines
1.9 KiB
Markdown
Raw Permalink Normal View History

2025-12-16 10:08:51 +00:00
# Cursor 開發最高準則Nuxt 4 · Gemini Direct
## 1. 前提
- 專案已存在
- 使用 Nuxt 4
- 使用真實 Gemini API
- Token 由使用者於設定頁輸入
---
## 2. Dependency 規則
### 規劃階段
- 允許討論是否需要新增 dependency
- 需說明必要性與替代方案
### 實作階段(預設)
- ❌ 不新增任何 dependency
- ❌ 不安裝任何套件
- ❌ 不隱性引入 library
---
## 3. Component 拆解原則Token 最小化)
只允許三層:
### Base
- BaseButton
- BaseInput
- BaseTextarea
- BaseCard
### Feature
- ToolCard
- SceneCard
- CameraShotCard
### Page
- pages/*.vue
- 僅組合元件與呼叫 composable
---
## 4. 拆 component 的唯一判斷
是否會被兩個以上頁面重用:
- 是 → 拆
- 否 → 留在頁面
---
## 5. AI 呼叫規則
- UI 不得直接呼叫 Gemini
- UI 只呼叫 composable
- Prompt 組裝只存在於 utils/ai
---
## 6. AI Provider 架構
### Interface/types/ai.ts
```ts
export interface AIProvider {
generateStoryboard(input: unknown): Promise<string>
analyzeCamera(input: unknown): Promise<string>
generateVideoPlan(input: unknown): Promise<string>
}
```
### Gemini Client
- 從 localStorage 讀取 token
- 單一責任:呼叫 API
### Grok Client
- 與 Gemini 相同介面
- 預設不啟用
### Provider Selector
- 依設定頁選擇 provider
- 預設 Gemini
---
## 7. 鏡頭語言處理規則
- 不 hardcode 鏡頭語言
- 不寫 enum
- 不驗證 AI 選擇是否合理
- UI 僅顯示結構化結果
建議結構:
```ts
{
shot: string
movement: string
composition: string
lighting: string
description: string
}
```
---
## 8. Cursor 輸出限制
- 一次只產生一個檔案
- 不跨檔案修改
- 不自動優化
- 不補未使用功能
---
## 9. 開發順序(不可跳)
1. Settings Page
2. Gemini Client
3. Provider Selector
4. AI 分鏡表
5. 其他工具頁