diff --git a/docs/backend/profile.md b/docs/backend/profile.md new file mode 100644 index 00000000..27333905 --- /dev/null +++ b/docs/backend/profile.md @@ -0,0 +1,144 @@ +告诉前端这次只改了 GET /api/user/profile 的响应,新增每日免费额度信息,原有字段不变。 +接口:GET https://api.cozsweet.com/api/user/profile +新增字段: +{ + "dailyFreeChatLimit": 10, + "dailyFreeChatUsed": 0, + "dailyFreeChatRemaining": 10, + "dailyFreePrivateLimit": 0, + "dailyFreePrivateUsed": 0, + "dailyFreePrivateRemaining": 0, + "dailyQuotas": { + "chat": { + "limit": 10, + "used": 0, + "remaining": 10 + }, + "privateMessage": { + "limit": 0, + "used": 0, + "remaining": 0 + } + } +} +含义: +dailyFreeChatLimit:今天免费聊天总次数 +dailyFreeChatUsed:今天已用免费聊天次数 +dailyFreeChatRemaining:今天剩余免费聊天次数 +dailyFreePrivateLimit:今天免费私密消息总次数 +dailyFreePrivateUsed:今天已用免费私密消息次数 +dailyFreePrivateRemaining:今天剩余免费私密消息次数 +dailyQuotas:同样数据的结构化版本,前端想用对象也可以直接用它 +当前额度规则: +游客/未注册:聊天 10,私密 0 +注册用户:聊天 30,私密 2 +注意: +聊天优先消耗 dailyFreeChatRemaining +私密消息优先消耗 dailyFreePrivateRemaining +聊天剩余为 0 时,前端应阻止继续聊天或展示后端返回的额度用完提示 +私密剩余为 0 时,前端不要展示私密内容,按锁定私密消息处理。 +16:19 +profile完整字段发给前端 +16:20 +发给前端这版: +GET https://api.cozsweet.com/api/user/profile +Authorization: Bearer +完整响应结构: +interface ProfileResponse { + code: number; + message: string; + success: boolean; + data: UserProfile; +} + +interface UserProfile { + id: string; + username: string; + email: string | null; + platform: string; + + intimacy: number; + dolBalance: number; + creditBalance: number; + + isTestAccount: boolean; + + personalityTraits: Record | null; + preferredLanguage: string | null; + + createdAt: string | null; + lastMessageAt: string | null; + + country: string | null; + countryCode: string | null; + + dailyFreeChatLimit: number; + dailyFreeChatUsed: number; + dailyFreeChatRemaining: number; + + dailyFreePrivateLimit: number; + dailyFreePrivateUsed: number; + dailyFreePrivateRemaining: number; + + dailyQuotas: { + chat: { + limit: number; + used: number; + remaining: number; + }; + privateMessage: { + limit: number; + used: number; + remaining: number; + }; + }; +} +示例: +{ + "code": 200, + "message": "success", + "success": true, + "data": { + "id": "user-id", + "username": "guest_codex", + "email": "device_xxx@guest.local", + "platform": "web", + "intimacy": 0, + "dolBalance": 0, + "creditBalance": 0, + "isTestAccount": false, + "personalityTraits": { + "caring": 0.5, + "playful": 0.5, + "serious": 0.5, + "cheerful": 0.5, + "romantic": 0.5 + }, + "preferredLanguage": "ja", + "createdAt": "2026-07-03T16:12:01.591264+08:00", + "lastMessageAt": null, + "country": "Japan", + "countryCode": "JP", + "dailyFreeChatLimit": 10, + "dailyFreeChatUsed": 0, + "dailyFreeChatRemaining": 10, + "dailyFreePrivateLimit": 0, + "dailyFreePrivateUsed": 0, + "dailyFreePrivateRemaining": 0, + "dailyQuotas": { + "chat": { + "limit": 10, + "used": 0, + "remaining": 10 + }, + "privateMessage": { + "limit": 0, + "used": 0, + "remaining": 0 + } + } + } +} +额度规则: +游客:dailyFreeChatLimit = 10,dailyFreePrivateLimit = 0 +注册用户:dailyFreeChatLimit = 30,dailyFreePrivateLimit = 2 \ No newline at end of file