75e685d418
Reorganize the data layer by separating DTOs (Data Transfer Objects) from Zod validation schemas into distinct directory structures. Previously, all model types were imported from a single `@/data/models` barrel file, mixing request/response classes with validation schemas. Changes: - Update API files (auth, chat, metrics, user) to import DTOs from specific paths under `@/data/dto/*` instead of the models barrel - Move user schema to `@/data/schemas/user/user` for type-only imports - Create dedicated Zod schema files under `@/data/schemas/*` for auth and chat domain models (e.g., AppleLoginRequestSchema, SendMessageRequestSchema, SyncMessageSchema, SttDataSchema) - Improve discoverability and tree-shaking by co-locating schemas with their respective domain areas This is a non-functional refactor that lays the groundwork for clearer separation between transport-layer types and runtime validation.
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
/**
|
|
* 用户统计响应
|
|
* 原始 Dart: UserStatsResponse (lib/data/models/user/user_stats_response.dart)
|
|
*/
|
|
import { z } from "zod";
|
|
import { PersonalityTraitsSchema, PERSONALITY_TRAITS_DEFAULTS } from "./personality_traits";
|
|
import { RecentMemorySchema } from "./recent_memory";
|
|
|
|
export const UserStatsResponseSchema = z.object({
|
|
userId: z.string(),
|
|
username: z.string(),
|
|
platform: z.string(),
|
|
intimacy: z.number(),
|
|
relationshipStage: z.string(),
|
|
dolBalance: z.number(),
|
|
totalMessages: z.number(),
|
|
lastMessageAt: z.string().default(""),
|
|
accountCreatedAt: z.string().default(""),
|
|
currentMood: z.string().default(""),
|
|
personalityTraits: PersonalityTraitsSchema.default(PERSONALITY_TRAITS_DEFAULTS),
|
|
recentMemories: z.array(RecentMemorySchema).default([]),
|
|
promptTokensTotal: z.number().default(0),
|
|
completionTokensTotal: z.number().default(0),
|
|
cacheHitTokensTotal: z.number().default(0),
|
|
tokensTotal: z.number().default(0),
|
|
});
|
|
|
|
export type UserStatsResponseInput = z.input<typeof UserStatsResponseSchema>;
|
|
export type UserStatsResponseData = z.output<typeof UserStatsResponseSchema>;
|