122 lines
1.9 KiB
Markdown
122 lines
1.9 KiB
Markdown
|
|
# 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. 其他工具頁
|