pet_data/docs/API_STRUCTURE.md

336 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API 端點結構設計
本文檔定義了虛擬寵物系統的 API 端點結構,用於前端與後端整合。
## 基礎配置
- **Base URL**: `http://localhost:3000/api` (開發環境)
- **認證**: 未來可加入 JWT Token
- **資料格式**: JSON
## API 端點列表
### 1. 寵物狀態相關
#### GET `/pet/state`
獲取當前寵物狀態
**Response:**
```json
{
"speciesId": "tinyTigerCat",
"stage": "baby",
"hunger": 80.5,
"happiness": 60.2,
"health": 100,
"weight": 500,
"ageSeconds": 120,
"poopCount": 2,
"str": 5,
"int": 3,
"dex": 8,
"luck": 15,
"isSleeping": false,
"isSick": false,
"isDead": false,
"currentDeityId": "mazu",
"deityFavors": {
"mazu": 20,
"earthgod": 10,
"yuelao": 0,
"wenchang": 0,
"guanyin": 5
},
"dailyPrayerCount": 1,
"destiny": null,
"buffs": [],
"inventory": [],
"generation": 1,
"lastTickTime": 1234567890
}
```
#### POST `/pet/update`
更新寵物狀態(部分更新)
**Request Body:**
```json
{
"hunger": 85,
"happiness": 70
}
```
**Response:**
```json
{
"success": true,
"data": { /* 完整狀態物件 */ }
}
```
#### POST `/pet/save`
儲存完整寵物狀態
**Request Body:**
```json
{ /* 完整 PetState 物件 */ }
```
**Response:**
```json
{
"success": true,
"message": "狀態已儲存"
}
```
---
### 2. 事件系統相關
#### GET `/events/list`
獲取所有事件配置
**Response:**
```json
[
{
"id": "lucky_find",
"type": "good",
"weight": 0.3,
"condition": "function_string_or_null",
"effects": [
{
"type": "modifyStats",
"payload": { "happiness": 10, "luck": 5 }
}
]
}
]
```
#### POST `/events/trigger`
觸發事件
**Request Body:**
```json
{
"eventId": "lucky_find",
"petState": { /* 當前狀態 */ }
}
```
**Response:**
```json
{
"success": true,
"eventId": "lucky_find",
"effects": [
{
"type": "modifyStats",
"updates": { "happiness": 10, "luck": 5 }
}
]
}
```
---
### 3. Buff 系統相關
#### POST `/buffs/apply`
應用 Buff
**Request Body:**
```json
{
"id": "fortune",
"name": "福運加持",
"durationTicks": 5,
"percent": { "luck": 0.2 }
}
```
**Response:**
```json
{
"success": true,
"buff": { /* Buff 物件 */ }
}
```
---
### 4. 神明系統相關
#### GET `/deities/list`
獲取所有神明資料
**Response:**
```json
[
{
"id": "mazu",
"name": "媽祖",
"personality": "溫柔守護",
"buffs": {
"gameSuccessRate": 0.1,
"sicknessReduction": 0.15
},
"buffDescriptions": ["小遊戲 +10%", "生病機率 -15%"],
"dialogues": ["好孩子,媽祖保佑你平安喔"],
"icon": "deity-mazu"
}
]
```
#### POST `/deities/pray`
祈福
**Request Body:**
```json
{
"deityId": "mazu",
"petState": { /* 當前狀態 */ }
}
```
**Response:**
```json
{
"success": true,
"favorIncrease": 5,
"newFavor": 25,
"message": "祈福成功"
}
```
---
### 5. 籤詩系統相關
#### POST `/fortune/draw`
抽籤
**Request Body:**
```json
{
"deityId": "guanyin" // 可選
}
```
**Response:**
```json
{
"success": true,
"lot": {
"id": "1",
"grade": "上上",
"palace": "子宮",
"poem1": "天開地闢萬物全 人力回天事事全",
"poem2": "若問前途與運泰 唯有善德鬼神欽",
"meaning": "大吉大利,萬事亨通",
"explanation": "此籤象徵開天闢地之意,預示大吉",
"oracle": "家宅:平安、事業:順利",
"story": "宋太祖黃袍加身"
},
"buff": {
"id": "fortune_blessing",
"name": "上上籤祝福",
"durationTicks": 20,
"percent": { "luck": 0.3, "dropRate": 0.25 }
}
}
```
---
### 6. 道具系統相關
#### GET `/items/list`
獲取所有道具
**Response:**
```json
[
{
"id": "cookie",
"name": "幸運餅乾",
"type": "consumable",
"effects": {
"modifyStats": { "hunger": 20, "happiness": 10 }
},
"description": "增加飢餓和快樂"
}
]
```
#### POST `/items/use`
使用道具
**Request Body:**
```json
{
"itemId": "cookie",
"count": 1
}
```
**Response:**
```json
{
"success": true,
"itemId": "cookie",
"count": 1,
"effects": {
"modifyStats": { "hunger": 20, "happiness": 10 }
}
}
```
---
## 錯誤處理
所有 API 錯誤應返回以下格式:
```json
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "錯誤訊息"
}
}
```
常見錯誤碼:
- `PET_NOT_FOUND`: 寵物不存在
- `INVALID_STATE`: 狀態無效
- `EVENT_CONDITION_FAILED`: 事件條件不滿足
- `DAILY_LIMIT_EXCEEDED`: 每日限制已達上限
- `ITEM_NOT_FOUND`: 道具不存在
- `INSUFFICIENT_ITEM`: 道具數量不足
---
## 實作建議
### 後端實作
1. 使用 RESTful API 設計
2. 實作資料驗證Joi/Yup
3. 加入認證中介層(未來)
4. 實作速率限制rate limiting
5. 使用資料庫儲存狀態PostgreSQL/MongoDB
### 前端整合
1. 使用 `ApiService` 類別統一管理 API 呼叫
2. 實作錯誤處理和重試機制
3. 使用狀態管理Pinia/Vuex同步狀態
4. 實作樂觀更新Optimistic Updates
### Mock 模式
開發階段可使用 `ApiService` 的 mock 模式,所有資料儲存在 `localStorage`,方便測試和開發。