feat(chat): render role-bound payment guidance
Docker Image / Build and Push Docker Image (push) Successful in 5m2s
Docker Image / Build and Push Docker Image (push) Successful in 5m2s
This commit is contained in:
@@ -13,6 +13,41 @@ import {
|
||||
import { ChatImageSchema, ChatLockDetailSchema } from "../chat_payloads";
|
||||
import { ChatActionSchema } from "../chat_action";
|
||||
|
||||
export const PaymentGuidanceSceneSchema = z.enum([
|
||||
"vip",
|
||||
"insufficientCredits",
|
||||
"chatInterrupted",
|
||||
"voiceLocked",
|
||||
"imageLocked",
|
||||
"privateMessageLocked",
|
||||
"historyLocked",
|
||||
"privateZoneLocked",
|
||||
"unknownLock",
|
||||
"whyPay",
|
||||
"leavingAfterCredits",
|
||||
"paymentIssue",
|
||||
"externalRisk",
|
||||
"purchaseOptions",
|
||||
]);
|
||||
|
||||
export const PaymentGuidanceSchema = z
|
||||
.object({
|
||||
guidanceId: z.string().min(1),
|
||||
characterId: z.string().min(1),
|
||||
characterName: z.string().min(1),
|
||||
scene: PaymentGuidanceSceneSchema,
|
||||
mode: z.enum(["guide", "careOnly", "issueSupport", "riskReminder"]),
|
||||
title: z.string().nullable().default(null),
|
||||
copy: z.string().min(1),
|
||||
ctaLabel: z.string().nullable().default(null),
|
||||
purchaseOptions: z.array(z.enum(["vip", "topup"])).readonly(),
|
||||
target: z.enum(["subscription", "giftCatalog"]).nullable().default(null),
|
||||
ruleId: z.string().min(1),
|
||||
})
|
||||
.readonly();
|
||||
|
||||
export type PaymentGuidance = z.output<typeof PaymentGuidanceSchema>;
|
||||
|
||||
export const CommercialActionSchema = z
|
||||
.object({
|
||||
actionId: z.string().min(1),
|
||||
@@ -42,6 +77,7 @@ export const ChatSendResponseSchema = z
|
||||
requiredCredits: numberOrZero,
|
||||
shortfallCredits: numberOrZero,
|
||||
commercialAction: CommercialActionSchema.nullish().default(null),
|
||||
paymentGuidance: PaymentGuidanceSchema.nullish().default(null),
|
||||
chatAction: ChatActionSchema.nullish().default(null),
|
||||
})
|
||||
.readonly();
|
||||
|
||||
Reference in New Issue
Block a user