@octo-cyber/sea-king 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controllers/character.controller.d.ts +10 -0
- package/dist/controllers/character.controller.d.ts.map +1 -0
- package/dist/controllers/character.controller.js +58 -0
- package/dist/controllers/character.controller.js.map +1 -0
- package/dist/controllers/chat.controller.d.ts +13 -0
- package/dist/controllers/chat.controller.d.ts.map +1 -0
- package/dist/controllers/chat.controller.js +113 -0
- package/dist/controllers/chat.controller.js.map +1 -0
- package/dist/controllers/crisis.controller.d.ts +10 -0
- package/dist/controllers/crisis.controller.d.ts.map +1 -0
- package/dist/controllers/crisis.controller.js +69 -0
- package/dist/controllers/crisis.controller.js.map +1 -0
- package/dist/controllers/index.d.ts +10 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +24 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/leaderboard.controller.d.ts +9 -0
- package/dist/controllers/leaderboard.controller.d.ts.map +1 -0
- package/dist/controllers/leaderboard.controller.js +51 -0
- package/dist/controllers/leaderboard.controller.js.map +1 -0
- package/dist/controllers/live-chat.controller.d.ts +14 -0
- package/dist/controllers/live-chat.controller.d.ts.map +1 -0
- package/dist/controllers/live-chat.controller.js +95 -0
- package/dist/controllers/live-chat.controller.js.map +1 -0
- package/dist/controllers/matchmaking.controller.d.ts +22 -0
- package/dist/controllers/matchmaking.controller.d.ts.map +1 -0
- package/dist/controllers/matchmaking.controller.js +157 -0
- package/dist/controllers/matchmaking.controller.js.map +1 -0
- package/dist/controllers/phrase.controller.d.ts +11 -0
- package/dist/controllers/phrase.controller.d.ts.map +1 -0
- package/dist/controllers/phrase.controller.js +78 -0
- package/dist/controllers/phrase.controller.js.map +1 -0
- package/dist/controllers/profile.controller.d.ts +9 -0
- package/dist/controllers/profile.controller.d.ts.map +1 -0
- package/dist/controllers/profile.controller.js +44 -0
- package/dist/controllers/profile.controller.js.map +1 -0
- package/dist/controllers/turing.controller.d.ts +18 -0
- package/dist/controllers/turing.controller.d.ts.map +1 -0
- package/dist/controllers/turing.controller.js +103 -0
- package/dist/controllers/turing.controller.js.map +1 -0
- package/dist/entities/chat-character.entity.d.ts +34 -0
- package/dist/entities/chat-character.entity.d.ts.map +1 -0
- package/dist/entities/chat-character.entity.js +101 -0
- package/dist/entities/chat-character.entity.js.map +1 -0
- package/dist/entities/chat-message.entity.d.ts +26 -0
- package/dist/entities/chat-message.entity.d.ts.map +1 -0
- package/dist/entities/chat-message.entity.js +84 -0
- package/dist/entities/chat-message.entity.js.map +1 -0
- package/dist/entities/chat-session.entity.d.ts +31 -0
- package/dist/entities/chat-session.entity.d.ts.map +1 -0
- package/dist/entities/chat-session.entity.js +95 -0
- package/dist/entities/chat-session.entity.js.map +1 -0
- package/dist/entities/chat-thread.entity.d.ts +30 -0
- package/dist/entities/chat-thread.entity.d.ts.map +1 -0
- package/dist/entities/chat-thread.entity.js +105 -0
- package/dist/entities/chat-thread.entity.js.map +1 -0
- package/dist/entities/crisis-event.entity.d.ts +30 -0
- package/dist/entities/crisis-event.entity.d.ts.map +1 -0
- package/dist/entities/crisis-event.entity.js +90 -0
- package/dist/entities/crisis-event.entity.js.map +1 -0
- package/dist/entities/index.d.ts +38 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +62 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/leaderboard-entry.entity.d.ts +22 -0
- package/dist/entities/leaderboard-entry.entity.d.ts.map +1 -0
- package/dist/entities/leaderboard-entry.entity.js +75 -0
- package/dist/entities/leaderboard-entry.entity.js.map +1 -0
- package/dist/entities/live-message.entity.d.ts +34 -0
- package/dist/entities/live-message.entity.d.ts.map +1 -0
- package/dist/entities/live-message.entity.js +99 -0
- package/dist/entities/live-message.entity.js.map +1 -0
- package/dist/entities/live-thread.entity.d.ts +50 -0
- package/dist/entities/live-thread.entity.d.ts.map +1 -0
- package/dist/entities/live-thread.entity.js +144 -0
- package/dist/entities/live-thread.entity.js.map +1 -0
- package/dist/entities/match-room.entity.d.ts +44 -0
- package/dist/entities/match-room.entity.d.ts.map +1 -0
- package/dist/entities/match-room.entity.js +131 -0
- package/dist/entities/match-room.entity.js.map +1 -0
- package/dist/entities/phrase-template.entity.d.ts +28 -0
- package/dist/entities/phrase-template.entity.d.ts.map +1 -0
- package/dist/entities/phrase-template.entity.js +84 -0
- package/dist/entities/phrase-template.entity.js.map +1 -0
- package/dist/entities/player-profile.entity.d.ts +36 -0
- package/dist/entities/player-profile.entity.d.ts.map +1 -0
- package/dist/entities/player-profile.entity.js +112 -0
- package/dist/entities/player-profile.entity.js.map +1 -0
- package/dist/entities/player-queue.entity.d.ts +24 -0
- package/dist/entities/player-queue.entity.d.ts.map +1 -0
- package/dist/entities/player-queue.entity.js +76 -0
- package/dist/entities/player-queue.entity.js.map +1 -0
- package/dist/entities/turing-guess.entity.d.ts +29 -0
- package/dist/entities/turing-guess.entity.d.ts.map +1 -0
- package/dist/entities/turing-guess.entity.js +94 -0
- package/dist/entities/turing-guess.entity.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/sea-king.schema.d.ts +109 -0
- package/dist/schemas/sea-king.schema.d.ts.map +1 -0
- package/dist/schemas/sea-king.schema.js +103 -0
- package/dist/schemas/sea-king.schema.js.map +1 -0
- package/dist/sea-king.module.d.ts +19 -0
- package/dist/sea-king.module.d.ts.map +1 -0
- package/dist/sea-king.module.js +114 -0
- package/dist/sea-king.module.js.map +1 -0
- package/dist/services/character.service.d.ts +30 -0
- package/dist/services/character.service.d.ts.map +1 -0
- package/dist/services/character.service.js +75 -0
- package/dist/services/character.service.js.map +1 -0
- package/dist/services/chat.service.d.ts +49 -0
- package/dist/services/chat.service.d.ts.map +1 -0
- package/dist/services/chat.service.js +332 -0
- package/dist/services/chat.service.js.map +1 -0
- package/dist/services/crisis.service.d.ts +17 -0
- package/dist/services/crisis.service.d.ts.map +1 -0
- package/dist/services/crisis.service.js +177 -0
- package/dist/services/crisis.service.js.map +1 -0
- package/dist/services/index.d.ts +13 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +28 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/leaderboard.service.d.ts +29 -0
- package/dist/services/leaderboard.service.d.ts.map +1 -0
- package/dist/services/leaderboard.service.js +64 -0
- package/dist/services/leaderboard.service.js.map +1 -0
- package/dist/services/live-chat.service.d.ts +71 -0
- package/dist/services/live-chat.service.d.ts.map +1 -0
- package/dist/services/live-chat.service.js +273 -0
- package/dist/services/live-chat.service.js.map +1 -0
- package/dist/services/matchmaking.service.d.ts +60 -0
- package/dist/services/matchmaking.service.d.ts.map +1 -0
- package/dist/services/matchmaking.service.js +208 -0
- package/dist/services/matchmaking.service.js.map +1 -0
- package/dist/services/phrase.service.d.ts +27 -0
- package/dist/services/phrase.service.d.ts.map +1 -0
- package/dist/services/phrase.service.js +70 -0
- package/dist/services/phrase.service.js.map +1 -0
- package/dist/services/profile.service.d.ts +41 -0
- package/dist/services/profile.service.d.ts.map +1 -0
- package/dist/services/profile.service.js +107 -0
- package/dist/services/profile.service.js.map +1 -0
- package/dist/services/seed.service.d.ts +19 -0
- package/dist/services/seed.service.d.ts.map +1 -0
- package/dist/services/seed.service.js +550 -0
- package/dist/services/seed.service.js.map +1 -0
- package/dist/services/turing.service.d.ts +74 -0
- package/dist/services/turing.service.d.ts.map +1 -0
- package/dist/services/turing.service.js +175 -0
- package/dist/services/turing.service.js.map +1 -0
- package/dist/services/ws-hub.service.d.ts +51 -0
- package/dist/services/ws-hub.service.d.ts.map +1 -0
- package/dist/services/ws-hub.service.js +174 -0
- package/dist/services/ws-hub.service.js.map +1 -0
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +69 -0
- package/web/index.ts +30 -0
- package/web/manifest.ts +40 -0
- package/web/messages/en-US.json +113 -0
- package/web/messages/zh-CN.json +113 -0
- package/web/pages/AnalysisPage.tsx +198 -0
- package/web/pages/ChatPage.tsx +482 -0
- package/web/pages/DashboardPage.tsx +281 -0
- package/web/pages/LeaderboardPage.tsx +208 -0
- package/web/pages/PhrasesPage.tsx +221 -0
- package/web/services/sea-king-service.ts +151 -0
- package/web/types/sea-king.ts +249 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const CHARACTER_PERSONALITIES: readonly ["gentle", "tsundere", "intellectual", "rational", "playful", "mysterious"];
|
|
3
|
+
export declare const CHARACTER_GENDERS: readonly ["male", "female", "neutral"];
|
|
4
|
+
export declare const CRISIS_TYPES: readonly ["double_date", "seen_together", "same_gift", "wrong_name", "social_media_leak", "mutual_friend", "jealousy_storm", "surprise_encounter"];
|
|
5
|
+
export declare const PLAYER_RANKS: readonly ["bronze", "silver", "gold", "platinum", "diamond", "master", "king"];
|
|
6
|
+
export declare const RANK_LABELS: Record<string, {
|
|
7
|
+
zh: string;
|
|
8
|
+
en: string;
|
|
9
|
+
emoji: string;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const PHRASE_SCENES: readonly ["first_meet", "daily_care", "resolve_awkward", "elegant_reject", "flirt", "cool_down", "crisis_response", "morning_night"];
|
|
12
|
+
export declare const SKILL_DIMENSIONS: readonly ["humor", "empathy", "topic_lead", "time_manage", "crisis_handle"];
|
|
13
|
+
export declare const StartSessionSchema: z.ZodObject<{
|
|
14
|
+
characterCount: z.ZodDefault<z.ZodNumber>;
|
|
15
|
+
difficulty: z.ZodDefault<z.ZodEnum<["easy", "normal", "hard", "nightmare"]>>;
|
|
16
|
+
preferredPersonalities: z.ZodOptional<z.ZodArray<z.ZodEnum<["gentle", "tsundere", "intellectual", "rational", "playful", "mysterious"]>, "many">>;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
characterCount: number;
|
|
19
|
+
difficulty: "easy" | "normal" | "hard" | "nightmare";
|
|
20
|
+
preferredPersonalities?: ("gentle" | "tsundere" | "intellectual" | "rational" | "playful" | "mysterious")[] | undefined;
|
|
21
|
+
}, {
|
|
22
|
+
characterCount?: number | undefined;
|
|
23
|
+
difficulty?: "easy" | "normal" | "hard" | "nightmare" | undefined;
|
|
24
|
+
preferredPersonalities?: ("gentle" | "tsundere" | "intellectual" | "rational" | "playful" | "mysterious")[] | undefined;
|
|
25
|
+
}>;
|
|
26
|
+
export type StartSessionDto = z.infer<typeof StartSessionSchema>;
|
|
27
|
+
export declare const SendMessageSchema: z.ZodObject<{
|
|
28
|
+
threadId: z.ZodString;
|
|
29
|
+
content: z.ZodString;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
threadId: string;
|
|
32
|
+
content: string;
|
|
33
|
+
}, {
|
|
34
|
+
threadId: string;
|
|
35
|
+
content: string;
|
|
36
|
+
}>;
|
|
37
|
+
export type SendMessageDto = z.infer<typeof SendMessageSchema>;
|
|
38
|
+
export declare const ResolveCrisisSchema: z.ZodObject<{
|
|
39
|
+
crisisId: z.ZodString;
|
|
40
|
+
response: z.ZodString;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
crisisId: string;
|
|
43
|
+
response: string;
|
|
44
|
+
}, {
|
|
45
|
+
crisisId: string;
|
|
46
|
+
response: string;
|
|
47
|
+
}>;
|
|
48
|
+
export type ResolveCrisisDto = z.infer<typeof ResolveCrisisSchema>;
|
|
49
|
+
export declare const PhraseQuerySchema: z.ZodObject<{
|
|
50
|
+
page: z.ZodDefault<z.ZodNumber>;
|
|
51
|
+
pageSize: z.ZodDefault<z.ZodNumber>;
|
|
52
|
+
scene: z.ZodOptional<z.ZodEnum<["first_meet", "daily_care", "resolve_awkward", "elegant_reject", "flirt", "cool_down", "crisis_response", "morning_night"]>>;
|
|
53
|
+
difficulty: z.ZodOptional<z.ZodEnum<["beginner", "intermediate", "advanced", "expert"]>>;
|
|
54
|
+
}, "strip", z.ZodTypeAny, {
|
|
55
|
+
page: number;
|
|
56
|
+
pageSize: number;
|
|
57
|
+
scene?: "first_meet" | "daily_care" | "resolve_awkward" | "elegant_reject" | "flirt" | "cool_down" | "crisis_response" | "morning_night" | undefined;
|
|
58
|
+
difficulty?: "beginner" | "intermediate" | "advanced" | "expert" | undefined;
|
|
59
|
+
}, {
|
|
60
|
+
scene?: "first_meet" | "daily_care" | "resolve_awkward" | "elegant_reject" | "flirt" | "cool_down" | "crisis_response" | "morning_night" | undefined;
|
|
61
|
+
difficulty?: "beginner" | "intermediate" | "advanced" | "expert" | undefined;
|
|
62
|
+
page?: number | undefined;
|
|
63
|
+
pageSize?: number | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
export type PhraseQueryDto = z.infer<typeof PhraseQuerySchema>;
|
|
66
|
+
export declare const CreatePhraseSchema: z.ZodObject<{
|
|
67
|
+
scene: z.ZodEnum<["first_meet", "daily_care", "resolve_awkward", "elegant_reject", "flirt", "cool_down", "crisis_response", "morning_night"]>;
|
|
68
|
+
trigger: z.ZodString;
|
|
69
|
+
badReply: z.ZodString;
|
|
70
|
+
goodReply: z.ZodString;
|
|
71
|
+
explanation: z.ZodString;
|
|
72
|
+
favorBonus: z.ZodDefault<z.ZodNumber>;
|
|
73
|
+
difficulty: z.ZodDefault<z.ZodEnum<["beginner", "intermediate", "advanced", "expert"]>>;
|
|
74
|
+
tags: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
75
|
+
}, "strip", z.ZodTypeAny, {
|
|
76
|
+
scene: "first_meet" | "daily_care" | "resolve_awkward" | "elegant_reject" | "flirt" | "cool_down" | "crisis_response" | "morning_night";
|
|
77
|
+
trigger: string;
|
|
78
|
+
badReply: string;
|
|
79
|
+
goodReply: string;
|
|
80
|
+
explanation: string;
|
|
81
|
+
favorBonus: number;
|
|
82
|
+
difficulty: "beginner" | "intermediate" | "advanced" | "expert";
|
|
83
|
+
tags?: string | null | undefined;
|
|
84
|
+
}, {
|
|
85
|
+
scene: "first_meet" | "daily_care" | "resolve_awkward" | "elegant_reject" | "flirt" | "cool_down" | "crisis_response" | "morning_night";
|
|
86
|
+
trigger: string;
|
|
87
|
+
badReply: string;
|
|
88
|
+
goodReply: string;
|
|
89
|
+
explanation: string;
|
|
90
|
+
favorBonus?: number | undefined;
|
|
91
|
+
difficulty?: "beginner" | "intermediate" | "advanced" | "expert" | undefined;
|
|
92
|
+
tags?: string | null | undefined;
|
|
93
|
+
}>;
|
|
94
|
+
export type CreatePhraseDto = z.infer<typeof CreatePhraseSchema>;
|
|
95
|
+
export declare const LeaderboardQuerySchema: z.ZodObject<{
|
|
96
|
+
page: z.ZodDefault<z.ZodNumber>;
|
|
97
|
+
pageSize: z.ZodDefault<z.ZodNumber>;
|
|
98
|
+
season: z.ZodDefault<z.ZodString>;
|
|
99
|
+
}, "strip", z.ZodTypeAny, {
|
|
100
|
+
season: string;
|
|
101
|
+
page: number;
|
|
102
|
+
pageSize: number;
|
|
103
|
+
}, {
|
|
104
|
+
season?: string | undefined;
|
|
105
|
+
page?: number | undefined;
|
|
106
|
+
pageSize?: number | undefined;
|
|
107
|
+
}>;
|
|
108
|
+
export type LeaderboardQueryDto = z.infer<typeof LeaderboardQuerySchema>;
|
|
109
|
+
//# sourceMappingURL=sea-king.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sea-king.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/sea-king.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,uBAAuB,sFAO1B,CAAC;AAEX,eAAO,MAAM,iBAAiB,wCAAyC,CAAC;AAIxE,eAAO,MAAM,YAAY,oJASf,CAAC;AAIX,eAAO,MAAM,YAAY,gFAQf,CAAC;AAEX,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQjF,CAAC;AAIF,eAAO,MAAM,aAAa,sIAShB,CAAC;AAIX,eAAO,MAAM,gBAAgB,6EAMnB,CAAC;AAIX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAIjE,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI/D,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAInE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAK5B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE/D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAIjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LeaderboardQuerySchema = exports.CreatePhraseSchema = exports.PhraseQuerySchema = exports.ResolveCrisisSchema = exports.SendMessageSchema = exports.StartSessionSchema = exports.SKILL_DIMENSIONS = exports.PHRASE_SCENES = exports.RANK_LABELS = exports.PLAYER_RANKS = exports.CRISIS_TYPES = exports.CHARACTER_GENDERS = exports.CHARACTER_PERSONALITIES = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
// ─── Character Personalities ─────────────────────────────────────────────────
|
|
6
|
+
exports.CHARACTER_PERSONALITIES = [
|
|
7
|
+
'gentle',
|
|
8
|
+
'tsundere',
|
|
9
|
+
'intellectual',
|
|
10
|
+
'rational',
|
|
11
|
+
'playful',
|
|
12
|
+
'mysterious',
|
|
13
|
+
];
|
|
14
|
+
exports.CHARACTER_GENDERS = ['male', 'female', 'neutral'];
|
|
15
|
+
// ─── Crisis Types ────────────────────────────────────────────────────────────
|
|
16
|
+
exports.CRISIS_TYPES = [
|
|
17
|
+
'double_date',
|
|
18
|
+
'seen_together',
|
|
19
|
+
'same_gift',
|
|
20
|
+
'wrong_name',
|
|
21
|
+
'social_media_leak',
|
|
22
|
+
'mutual_friend',
|
|
23
|
+
'jealousy_storm',
|
|
24
|
+
'surprise_encounter',
|
|
25
|
+
];
|
|
26
|
+
// ─── Player Ranks ────────────────────────────────────────────────────────────
|
|
27
|
+
exports.PLAYER_RANKS = [
|
|
28
|
+
'bronze',
|
|
29
|
+
'silver',
|
|
30
|
+
'gold',
|
|
31
|
+
'platinum',
|
|
32
|
+
'diamond',
|
|
33
|
+
'master',
|
|
34
|
+
'king',
|
|
35
|
+
];
|
|
36
|
+
exports.RANK_LABELS = {
|
|
37
|
+
bronze: { zh: '青铜直男/直女', en: 'Bronze Newbie', emoji: '🥉' },
|
|
38
|
+
silver: { zh: '白银暖男/暖女', en: 'Silver Sweetheart', emoji: '🥈' },
|
|
39
|
+
gold: { zh: '黄金交际花', en: 'Gold Socialite', emoji: '🥇' },
|
|
40
|
+
platinum: { zh: '铂金万人迷', en: 'Platinum Charmer', emoji: '💎' },
|
|
41
|
+
diamond: { zh: '钻石社交达人', en: 'Diamond Social Star', emoji: '💠' },
|
|
42
|
+
master: { zh: '大师级海王/海后', en: 'Master Player', emoji: '👑' },
|
|
43
|
+
king: { zh: '王者海王/海后', en: 'King/Queen of the Sea', emoji: '🔱' },
|
|
44
|
+
};
|
|
45
|
+
// ─── Phrase Scenes ───────────────────────────────────────────────────────────
|
|
46
|
+
exports.PHRASE_SCENES = [
|
|
47
|
+
'first_meet',
|
|
48
|
+
'daily_care',
|
|
49
|
+
'resolve_awkward',
|
|
50
|
+
'elegant_reject',
|
|
51
|
+
'flirt',
|
|
52
|
+
'cool_down',
|
|
53
|
+
'crisis_response',
|
|
54
|
+
'morning_night',
|
|
55
|
+
];
|
|
56
|
+
// ─── Skill Dimensions ───────────────────────────────────────────────────────
|
|
57
|
+
exports.SKILL_DIMENSIONS = [
|
|
58
|
+
'humor',
|
|
59
|
+
'empathy',
|
|
60
|
+
'topic_lead',
|
|
61
|
+
'time_manage',
|
|
62
|
+
'crisis_handle',
|
|
63
|
+
];
|
|
64
|
+
// ─── Session Schemas ─────────────────────────────────────────────────────────
|
|
65
|
+
exports.StartSessionSchema = zod_1.z.object({
|
|
66
|
+
characterCount: zod_1.z.number().int().min(2).max(6).default(3),
|
|
67
|
+
difficulty: zod_1.z.enum(['easy', 'normal', 'hard', 'nightmare']).default('normal'),
|
|
68
|
+
preferredPersonalities: zod_1.z.array(zod_1.z.enum(exports.CHARACTER_PERSONALITIES)).optional(),
|
|
69
|
+
});
|
|
70
|
+
// ─── Chat Schemas ────────────────────────────────────────────────────────────
|
|
71
|
+
exports.SendMessageSchema = zod_1.z.object({
|
|
72
|
+
threadId: zod_1.z.string().uuid(),
|
|
73
|
+
content: zod_1.z.string().min(1).max(2000),
|
|
74
|
+
});
|
|
75
|
+
// ─── Crisis Schemas ──────────────────────────────────────────────────────────
|
|
76
|
+
exports.ResolveCrisisSchema = zod_1.z.object({
|
|
77
|
+
crisisId: zod_1.z.string().uuid(),
|
|
78
|
+
response: zod_1.z.string().min(1).max(2000),
|
|
79
|
+
});
|
|
80
|
+
// ─── Phrase Schemas ──────────────────────────────────────────────────────────
|
|
81
|
+
exports.PhraseQuerySchema = zod_1.z.object({
|
|
82
|
+
page: zod_1.z.coerce.number().int().min(1).default(1),
|
|
83
|
+
pageSize: zod_1.z.coerce.number().int().min(1).max(100).default(20),
|
|
84
|
+
scene: zod_1.z.enum(exports.PHRASE_SCENES).optional(),
|
|
85
|
+
difficulty: zod_1.z.enum(['beginner', 'intermediate', 'advanced', 'expert']).optional(),
|
|
86
|
+
});
|
|
87
|
+
exports.CreatePhraseSchema = zod_1.z.object({
|
|
88
|
+
scene: zod_1.z.enum(exports.PHRASE_SCENES),
|
|
89
|
+
trigger: zod_1.z.string().min(1),
|
|
90
|
+
badReply: zod_1.z.string().min(1),
|
|
91
|
+
goodReply: zod_1.z.string().min(1),
|
|
92
|
+
explanation: zod_1.z.string().min(1),
|
|
93
|
+
favorBonus: zod_1.z.number().int().min(0).max(20).default(5),
|
|
94
|
+
difficulty: zod_1.z.enum(['beginner', 'intermediate', 'advanced', 'expert']).default('beginner'),
|
|
95
|
+
tags: zod_1.z.string().max(500).nullable().optional(),
|
|
96
|
+
});
|
|
97
|
+
// ─── Leaderboard Schemas ─────────────────────────────────────────────────────
|
|
98
|
+
exports.LeaderboardQuerySchema = zod_1.z.object({
|
|
99
|
+
page: zod_1.z.coerce.number().int().min(1).default(1),
|
|
100
|
+
pageSize: zod_1.z.coerce.number().int().min(1).max(50).default(20),
|
|
101
|
+
season: zod_1.z.string().default('S1'),
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=sea-king.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sea-king.schema.js","sourceRoot":"","sources":["../../src/schemas/sea-king.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Express } from 'express';
|
|
2
|
+
import type { IModule, IModuleContext } from '@octo-cyber/core';
|
|
3
|
+
export declare class SeaKingModule implements IModule {
|
|
4
|
+
name: string;
|
|
5
|
+
entities: any[];
|
|
6
|
+
private characterService;
|
|
7
|
+
private chatService;
|
|
8
|
+
private crisisService;
|
|
9
|
+
private profileService;
|
|
10
|
+
private phraseService;
|
|
11
|
+
private leaderboardService;
|
|
12
|
+
private matchmakingService;
|
|
13
|
+
private liveChatService;
|
|
14
|
+
private turingService;
|
|
15
|
+
private wsHub;
|
|
16
|
+
initialize(context: IModuleContext): Promise<void>;
|
|
17
|
+
registerRoutes(app: Express, _context: IModuleContext): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sea-king.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sea-king.module.d.ts","sourceRoot":"","sources":["../src/sea-king.module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAuChE,qBAAa,aAAc,YAAW,OAAO;IAC3C,IAAI,SAAc;IAClB,QAAQ,EAA6B,GAAG,EAAE,CAAC;IAG3C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,kBAAkB,CAA4B;IAGtD,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,KAAK,CAAsB;IAE7B,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDxD,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;CA0C7D"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SeaKingModule = void 0;
|
|
4
|
+
const core_1 = require("@octo-cyber/core");
|
|
5
|
+
const index_js_1 = require("./entities/index.js");
|
|
6
|
+
const chat_character_entity_js_1 = require("./entities/chat-character.entity.js");
|
|
7
|
+
const chat_session_entity_js_1 = require("./entities/chat-session.entity.js");
|
|
8
|
+
const chat_thread_entity_js_1 = require("./entities/chat-thread.entity.js");
|
|
9
|
+
const chat_message_entity_js_1 = require("./entities/chat-message.entity.js");
|
|
10
|
+
const crisis_event_entity_js_1 = require("./entities/crisis-event.entity.js");
|
|
11
|
+
const player_profile_entity_js_1 = require("./entities/player-profile.entity.js");
|
|
12
|
+
const phrase_template_entity_js_1 = require("./entities/phrase-template.entity.js");
|
|
13
|
+
const leaderboard_entry_entity_js_1 = require("./entities/leaderboard-entry.entity.js");
|
|
14
|
+
const match_room_entity_js_1 = require("./entities/match-room.entity.js");
|
|
15
|
+
const live_thread_entity_js_1 = require("./entities/live-thread.entity.js");
|
|
16
|
+
const live_message_entity_js_1 = require("./entities/live-message.entity.js");
|
|
17
|
+
const player_queue_entity_js_1 = require("./entities/player-queue.entity.js");
|
|
18
|
+
const turing_guess_entity_js_1 = require("./entities/turing-guess.entity.js");
|
|
19
|
+
const character_service_js_1 = require("./services/character.service.js");
|
|
20
|
+
const chat_service_js_1 = require("./services/chat.service.js");
|
|
21
|
+
const crisis_service_js_1 = require("./services/crisis.service.js");
|
|
22
|
+
const profile_service_js_1 = require("./services/profile.service.js");
|
|
23
|
+
const phrase_service_js_1 = require("./services/phrase.service.js");
|
|
24
|
+
const leaderboard_service_js_1 = require("./services/leaderboard.service.js");
|
|
25
|
+
const seed_service_js_1 = require("./services/seed.service.js");
|
|
26
|
+
const matchmaking_service_js_1 = require("./services/matchmaking.service.js");
|
|
27
|
+
const live_chat_service_js_1 = require("./services/live-chat.service.js");
|
|
28
|
+
const turing_service_js_1 = require("./services/turing.service.js");
|
|
29
|
+
const ws_hub_service_js_1 = require("./services/ws-hub.service.js");
|
|
30
|
+
const character_controller_js_1 = require("./controllers/character.controller.js");
|
|
31
|
+
const chat_controller_js_1 = require("./controllers/chat.controller.js");
|
|
32
|
+
const crisis_controller_js_1 = require("./controllers/crisis.controller.js");
|
|
33
|
+
const profile_controller_js_1 = require("./controllers/profile.controller.js");
|
|
34
|
+
const phrase_controller_js_1 = require("./controllers/phrase.controller.js");
|
|
35
|
+
const leaderboard_controller_js_1 = require("./controllers/leaderboard.controller.js");
|
|
36
|
+
const matchmaking_controller_js_1 = require("./controllers/matchmaking.controller.js");
|
|
37
|
+
const live_chat_controller_js_1 = require("./controllers/live-chat.controller.js");
|
|
38
|
+
const turing_controller_js_1 = require("./controllers/turing.controller.js");
|
|
39
|
+
class SeaKingModule {
|
|
40
|
+
name = 'sea-king';
|
|
41
|
+
entities = [...index_js_1.SEA_KING_ENTITIES];
|
|
42
|
+
// Solo mode services
|
|
43
|
+
characterService = new character_service_js_1.CharacterService();
|
|
44
|
+
chatService = new chat_service_js_1.ChatService();
|
|
45
|
+
crisisService = new crisis_service_js_1.CrisisService();
|
|
46
|
+
profileService = new profile_service_js_1.ProfileService();
|
|
47
|
+
phraseService = new phrase_service_js_1.PhraseService();
|
|
48
|
+
leaderboardService = new leaderboard_service_js_1.LeaderboardService();
|
|
49
|
+
// Live mode services
|
|
50
|
+
matchmakingService = new matchmaking_service_js_1.MatchmakingService();
|
|
51
|
+
liveChatService = new live_chat_service_js_1.LiveChatService();
|
|
52
|
+
turingService = new turing_service_js_1.TuringService();
|
|
53
|
+
wsHub = new ws_hub_service_js_1.WSHubService();
|
|
54
|
+
async initialize(context) {
|
|
55
|
+
const ds = context.dataSource;
|
|
56
|
+
// ─── Solo Mode ──────────────────────────────────────────────────────────
|
|
57
|
+
this.characterService.initialize(ds.getRepository(chat_character_entity_js_1.ChatCharacter));
|
|
58
|
+
this.chatService.initialize(ds.getRepository(chat_session_entity_js_1.ChatSession), ds.getRepository(chat_thread_entity_js_1.ChatThread), ds.getRepository(chat_message_entity_js_1.ChatMessage), this.characterService);
|
|
59
|
+
this.crisisService.initialize(ds.getRepository(crisis_event_entity_js_1.CrisisEvent), ds.getRepository(chat_thread_entity_js_1.ChatThread));
|
|
60
|
+
this.profileService.initialize(ds.getRepository(player_profile_entity_js_1.PlayerProfile));
|
|
61
|
+
this.phraseService.initialize(ds.getRepository(phrase_template_entity_js_1.PhraseTemplate));
|
|
62
|
+
this.leaderboardService.initialize(ds.getRepository(leaderboard_entry_entity_js_1.LeaderboardEntry));
|
|
63
|
+
// ─── Live Mode ──────────────────────────────────────────────────────────
|
|
64
|
+
this.matchmakingService.initialize(ds.getRepository(match_room_entity_js_1.MatchRoom), ds.getRepository(live_thread_entity_js_1.LiveThread), ds.getRepository(player_queue_entity_js_1.PlayerQueue), this.characterService);
|
|
65
|
+
this.liveChatService.initialize(ds.getRepository(live_thread_entity_js_1.LiveThread), ds.getRepository(live_message_entity_js_1.LiveMessage), ds.getRepository(match_room_entity_js_1.MatchRoom), this.chatService);
|
|
66
|
+
this.turingService.initialize(ds.getRepository(turing_guess_entity_js_1.TuringGuess), ds.getRepository(live_thread_entity_js_1.LiveThread), ds.getRepository(match_room_entity_js_1.MatchRoom));
|
|
67
|
+
// ─── Seed default data ──────────────────────────────────────────────────
|
|
68
|
+
const seedService = new seed_service_js_1.SeedService(ds.getRepository(chat_character_entity_js_1.ChatCharacter), this.phraseService);
|
|
69
|
+
try {
|
|
70
|
+
const result = await seedService.seedAll();
|
|
71
|
+
if (result.characters > 0 || result.phrases > 0) {
|
|
72
|
+
console.log(`[sea-king] 🌊 Seeded ${result.characters} characters, ${result.phrases} phrase templates`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.warn('[sea-king] Seed data warning:', err);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
registerRoutes(app, _context) {
|
|
80
|
+
// ─── Solo Mode Controllers ───────────────────────────────────────────────
|
|
81
|
+
const characterCtrl = new character_controller_js_1.CharacterController();
|
|
82
|
+
characterCtrl.initialize(this.characterService);
|
|
83
|
+
const chatCtrl = new chat_controller_js_1.ChatController();
|
|
84
|
+
chatCtrl.initialize(this.chatService);
|
|
85
|
+
const crisisCtrl = new crisis_controller_js_1.CrisisController();
|
|
86
|
+
crisisCtrl.initialize(this.crisisService);
|
|
87
|
+
const profileCtrl = new profile_controller_js_1.ProfileController();
|
|
88
|
+
profileCtrl.initialize(this.profileService);
|
|
89
|
+
const phraseCtrl = new phrase_controller_js_1.PhraseController();
|
|
90
|
+
phraseCtrl.initialize(this.phraseService);
|
|
91
|
+
const leaderboardCtrl = new leaderboard_controller_js_1.LeaderboardController();
|
|
92
|
+
leaderboardCtrl.initialize(this.leaderboardService);
|
|
93
|
+
// ─── Live Mode Controllers ───────────────────────────────────────────────
|
|
94
|
+
const matchmakingCtrl = new matchmaking_controller_js_1.MatchmakingController();
|
|
95
|
+
matchmakingCtrl.initializeController(this.matchmakingService);
|
|
96
|
+
const liveChatCtrl = new live_chat_controller_js_1.LiveChatController();
|
|
97
|
+
liveChatCtrl.initializeController(this.liveChatService);
|
|
98
|
+
const turingCtrl = new turing_controller_js_1.TuringController();
|
|
99
|
+
turingCtrl.initializeController(this.turingService);
|
|
100
|
+
(0, core_1.registerControllers)(app, [
|
|
101
|
+
characterCtrl,
|
|
102
|
+
chatCtrl,
|
|
103
|
+
crisisCtrl,
|
|
104
|
+
profileCtrl,
|
|
105
|
+
phraseCtrl,
|
|
106
|
+
leaderboardCtrl,
|
|
107
|
+
matchmakingCtrl,
|
|
108
|
+
liveChatCtrl,
|
|
109
|
+
turingCtrl,
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.SeaKingModule = SeaKingModule;
|
|
114
|
+
//# sourceMappingURL=sea-king.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sea-king.module.js","sourceRoot":"","sources":["../src/sea-king.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { ChatCharacter } from '../entities/chat-character.entity.js';
|
|
3
|
+
import type { CharacterPersonality } from '../entities/chat-character.entity.js';
|
|
4
|
+
/**
|
|
5
|
+
* 角色管理服务
|
|
6
|
+
* 🎭 管理所有可聊天的AI角色
|
|
7
|
+
*/
|
|
8
|
+
export declare class CharacterService {
|
|
9
|
+
private characterRepo;
|
|
10
|
+
initialize(characterRepo: Repository<ChatCharacter>): void;
|
|
11
|
+
/** 获取所有启用的角色 */
|
|
12
|
+
listEnabled(): Promise<ChatCharacter[]>;
|
|
13
|
+
/** 根据ID获取角色 */
|
|
14
|
+
getById(id: string): Promise<ChatCharacter | null>;
|
|
15
|
+
/**
|
|
16
|
+
* 随机挑选指定数量的角色
|
|
17
|
+
* 优先保证性格多样性
|
|
18
|
+
*/
|
|
19
|
+
pickRandom(options: {
|
|
20
|
+
count: number;
|
|
21
|
+
preferredPersonalities?: CharacterPersonality[];
|
|
22
|
+
excludeIds?: string[];
|
|
23
|
+
}): Promise<ChatCharacter[]>;
|
|
24
|
+
/** 获取角色统计 */
|
|
25
|
+
getStats(): Promise<{
|
|
26
|
+
total: number;
|
|
27
|
+
byPersonality: Record<string, number>;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=character.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character.service.d.ts","sourceRoot":"","sources":["../../src/services/character.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAA6B;IAElD,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI;IAI1D,gBAAgB;IACV,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAO7C,eAAe;IACT,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAIxD;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,sBAAsB,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAChD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAsC5B,aAAa;IACP,QAAQ,IAAI,OAAO,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACvC,CAAC;CAkBH"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CharacterService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 角色管理服务
|
|
6
|
+
* 🎭 管理所有可聊天的AI角色
|
|
7
|
+
*/
|
|
8
|
+
class CharacterService {
|
|
9
|
+
characterRepo;
|
|
10
|
+
initialize(characterRepo) {
|
|
11
|
+
this.characterRepo = characterRepo;
|
|
12
|
+
}
|
|
13
|
+
/** 获取所有启用的角色 */
|
|
14
|
+
async listEnabled() {
|
|
15
|
+
return this.characterRepo.find({
|
|
16
|
+
where: { enabled: true },
|
|
17
|
+
order: { createdAt: 'ASC' },
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/** 根据ID获取角色 */
|
|
21
|
+
async getById(id) {
|
|
22
|
+
return this.characterRepo.findOne({ where: { id } });
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 随机挑选指定数量的角色
|
|
26
|
+
* 优先保证性格多样性
|
|
27
|
+
*/
|
|
28
|
+
async pickRandom(options) {
|
|
29
|
+
const qb = this.characterRepo
|
|
30
|
+
.createQueryBuilder('c')
|
|
31
|
+
.where('c.enabled = :enabled', { enabled: true });
|
|
32
|
+
if (options.excludeIds?.length) {
|
|
33
|
+
qb.andWhere('c.id NOT IN (:...excludeIds)', { excludeIds: options.excludeIds });
|
|
34
|
+
}
|
|
35
|
+
if (options.preferredPersonalities?.length) {
|
|
36
|
+
qb.andWhere('c.personality IN (:...personalities)', {
|
|
37
|
+
personalities: options.preferredPersonalities,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
qb.orderBy('RANDOM()').take(options.count);
|
|
41
|
+
const result = await qb.getMany();
|
|
42
|
+
// 如果按偏好找不够,放宽条件
|
|
43
|
+
if (result.length < options.count) {
|
|
44
|
+
const moreQb = this.characterRepo
|
|
45
|
+
.createQueryBuilder('c')
|
|
46
|
+
.where('c.enabled = :enabled', { enabled: true });
|
|
47
|
+
const existingIds = result.map((r) => r.id);
|
|
48
|
+
if (existingIds.length) {
|
|
49
|
+
moreQb.andWhere('c.id NOT IN (:...ids)', { ids: existingIds });
|
|
50
|
+
}
|
|
51
|
+
moreQb.orderBy('RANDOM()').take(options.count - result.length);
|
|
52
|
+
const more = await moreQb.getMany();
|
|
53
|
+
result.push(...more);
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
/** 获取角色统计 */
|
|
58
|
+
async getStats() {
|
|
59
|
+
const total = await this.characterRepo.count({ where: { enabled: true } });
|
|
60
|
+
const byPersonalityRaw = await this.characterRepo
|
|
61
|
+
.createQueryBuilder('c')
|
|
62
|
+
.select('c.personality', 'personality')
|
|
63
|
+
.addSelect('COUNT(*)', 'count')
|
|
64
|
+
.where('c.enabled = :enabled', { enabled: true })
|
|
65
|
+
.groupBy('c.personality')
|
|
66
|
+
.getRawMany();
|
|
67
|
+
const byPersonality = {};
|
|
68
|
+
for (const row of byPersonalityRaw) {
|
|
69
|
+
byPersonality[row.personality] = Number(row.count);
|
|
70
|
+
}
|
|
71
|
+
return { total, byPersonality };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.CharacterService = CharacterService;
|
|
75
|
+
//# sourceMappingURL=character.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character.service.js","sourceRoot":"","sources":["../../src/services/character.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { ChatSession } from '../entities/chat-session.entity.js';
|
|
3
|
+
import { ChatThread } from '../entities/chat-thread.entity.js';
|
|
4
|
+
import { ChatMessage } from '../entities/chat-message.entity.js';
|
|
5
|
+
import { CharacterService } from './character.service.js';
|
|
6
|
+
import type { StartSessionDto, SendMessageDto } from '../schemas/sea-king.schema.js';
|
|
7
|
+
/**
|
|
8
|
+
* 多线聊天核心服务
|
|
9
|
+
* 🌊 海王的核心能力就是同时聊好几个
|
|
10
|
+
*/
|
|
11
|
+
export declare class ChatService {
|
|
12
|
+
private sessionRepo;
|
|
13
|
+
private threadRepo;
|
|
14
|
+
private messageRepo;
|
|
15
|
+
private characterService;
|
|
16
|
+
initialize(sessionRepo: Repository<ChatSession>, threadRepo: Repository<ChatThread>, messageRepo: Repository<ChatMessage>, characterService: CharacterService): void;
|
|
17
|
+
/** 创建新的多线聊天会话 */
|
|
18
|
+
startSession(dto: StartSessionDto, userId?: string): Promise<{
|
|
19
|
+
session: ChatSession;
|
|
20
|
+
threads: ChatThread[];
|
|
21
|
+
}>;
|
|
22
|
+
/** 发送消息到指定线程 */
|
|
23
|
+
sendMessage(dto: SendMessageDto, userId?: string): Promise<{
|
|
24
|
+
userMessage: ChatMessage;
|
|
25
|
+
characterReply: ChatMessage;
|
|
26
|
+
favorDelta: number;
|
|
27
|
+
newFavorability: number;
|
|
28
|
+
threadStatus: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** 获取会话详情 */
|
|
31
|
+
getSession(sessionId: string): Promise<ChatSession | null>;
|
|
32
|
+
/** 获取线程消息列表 */
|
|
33
|
+
getThreadMessages(threadId: string, page?: number, pageSize?: number): Promise<{
|
|
34
|
+
items: ChatMessage[];
|
|
35
|
+
total: number;
|
|
36
|
+
}>;
|
|
37
|
+
/** 结束会话 */
|
|
38
|
+
endSession(sessionId: string): Promise<ChatSession>;
|
|
39
|
+
/** 获取历史会话列表 */
|
|
40
|
+
getHistory(userId?: string, page?: number, pageSize?: number): Promise<{
|
|
41
|
+
items: ChatSession[];
|
|
42
|
+
total: number;
|
|
43
|
+
}>;
|
|
44
|
+
private generateGreeting;
|
|
45
|
+
private analyzeMessage;
|
|
46
|
+
private generateReply;
|
|
47
|
+
private generateSessionSummary;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=chat.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.service.d.ts","sourceRoot":"","sources":["../../src/services/chat.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGrF;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,gBAAgB,CAAoB;IAE5C,UAAU,CACR,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,EACpC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,EAClC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,EACpC,gBAAgB,EAAE,gBAAgB,GACjC,IAAI;IAOP,iBAAiB;IACX,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,GAAE,MAAoB,GAAG,OAAO,CAAC;QAC9E,OAAO,EAAE,WAAW,CAAC;QACrB,OAAO,EAAE,UAAU,EAAE,CAAC;KACvB,CAAC;IA0DF,gBAAgB;IACV,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,GAAE,MAAoB,GAAG,OAAO,CAAC;QAC5E,WAAW,EAAE,WAAW,CAAC;QACzB,cAAc,EAAE,WAAW,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAqEF,aAAa;IACP,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAOhE,eAAe;IACT,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC;QAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAUnD,WAAW;IACL,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAezD,eAAe;IACT,UAAU,CACd,MAAM,GAAE,MAAoB,EAC5B,IAAI,GAAE,MAAU,EAChB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC;QAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAYnD,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,cAAc;IA+EtB,OAAO,CAAC,aAAa;IAiDrB,OAAO,CAAC,sBAAsB;CAqB/B"}
|