feat(chat): migrate chat protocol to lock detail

This commit is contained in:
2026-06-24 14:06:30 +08:00
parent c280a3c1ea
commit 42c03f8901
34 changed files with 609 additions and 373 deletions
@@ -6,33 +6,65 @@
"messages": [
{
"role": "user",
"type": "text",
"content": "I had a long day.",
"id": "msg_user_001",
"created_at": "2026-06-23T02:10:00.000Z",
"isPrivate": false,
"privateLocked": false,
"privateHint": null,
"image_url": null
"audioUrl": null,
"image": {
"type": null,
"url": null
},
"lockDetail": {
"locked": false,
"showContent": true,
"showUpgrade": false,
"reason": null,
"hint": null,
"detail": null
}
},
{
"role": "assistant",
"type": "text",
"content": "Come here. Tell me everything, slowly.",
"id": "msg_ai_001",
"created_at": "2026-06-23T02:10:05.000Z",
"isPrivate": false,
"privateLocked": false,
"privateHint": null,
"image_url": null
"audioUrl": null,
"image": {
"type": null,
"url": null
},
"lockDetail": {
"locked": false,
"showContent": true,
"showUpgrade": false,
"reason": null,
"hint": null,
"detail": null
}
},
{
"role": "assistant",
"type": "text",
"content": "",
"id": "msg_private_locked_001",
"created_at": "2026-06-23T02:11:12.000Z",
"isPrivate": true,
"privateLocked": true,
"privateHint": "Elio has a private message for you.",
"image_url": null
"audioUrl": null,
"image": {
"type": null,
"url": null
},
"lockDetail": {
"locked": true,
"showContent": false,
"showUpgrade": true,
"reason": "private_message",
"hint": "Elio has a private message for you.",
"detail": {
"messageId": "msg_private_locked_001"
}
}
}
],
"total": 3,
@@ -6,33 +6,63 @@
"messages": [
{
"role": "user",
"type": "text",
"content": "I had a long day.",
"id": "msg_user_001",
"created_at": "2026-06-23T02:10:00.000Z",
"isPrivate": false,
"privateLocked": false,
"privateHint": null,
"image_url": null
"audioUrl": null,
"image": {
"type": null,
"url": null
},
"lockDetail": {
"locked": false,
"showContent": true,
"showUpgrade": false,
"reason": null,
"hint": null,
"detail": null
}
},
{
"role": "assistant",
"type": "text",
"content": "I saved this softer thought for you, just between us.",
"id": "msg_private_unlocked_001",
"created_at": "2026-06-23T02:11:12.000Z",
"isPrivate": true,
"privateLocked": false,
"privateHint": null,
"image_url": null
"audioUrl": null,
"image": {
"type": null,
"url": null
},
"lockDetail": {
"locked": false,
"showContent": true,
"showUpgrade": false,
"reason": null,
"hint": null,
"detail": null
}
},
{
"role": "assistant",
"type": "text",
"content": "",
"id": "msg_ai_image_001",
"created_at": "2026-06-23T02:12:28.000Z",
"isPrivate": false,
"privateLocked": false,
"privateHint": null,
"image_url": "https://cdn.cozsweet.com/mock/chat/elio-schedule-001.jpg"
"audioUrl": null,
"image": {
"type": "elio_schedule",
"url": "https://cdn.cozsweet.com/mock/chat/elio-schedule-001.jpg"
},
"lockDetail": {
"locked": false,
"showContent": true,
"showUpgrade": false,
"reason": null,
"hint": null,
"detail": null
}
}
],
"total": 3,
@@ -3,27 +3,26 @@
"message": "success",
"success": true,
"data": {
"mode": "http",
"reply": "",
"voiceUrl": "",
"audioUrl": "",
"intimacyChange": 0,
"newIntimacy": 42,
"relationshipStage": "close_friend",
"currentMood": "",
"messageId": "msg_blocked_daily_001",
"isGuest": false,
"timestamp": 1782180665000,
"blocked": true,
"blockReason": "daily_limit",
"blockDetail": {
"type": "daily_limit",
"usedToday": 20,
"limit": 20
"image": {
"type": null,
"url": null
},
"paywallTriggered": false,
"showUpgrade": false,
"imageType": null,
"imageUrl": null
"lockDetail": {
"locked": true,
"showContent": false,
"showUpgrade": true,
"reason": "daily_limit",
"hint": "免费消息额度已用完,开通会员后可以继续聊天。",
"detail": {
"type": "daily_msg_limit",
"usedToday": 20,
"limit": 20
}
}
}
}
@@ -3,23 +3,22 @@
"message": "success",
"success": true,
"data": {
"mode": "http",
"reply": "I can show you that photo after you activate VIP.",
"voiceUrl": "",
"audioUrl": "",
"intimacyChange": 0,
"newIntimacy": 42,
"relationshipStage": "close_friend",
"currentMood": "playful",
"messageId": "msg_photo_paywall_001",
"isGuest": false,
"timestamp": 1782180725000,
"blocked": null,
"blockReason": null,
"blockDetail": null,
"paywallTriggered": true,
"showUpgrade": true,
"imageType": null,
"imageUrl": null
"image": {
"type": "elio_schedule",
"url": "https://cdn.cozsweet.com/mock/chat/elio-schedule-locked.jpg"
},
"lockDetail": {
"locked": true,
"showContent": true,
"showUpgrade": true,
"reason": "image",
"hint": "Activate VIP to unlock the full photo.",
"detail": null
}
}
}
@@ -3,23 +3,22 @@
"message": "success",
"success": true,
"data": {
"mode": "http",
"reply": "I am here. Tell me what happened, one small piece at a time.",
"voiceUrl": "",
"audioUrl": "",
"intimacyChange": 0,
"newIntimacy": 42,
"relationshipStage": "close_friend",
"currentMood": "gentle",
"messageId": "msg_ai_reply_001",
"isGuest": false,
"timestamp": 1782180605000,
"blocked": null,
"blockReason": null,
"blockDetail": null,
"paywallTriggered": false,
"showUpgrade": false,
"imageType": null,
"imageUrl": null
"image": {
"type": null,
"url": null
},
"lockDetail": {
"locked": false,
"showContent": true,
"showUpgrade": false,
"reason": null,
"hint": null,
"detail": null
}
}
}
@@ -3,28 +3,26 @@
"message": "success",
"success": true,
"data": {
"mode": "http",
"type": "text",
"reply": "",
"voiceUrl": "",
"audioUrl": "",
"intimacyChange": 0,
"newIntimacy": 0,
"relationshipStage": "密友",
"currentMood": "happy",
"messageId": "",
"isGuest": true,
"timestamp": 1782197944984,
"blocked": true,
"blockReason": "total_limit",
"blockDetail": {
"type": "guest_total_msg_limit",
"usedTotal": 12,
"limit": 5
"image": {
"type": null,
"url": null
},
"paywallTriggered": false,
"showUpgrade": false,
"imageType": null,
"imageUrl": null
"lockDetail": {
"locked": true,
"showContent": false,
"showUpgrade": true,
"reason": "daily_limit",
"hint": "Log in to get more free chat messages.",
"detail": {
"type": "daily_msg_limit",
"usedToday": 5,
"limit": 5
}
}
}
}
@@ -3,23 +3,22 @@
"message": "success",
"success": true,
"data": {
"mode": "http",
"reply": "This is the kind of view I would want to share with you.",
"voiceUrl": "",
"audioUrl": "",
"intimacyChange": 0,
"newIntimacy": 43,
"relationshipStage": "close_friend",
"currentMood": "warm",
"messageId": "msg_ai_image_reply_001",
"isGuest": false,
"timestamp": 1782180785000,
"blocked": null,
"blockReason": null,
"blockDetail": null,
"paywallTriggered": false,
"showUpgrade": false,
"imageType": "elio_schedule",
"imageUrl": "https://cdn.cozsweet.com/mock/chat/elio-schedule-001.jpg"
"image": {
"type": "elio_schedule",
"url": "https://cdn.cozsweet.com/mock/chat/elio-schedule-001.jpg"
},
"lockDetail": {
"locked": false,
"showContent": true,
"showUpgrade": false,
"reason": null,
"hint": null,
"detail": null
}
}
}
@@ -1,6 +1,9 @@
{
"type": "image",
"data": {
"imageUrl": "https://cdn.cozsweet.com/mock/chat/elio-schedule-001.jpg"
"image": {
"type": "elio_schedule",
"url": "https://cdn.cozsweet.com/mock/chat/elio-schedule-001.jpg"
}
}
}
@@ -1,9 +1,17 @@
{
"type": "paywall_status",
"data": {
"paywallTriggered": true,
"showUpgrade": true,
"imageType": null,
"imageUrl": null
"lockDetail": {
"locked": true,
"showContent": false,
"showUpgrade": true,
"reason": "daily_limit",
"hint": "免费消息额度已用完,开通会员后可以继续聊天。",
"detail": {
"type": "daily_msg_limit",
"usedToday": 20,
"limit": 20
}
}
}
}