@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 @@
|
|
|
1
|
+
{"version":3,"file":"leaderboard-entry.entity.d.ts","sourceRoot":"","sources":["../../src/entities/leaderboard-entry.entity.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,qBACa,gBAAgB;IAE3B,EAAE,EAAG,MAAM,CAAC;IAGZ,MAAM,EAAG,MAAM,CAAC;IAEhB,WAAW;IAEX,WAAW,EAAG,MAAM,CAAC;IAErB,aAAa;IAEb,UAAU,EAAG,MAAM,CAAC;IAEpB,SAAS;IAET,IAAI,EAAG,MAAM,CAAC;IAEd,cAAc;IAEd,kBAAkB,EAAG,MAAM,CAAC;IAE5B,cAAc;IAEd,iBAAiB,EAAG,MAAM,CAAC;IAE3B,WAAW;IAEX,MAAM,EAAG,MAAM,CAAC;IAGhB,SAAS,EAAG,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LeaderboardEntry = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
/**
|
|
15
|
+
* 排行榜条目
|
|
16
|
+
* 🏆 看看谁才是真正的海王/海后!
|
|
17
|
+
*/
|
|
18
|
+
let LeaderboardEntry = class LeaderboardEntry {
|
|
19
|
+
id;
|
|
20
|
+
userId;
|
|
21
|
+
/** 显示名称 */
|
|
22
|
+
displayName;
|
|
23
|
+
/** 总好感度得分 */
|
|
24
|
+
totalScore;
|
|
25
|
+
/** 段位 */
|
|
26
|
+
rank;
|
|
27
|
+
/** 最高同时聊天数 */
|
|
28
|
+
maxConcurrentChats;
|
|
29
|
+
/** 危机处理成功率 */
|
|
30
|
+
crisisSuccessRate;
|
|
31
|
+
/** 赛季标识 */
|
|
32
|
+
season;
|
|
33
|
+
createdAt;
|
|
34
|
+
};
|
|
35
|
+
exports.LeaderboardEntry = LeaderboardEntry;
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], LeaderboardEntry.prototype, "id", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], LeaderboardEntry.prototype, "userId", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100, default: '神秘海王' }),
|
|
46
|
+
__metadata("design:type", String)
|
|
47
|
+
], LeaderboardEntry.prototype, "displayName", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
50
|
+
__metadata("design:type", Number)
|
|
51
|
+
], LeaderboardEntry.prototype, "totalScore", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20, default: 'bronze' }),
|
|
54
|
+
__metadata("design:type", String)
|
|
55
|
+
], LeaderboardEntry.prototype, "rank", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
58
|
+
__metadata("design:type", Number)
|
|
59
|
+
], LeaderboardEntry.prototype, "maxConcurrentChats", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
62
|
+
__metadata("design:type", Number)
|
|
63
|
+
], LeaderboardEntry.prototype, "crisisSuccessRate", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20, default: 'S1' }),
|
|
66
|
+
__metadata("design:type", String)
|
|
67
|
+
], LeaderboardEntry.prototype, "season", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
70
|
+
__metadata("design:type", Date)
|
|
71
|
+
], LeaderboardEntry.prototype, "createdAt", void 0);
|
|
72
|
+
exports.LeaderboardEntry = LeaderboardEntry = __decorate([
|
|
73
|
+
(0, typeorm_1.Entity)('sk_leaderboard_entries')
|
|
74
|
+
], LeaderboardEntry);
|
|
75
|
+
//# sourceMappingURL=leaderboard-entry.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaderboard-entry.entity.js","sourceRoot":"","sources":["../../src/entities/leaderboard-entry.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAKiB;AAEjB;;;GAGG;AAEI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAE3B,EAAE,CAAU;IAGZ,MAAM,CAAU;IAEhB,WAAW;IAEX,WAAW,CAAU;IAErB,aAAa;IAEb,UAAU,CAAU;IAEpB,SAAS;IAET,IAAI,CAAU;IAEd,cAAc;IAEd,kBAAkB,CAAU;IAE5B,cAAc;IAEd,iBAAiB,CAAU;IAE3B,WAAW;IAEX,MAAM,CAAU;IAGhB,SAAS,CAAQ;CAClB,CAAA;AAjCY,4CAAgB;AAE3B;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;4CACnB;AAGZ;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;gDACzB;AAIhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;;qDACrC;AAIrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;oDACpB;AAIpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;8CAC7C;AAId;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;4DACZ;AAI5B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;2DACb;AAI3B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;gDACvC;AAGhB;IADC,IAAA,0BAAgB,GAAE;8BACP,IAAI;mDAAC;2BAhCN,gBAAgB;IAD5B,IAAA,gBAAM,EAAC,wBAAwB,CAAC;GACpB,gBAAgB,CAiC5B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { LiveThread } from './live-thread.entity.js';
|
|
2
|
+
/**
|
|
3
|
+
* 实时聊天消息(不可变)
|
|
4
|
+
* 📨 每条消息标记来源类型,但对前端隐藏真实身份
|
|
5
|
+
*/
|
|
6
|
+
export type LiveMessageSource = 'human' | 'ai' | 'ai_takeover' | 'system';
|
|
7
|
+
export declare class LiveMessage {
|
|
8
|
+
id: string;
|
|
9
|
+
threadId: string;
|
|
10
|
+
/** 发送者ID(userId 或 characterId) */
|
|
11
|
+
senderId: string;
|
|
12
|
+
/** 发送者角色名 */
|
|
13
|
+
senderName: string;
|
|
14
|
+
/** 消息内容 */
|
|
15
|
+
content: string;
|
|
16
|
+
/**
|
|
17
|
+
* 真实来源类型(后端存储,前端不可见!)
|
|
18
|
+
* 这是图灵测试的核心秘密 🤫
|
|
19
|
+
*/
|
|
20
|
+
sourceType: LiveMessageSource;
|
|
21
|
+
/** 好感度变化 */
|
|
22
|
+
favorDelta: number;
|
|
23
|
+
/** 变化原因 */
|
|
24
|
+
favorReason: string | null;
|
|
25
|
+
/** 消息情感标签 */
|
|
26
|
+
sentiment: string;
|
|
27
|
+
/** 是否为AI接管后的消息 */
|
|
28
|
+
isAfterTakeover: boolean;
|
|
29
|
+
/** AI 模拟的打字延迟(毫秒),让AI看起来像真人 */
|
|
30
|
+
simulatedDelay: number;
|
|
31
|
+
thread: LiveThread;
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=live-message.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-message.entity.d.ts","sourceRoot":"","sources":["../../src/entities/live-message.entity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,IAAI,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE1E,qBACa,WAAW;IAEtB,EAAE,EAAG,MAAM,CAAC;IAGZ,QAAQ,EAAG,MAAM,CAAC;IAElB,kCAAkC;IAElC,QAAQ,EAAG,MAAM,CAAC;IAElB,aAAa;IAEb,UAAU,EAAG,MAAM,CAAC;IAEpB,WAAW;IAEX,OAAO,EAAG,MAAM,CAAC;IAEjB;;;OAGG;IAEH,UAAU,EAAG,iBAAiB,CAAC;IAE/B,YAAY;IAEZ,UAAU,EAAG,MAAM,CAAC;IAEpB,WAAW;IAEX,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAE5B,aAAa;IAEb,SAAS,EAAG,MAAM,CAAC;IAEnB,kBAAkB;IAElB,eAAe,EAAG,OAAO,CAAC;IAE1B,+BAA+B;IAE/B,cAAc,EAAG,MAAM,CAAC;IAIxB,MAAM,EAAG,UAAU,CAAC;IAGpB,SAAS,EAAG,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LiveMessage = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const live_thread_entity_js_1 = require("./live-thread.entity.js");
|
|
15
|
+
let LiveMessage = class LiveMessage {
|
|
16
|
+
id;
|
|
17
|
+
threadId;
|
|
18
|
+
/** 发送者ID(userId 或 characterId) */
|
|
19
|
+
senderId;
|
|
20
|
+
/** 发送者角色名 */
|
|
21
|
+
senderName;
|
|
22
|
+
/** 消息内容 */
|
|
23
|
+
content;
|
|
24
|
+
/**
|
|
25
|
+
* 真实来源类型(后端存储,前端不可见!)
|
|
26
|
+
* 这是图灵测试的核心秘密 🤫
|
|
27
|
+
*/
|
|
28
|
+
sourceType;
|
|
29
|
+
/** 好感度变化 */
|
|
30
|
+
favorDelta;
|
|
31
|
+
/** 变化原因 */
|
|
32
|
+
favorReason;
|
|
33
|
+
/** 消息情感标签 */
|
|
34
|
+
sentiment;
|
|
35
|
+
/** 是否为AI接管后的消息 */
|
|
36
|
+
isAfterTakeover;
|
|
37
|
+
/** AI 模拟的打字延迟(毫秒),让AI看起来像真人 */
|
|
38
|
+
simulatedDelay;
|
|
39
|
+
thread;
|
|
40
|
+
createdAt;
|
|
41
|
+
};
|
|
42
|
+
exports.LiveMessage = LiveMessage;
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], LiveMessage.prototype, "id", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 36 }),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], LiveMessage.prototype, "threadId", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
|
|
53
|
+
__metadata("design:type", String)
|
|
54
|
+
], LiveMessage.prototype, "senderId", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 50 }),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], LiveMessage.prototype, "senderName", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, typeorm_1.Column)({ type: 'text' }),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], LiveMessage.prototype, "content", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20 }),
|
|
65
|
+
__metadata("design:type", String)
|
|
66
|
+
], LiveMessage.prototype, "sourceType", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
69
|
+
__metadata("design:type", Number)
|
|
70
|
+
], LiveMessage.prototype, "favorDelta", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 200, nullable: true }),
|
|
73
|
+
__metadata("design:type", Object)
|
|
74
|
+
], LiveMessage.prototype, "favorReason", void 0);
|
|
75
|
+
__decorate([
|
|
76
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 30, default: 'neutral' }),
|
|
77
|
+
__metadata("design:type", String)
|
|
78
|
+
], LiveMessage.prototype, "sentiment", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
(0, typeorm_1.Column)({ type: 'boolean', default: false }),
|
|
81
|
+
__metadata("design:type", Boolean)
|
|
82
|
+
], LiveMessage.prototype, "isAfterTakeover", void 0);
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
85
|
+
__metadata("design:type", Number)
|
|
86
|
+
], LiveMessage.prototype, "simulatedDelay", void 0);
|
|
87
|
+
__decorate([
|
|
88
|
+
(0, typeorm_1.ManyToOne)(() => live_thread_entity_js_1.LiveThread, (t) => t.messages),
|
|
89
|
+
(0, typeorm_1.JoinColumn)({ name: 'threadId' }),
|
|
90
|
+
__metadata("design:type", live_thread_entity_js_1.LiveThread)
|
|
91
|
+
], LiveMessage.prototype, "thread", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
94
|
+
__metadata("design:type", Date)
|
|
95
|
+
], LiveMessage.prototype, "createdAt", void 0);
|
|
96
|
+
exports.LiveMessage = LiveMessage = __decorate([
|
|
97
|
+
(0, typeorm_1.Entity)('sk_live_messages')
|
|
98
|
+
], LiveMessage);
|
|
99
|
+
//# sourceMappingURL=live-message.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-message.entity.js","sourceRoot":"","sources":["../../src/entities/live-message.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,mEAAqD;AAS9C,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEtB,EAAE,CAAU;IAGZ,QAAQ,CAAU;IAElB,kCAAkC;IAElC,QAAQ,CAAU;IAElB,aAAa;IAEb,UAAU,CAAU;IAEpB,WAAW;IAEX,OAAO,CAAU;IAEjB;;;OAGG;IAEH,UAAU,CAAqB;IAE/B,YAAY;IAEZ,UAAU,CAAU;IAEpB,WAAW;IAEX,WAAW,CAAiB;IAE5B,aAAa;IAEb,SAAS,CAAU;IAEnB,kBAAkB;IAElB,eAAe,CAAW;IAE1B,+BAA+B;IAE/B,cAAc,CAAU;IAIxB,MAAM,CAAc;IAGpB,SAAS,CAAQ;CAClB,CAAA;AApDY,kCAAW;AAEtB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;uCACnB;AAGZ;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;6CACtB;AAIlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;6CACvB;AAIlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;+CACpB;AAIpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;4CACR;AAOjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;+CACT;AAI/B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;+CACpB;AAIpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDAC7B;AAI5B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;8CACzC;AAInB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;oDAClB;AAI1B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;mDAChB;AAIxB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kCAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9C,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;8BACxB,kCAAU;2CAAC;AAGpB;IADC,IAAA,0BAAgB,GAAE;8BACP,IAAI;8CAAC;sBAnDN,WAAW;IADvB,IAAA,gBAAM,EAAC,kBAAkB,CAAC;GACd,WAAW,CAoDvB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { MatchRoom } from './match-room.entity.js';
|
|
2
|
+
import { LiveMessage } from './live-message.entity.js';
|
|
3
|
+
/**
|
|
4
|
+
* 实时聊天线程:真人对真人、真人对AI 的单条对话
|
|
5
|
+
* 💬 关键在于:你永远不知道对面是人是AI
|
|
6
|
+
*
|
|
7
|
+
* 当真人掉线时,AI 无缝接管,保持对话连贯性
|
|
8
|
+
*/
|
|
9
|
+
export type ParticipantType = 'human' | 'ai' | 'ai_takeover';
|
|
10
|
+
export type LiveThreadStatus = 'active' | 'paused' | 'completed' | 'ai_replaced';
|
|
11
|
+
export declare class LiveThread {
|
|
12
|
+
id: string;
|
|
13
|
+
/** 房间ID */
|
|
14
|
+
roomId: string;
|
|
15
|
+
/** 参与者A (发起者) userId */
|
|
16
|
+
participantAId: string;
|
|
17
|
+
/** 参与者A 的角色名(匿名化) */
|
|
18
|
+
participantAName: string;
|
|
19
|
+
/** 参与者A 的头像(emoji) */
|
|
20
|
+
participantAAvatar: string;
|
|
21
|
+
/** A 是真人还是AI */
|
|
22
|
+
participantAType: ParticipantType;
|
|
23
|
+
/** 参与者B userId(AI 则为 characterId) */
|
|
24
|
+
participantBId: string;
|
|
25
|
+
/** 参与者B 的角色名 */
|
|
26
|
+
participantBName: string;
|
|
27
|
+
/** 参与者B 的头像 */
|
|
28
|
+
participantBAvatar: string;
|
|
29
|
+
/** B 是真人还是AI */
|
|
30
|
+
participantBType: ParticipantType;
|
|
31
|
+
/** AI 使用的性格模板(AI 或接管时使用) */
|
|
32
|
+
aiCharacterId: string | null;
|
|
33
|
+
/** 好感度 (A → B) */
|
|
34
|
+
favorabilityAtoB: number;
|
|
35
|
+
/** 好感度 (B → A) */
|
|
36
|
+
favorabilityBtoA: number;
|
|
37
|
+
/** 线程状态 */
|
|
38
|
+
status: LiveThreadStatus;
|
|
39
|
+
/** AI 接管时间点(null = 未接管) */
|
|
40
|
+
aiTakeoverAt: Date | null;
|
|
41
|
+
/** AI 接管前的对话上下文摘要(帮助AI无缝续接) */
|
|
42
|
+
aiTakeoverContext: string | null;
|
|
43
|
+
/** 消息总数 */
|
|
44
|
+
messageCount: number;
|
|
45
|
+
room: MatchRoom;
|
|
46
|
+
messages: LiveMessage[];
|
|
47
|
+
createdAt: Date;
|
|
48
|
+
updatedAt: Date;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=live-thread.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-thread.entity.d.ts","sourceRoot":"","sources":["../../src/entities/live-thread.entity.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,IAAI,GAAG,aAAa,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;AAEjF,qBACa,UAAU;IAErB,EAAE,EAAG,MAAM,CAAC;IAEZ,WAAW;IAEX,MAAM,EAAG,MAAM,CAAC;IAEhB,wBAAwB;IAExB,cAAc,EAAG,MAAM,CAAC;IAExB,qBAAqB;IAErB,gBAAgB,EAAG,MAAM,CAAC;IAE1B,sBAAsB;IAEtB,kBAAkB,EAAG,MAAM,CAAC;IAE5B,gBAAgB;IAEhB,gBAAgB,EAAG,eAAe,CAAC;IAEnC,qCAAqC;IAErC,cAAc,EAAG,MAAM,CAAC;IAExB,gBAAgB;IAEhB,gBAAgB,EAAG,MAAM,CAAC;IAE1B,eAAe;IAEf,kBAAkB,EAAG,MAAM,CAAC;IAE5B,gBAAgB;IAEhB,gBAAgB,EAAG,eAAe,CAAC;IAEnC,4BAA4B;IAE5B,aAAa,EAAG,MAAM,GAAG,IAAI,CAAC;IAE9B,kBAAkB;IAElB,gBAAgB,EAAG,MAAM,CAAC;IAE1B,kBAAkB;IAElB,gBAAgB,EAAG,MAAM,CAAC;IAE1B,WAAW;IAEX,MAAM,EAAG,gBAAgB,CAAC;IAE1B,2BAA2B;IAE3B,YAAY,EAAG,IAAI,GAAG,IAAI,CAAC;IAE3B,+BAA+B;IAE/B,iBAAiB,EAAG,MAAM,GAAG,IAAI,CAAC;IAElC,WAAW;IAEX,YAAY,EAAG,MAAM,CAAC;IAItB,IAAI,EAAG,SAAS,CAAC;IAGjB,QAAQ,EAAG,WAAW,EAAE,CAAC;IAGzB,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LiveThread = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const match_room_entity_js_1 = require("./match-room.entity.js");
|
|
15
|
+
const live_message_entity_js_1 = require("./live-message.entity.js");
|
|
16
|
+
let LiveThread = class LiveThread {
|
|
17
|
+
id;
|
|
18
|
+
/** 房间ID */
|
|
19
|
+
roomId;
|
|
20
|
+
/** 参与者A (发起者) userId */
|
|
21
|
+
participantAId;
|
|
22
|
+
/** 参与者A 的角色名(匿名化) */
|
|
23
|
+
participantAName;
|
|
24
|
+
/** 参与者A 的头像(emoji) */
|
|
25
|
+
participantAAvatar;
|
|
26
|
+
/** A 是真人还是AI */
|
|
27
|
+
participantAType;
|
|
28
|
+
/** 参与者B userId(AI 则为 characterId) */
|
|
29
|
+
participantBId;
|
|
30
|
+
/** 参与者B 的角色名 */
|
|
31
|
+
participantBName;
|
|
32
|
+
/** 参与者B 的头像 */
|
|
33
|
+
participantBAvatar;
|
|
34
|
+
/** B 是真人还是AI */
|
|
35
|
+
participantBType;
|
|
36
|
+
/** AI 使用的性格模板(AI 或接管时使用) */
|
|
37
|
+
aiCharacterId;
|
|
38
|
+
/** 好感度 (A → B) */
|
|
39
|
+
favorabilityAtoB;
|
|
40
|
+
/** 好感度 (B → A) */
|
|
41
|
+
favorabilityBtoA;
|
|
42
|
+
/** 线程状态 */
|
|
43
|
+
status;
|
|
44
|
+
/** AI 接管时间点(null = 未接管) */
|
|
45
|
+
aiTakeoverAt;
|
|
46
|
+
/** AI 接管前的对话上下文摘要(帮助AI无缝续接) */
|
|
47
|
+
aiTakeoverContext;
|
|
48
|
+
/** 消息总数 */
|
|
49
|
+
messageCount;
|
|
50
|
+
room;
|
|
51
|
+
messages;
|
|
52
|
+
createdAt;
|
|
53
|
+
updatedAt;
|
|
54
|
+
};
|
|
55
|
+
exports.LiveThread = LiveThread;
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], LiveThread.prototype, "id", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 36 }),
|
|
62
|
+
__metadata("design:type", String)
|
|
63
|
+
], LiveThread.prototype, "roomId", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
|
|
66
|
+
__metadata("design:type", String)
|
|
67
|
+
], LiveThread.prototype, "participantAId", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 50 }),
|
|
70
|
+
__metadata("design:type", String)
|
|
71
|
+
], LiveThread.prototype, "participantAName", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 10, default: '🎭' }),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], LiveThread.prototype, "participantAAvatar", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20 }),
|
|
78
|
+
__metadata("design:type", String)
|
|
79
|
+
], LiveThread.prototype, "participantAType", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
|
|
82
|
+
__metadata("design:type", String)
|
|
83
|
+
], LiveThread.prototype, "participantBId", void 0);
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 50 }),
|
|
86
|
+
__metadata("design:type", String)
|
|
87
|
+
], LiveThread.prototype, "participantBName", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 10, default: '🎭' }),
|
|
90
|
+
__metadata("design:type", String)
|
|
91
|
+
], LiveThread.prototype, "participantBAvatar", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20 }),
|
|
94
|
+
__metadata("design:type", String)
|
|
95
|
+
], LiveThread.prototype, "participantBType", void 0);
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 36, nullable: true }),
|
|
98
|
+
__metadata("design:type", Object)
|
|
99
|
+
], LiveThread.prototype, "aiCharacterId", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 50 }),
|
|
102
|
+
__metadata("design:type", Number)
|
|
103
|
+
], LiveThread.prototype, "favorabilityAtoB", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 50 }),
|
|
106
|
+
__metadata("design:type", Number)
|
|
107
|
+
], LiveThread.prototype, "favorabilityBtoA", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20, default: 'active' }),
|
|
110
|
+
__metadata("design:type", String)
|
|
111
|
+
], LiveThread.prototype, "status", void 0);
|
|
112
|
+
__decorate([
|
|
113
|
+
(0, typeorm_1.Column)({ type: 'datetime', nullable: true }),
|
|
114
|
+
__metadata("design:type", Object)
|
|
115
|
+
], LiveThread.prototype, "aiTakeoverAt", void 0);
|
|
116
|
+
__decorate([
|
|
117
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
118
|
+
__metadata("design:type", Object)
|
|
119
|
+
], LiveThread.prototype, "aiTakeoverContext", void 0);
|
|
120
|
+
__decorate([
|
|
121
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
122
|
+
__metadata("design:type", Number)
|
|
123
|
+
], LiveThread.prototype, "messageCount", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
(0, typeorm_1.ManyToOne)(() => match_room_entity_js_1.MatchRoom, (r) => r.threads),
|
|
126
|
+
(0, typeorm_1.JoinColumn)({ name: 'roomId' }),
|
|
127
|
+
__metadata("design:type", match_room_entity_js_1.MatchRoom)
|
|
128
|
+
], LiveThread.prototype, "room", void 0);
|
|
129
|
+
__decorate([
|
|
130
|
+
(0, typeorm_1.OneToMany)(() => live_message_entity_js_1.LiveMessage, (m) => m.thread, { cascade: true }),
|
|
131
|
+
__metadata("design:type", Array)
|
|
132
|
+
], LiveThread.prototype, "messages", void 0);
|
|
133
|
+
__decorate([
|
|
134
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
135
|
+
__metadata("design:type", Date)
|
|
136
|
+
], LiveThread.prototype, "createdAt", void 0);
|
|
137
|
+
__decorate([
|
|
138
|
+
(0, typeorm_1.UpdateDateColumn)(),
|
|
139
|
+
__metadata("design:type", Date)
|
|
140
|
+
], LiveThread.prototype, "updatedAt", void 0);
|
|
141
|
+
exports.LiveThread = LiveThread = __decorate([
|
|
142
|
+
(0, typeorm_1.Entity)('sk_live_threads')
|
|
143
|
+
], LiveThread);
|
|
144
|
+
//# sourceMappingURL=live-thread.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-thread.entity.js","sourceRoot":"","sources":["../../src/entities/live-thread.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LiveThread } from './live-thread.entity.js';
|
|
2
|
+
/**
|
|
3
|
+
* 匹配房间:真人 + AI 混战的核心单位
|
|
4
|
+
* 🏟️ 房间里既有真人也有AI,但你分不清谁是谁
|
|
5
|
+
*/
|
|
6
|
+
export type RoomStatus = 'waiting' | 'active' | 'revealing' | 'completed' | 'disbanded';
|
|
7
|
+
export type RoomMode = 'blind' | 'turing' | 'ranked';
|
|
8
|
+
export declare class MatchRoom {
|
|
9
|
+
id: string;
|
|
10
|
+
/** 房间名称(随机生成的有趣名字) */
|
|
11
|
+
roomName: string;
|
|
12
|
+
/** 房间模式 */
|
|
13
|
+
mode: RoomMode;
|
|
14
|
+
/** 房间状态 */
|
|
15
|
+
status: RoomStatus;
|
|
16
|
+
/** 创建者 userId */
|
|
17
|
+
hostUserId: string;
|
|
18
|
+
/** 房间最大人数(真人+AI总数) */
|
|
19
|
+
maxPlayers: number;
|
|
20
|
+
/** 当前真人数量 */
|
|
21
|
+
humanCount: number;
|
|
22
|
+
/** 当前AI数量 */
|
|
23
|
+
aiCount: number;
|
|
24
|
+
/** AI最小比例(0.0-1.0),保证房间里总有AI让你猜不透 */
|
|
25
|
+
aiMinRatio: number;
|
|
26
|
+
/** 房间密码(null = 公开房间) */
|
|
27
|
+
password: string | null;
|
|
28
|
+
/** 匹配段位范围(null = 不限) */
|
|
29
|
+
rankRange: string | null;
|
|
30
|
+
/** 每轮时间限制(秒) */
|
|
31
|
+
roundTimeLimit: number;
|
|
32
|
+
/** 总轮次 */
|
|
33
|
+
totalRounds: number;
|
|
34
|
+
/** 当前轮次 */
|
|
35
|
+
currentRound: number;
|
|
36
|
+
/** 图灵测试投票结果(JSON: {userId: {targetId: 'human'|'ai'}} ) */
|
|
37
|
+
turingVotes: string | null;
|
|
38
|
+
/** 房间设置(JSON) */
|
|
39
|
+
settings: string | null;
|
|
40
|
+
threads: LiveThread[];
|
|
41
|
+
createdAt: Date;
|
|
42
|
+
updatedAt: Date;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=match-room.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-room.entity.d.ts","sourceRoot":"","sources":["../../src/entities/match-room.entity.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AACxF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErD,qBACa,SAAS;IAEpB,EAAE,EAAG,MAAM,CAAC;IAEZ,sBAAsB;IAEtB,QAAQ,EAAG,MAAM,CAAC;IAElB,WAAW;IAEX,IAAI,EAAG,QAAQ,CAAC;IAEhB,WAAW;IAEX,MAAM,EAAG,UAAU,CAAC;IAEpB,iBAAiB;IAEjB,UAAU,EAAG,MAAM,CAAC;IAEpB,sBAAsB;IAEtB,UAAU,EAAG,MAAM,CAAC;IAEpB,aAAa;IAEb,UAAU,EAAG,MAAM,CAAC;IAEpB,aAAa;IAEb,OAAO,EAAG,MAAM,CAAC;IAEjB,qCAAqC;IAErC,UAAU,EAAG,MAAM,CAAC;IAEpB,wBAAwB;IAExB,QAAQ,EAAG,MAAM,GAAG,IAAI,CAAC;IAEzB,wBAAwB;IAExB,SAAS,EAAG,MAAM,GAAG,IAAI,CAAC;IAE1B,gBAAgB;IAEhB,cAAc,EAAG,MAAM,CAAC;IAExB,UAAU;IAEV,WAAW,EAAG,MAAM,CAAC;IAErB,WAAW;IAEX,YAAY,EAAG,MAAM,CAAC;IAEtB,0DAA0D;IAE1D,WAAW,EAAG,MAAM,GAAG,IAAI,CAAC;IAE5B,iBAAiB;IAEjB,QAAQ,EAAG,MAAM,GAAG,IAAI,CAAC;IAGzB,OAAO,EAAG,UAAU,EAAE,CAAC;IAGvB,SAAS,EAAG,IAAI,CAAC;IAGjB,SAAS,EAAG,IAAI,CAAC;CAClB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MatchRoom = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const live_thread_entity_js_1 = require("./live-thread.entity.js");
|
|
15
|
+
let MatchRoom = class MatchRoom {
|
|
16
|
+
id;
|
|
17
|
+
/** 房间名称(随机生成的有趣名字) */
|
|
18
|
+
roomName;
|
|
19
|
+
/** 房间模式 */
|
|
20
|
+
mode;
|
|
21
|
+
/** 房间状态 */
|
|
22
|
+
status;
|
|
23
|
+
/** 创建者 userId */
|
|
24
|
+
hostUserId;
|
|
25
|
+
/** 房间最大人数(真人+AI总数) */
|
|
26
|
+
maxPlayers;
|
|
27
|
+
/** 当前真人数量 */
|
|
28
|
+
humanCount;
|
|
29
|
+
/** 当前AI数量 */
|
|
30
|
+
aiCount;
|
|
31
|
+
/** AI最小比例(0.0-1.0),保证房间里总有AI让你猜不透 */
|
|
32
|
+
aiMinRatio;
|
|
33
|
+
/** 房间密码(null = 公开房间) */
|
|
34
|
+
password;
|
|
35
|
+
/** 匹配段位范围(null = 不限) */
|
|
36
|
+
rankRange;
|
|
37
|
+
/** 每轮时间限制(秒) */
|
|
38
|
+
roundTimeLimit;
|
|
39
|
+
/** 总轮次 */
|
|
40
|
+
totalRounds;
|
|
41
|
+
/** 当前轮次 */
|
|
42
|
+
currentRound;
|
|
43
|
+
/** 图灵测试投票结果(JSON: {userId: {targetId: 'human'|'ai'}} ) */
|
|
44
|
+
turingVotes;
|
|
45
|
+
/** 房间设置(JSON) */
|
|
46
|
+
settings;
|
|
47
|
+
threads;
|
|
48
|
+
createdAt;
|
|
49
|
+
updatedAt;
|
|
50
|
+
};
|
|
51
|
+
exports.MatchRoom = MatchRoom;
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
54
|
+
__metadata("design:type", String)
|
|
55
|
+
], MatchRoom.prototype, "id", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], MatchRoom.prototype, "roomName", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20, default: 'blind' }),
|
|
62
|
+
__metadata("design:type", String)
|
|
63
|
+
], MatchRoom.prototype, "mode", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 20, default: 'waiting' }),
|
|
66
|
+
__metadata("design:type", String)
|
|
67
|
+
], MatchRoom.prototype, "status", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 100 }),
|
|
70
|
+
__metadata("design:type", String)
|
|
71
|
+
], MatchRoom.prototype, "hostUserId", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 6 }),
|
|
74
|
+
__metadata("design:type", Number)
|
|
75
|
+
], MatchRoom.prototype, "maxPlayers", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
78
|
+
__metadata("design:type", Number)
|
|
79
|
+
], MatchRoom.prototype, "humanCount", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
82
|
+
__metadata("design:type", Number)
|
|
83
|
+
], MatchRoom.prototype, "aiCount", void 0);
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, typeorm_1.Column)({ type: 'real', default: 0.3 }),
|
|
86
|
+
__metadata("design:type", Number)
|
|
87
|
+
], MatchRoom.prototype, "aiMinRatio", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 50, nullable: true }),
|
|
90
|
+
__metadata("design:type", Object)
|
|
91
|
+
], MatchRoom.prototype, "password", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 50, nullable: true }),
|
|
94
|
+
__metadata("design:type", Object)
|
|
95
|
+
], MatchRoom.prototype, "rankRange", void 0);
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 120 }),
|
|
98
|
+
__metadata("design:type", Number)
|
|
99
|
+
], MatchRoom.prototype, "roundTimeLimit", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 10 }),
|
|
102
|
+
__metadata("design:type", Number)
|
|
103
|
+
], MatchRoom.prototype, "totalRounds", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
(0, typeorm_1.Column)({ type: 'integer', default: 0 }),
|
|
106
|
+
__metadata("design:type", Number)
|
|
107
|
+
], MatchRoom.prototype, "currentRound", void 0);
|
|
108
|
+
__decorate([
|
|
109
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
110
|
+
__metadata("design:type", Object)
|
|
111
|
+
], MatchRoom.prototype, "turingVotes", void 0);
|
|
112
|
+
__decorate([
|
|
113
|
+
(0, typeorm_1.Column)({ type: 'text', nullable: true }),
|
|
114
|
+
__metadata("design:type", Object)
|
|
115
|
+
], MatchRoom.prototype, "settings", void 0);
|
|
116
|
+
__decorate([
|
|
117
|
+
(0, typeorm_1.OneToMany)(() => live_thread_entity_js_1.LiveThread, (t) => t.room, { cascade: true }),
|
|
118
|
+
__metadata("design:type", Array)
|
|
119
|
+
], MatchRoom.prototype, "threads", void 0);
|
|
120
|
+
__decorate([
|
|
121
|
+
(0, typeorm_1.CreateDateColumn)(),
|
|
122
|
+
__metadata("design:type", Date)
|
|
123
|
+
], MatchRoom.prototype, "createdAt", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
(0, typeorm_1.UpdateDateColumn)(),
|
|
126
|
+
__metadata("design:type", Date)
|
|
127
|
+
], MatchRoom.prototype, "updatedAt", void 0);
|
|
128
|
+
exports.MatchRoom = MatchRoom = __decorate([
|
|
129
|
+
(0, typeorm_1.Entity)('sk_match_rooms')
|
|
130
|
+
], MatchRoom);
|
|
131
|
+
//# sourceMappingURL=match-room.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"match-room.entity.js","sourceRoot":"","sources":["../../src/entities/match-room.entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 话术模板:高情商回复收集库
|
|
3
|
+
* 💬 "在吗" → "刚好在想你" 就是这个差距
|
|
4
|
+
*/
|
|
5
|
+
export type PhraseScene = 'first_meet' | 'daily_care' | 'resolve_awkward' | 'elegant_reject' | 'flirt' | 'cool_down' | 'crisis_response' | 'morning_night';
|
|
6
|
+
export declare class PhraseTemplate {
|
|
7
|
+
id: string;
|
|
8
|
+
/** 话术场景 */
|
|
9
|
+
scene: PhraseScene;
|
|
10
|
+
/** 对方说的话(触发情境) */
|
|
11
|
+
trigger: string;
|
|
12
|
+
/** 低情商回复(反面教材) */
|
|
13
|
+
badReply: string;
|
|
14
|
+
/** 高情商回复 */
|
|
15
|
+
goodReply: string;
|
|
16
|
+
/** 为什么这样回复更好 */
|
|
17
|
+
explanation: string;
|
|
18
|
+
/** 好感度加分预估 */
|
|
19
|
+
favorBonus: number;
|
|
20
|
+
/** 难度等级 */
|
|
21
|
+
difficulty: string;
|
|
22
|
+
/** 标签 */
|
|
23
|
+
tags: string | null;
|
|
24
|
+
/** 排序 */
|
|
25
|
+
sortOrder: number;
|
|
26
|
+
createdAt: Date;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=phrase-template.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phrase-template.entity.d.ts","sourceRoot":"","sources":["../../src/entities/phrase-template.entity.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,gBAAgB,GAChB,OAAO,GACP,WAAW,GACX,iBAAiB,GACjB,eAAe,CAAC;AAEpB,qBACa,cAAc;IAEzB,EAAE,EAAG,MAAM,CAAC;IAEZ,WAAW;IAEX,KAAK,EAAG,WAAW,CAAC;IAEpB,kBAAkB;IAElB,OAAO,EAAG,MAAM,CAAC;IAEjB,kBAAkB;IAElB,QAAQ,EAAG,MAAM,CAAC;IAElB,YAAY;IAEZ,SAAS,EAAG,MAAM,CAAC;IAEnB,gBAAgB;IAEhB,WAAW,EAAG,MAAM,CAAC;IAErB,cAAc;IAEd,UAAU,EAAG,MAAM,CAAC;IAEpB,WAAW;IAEX,UAAU,EAAG,MAAM,CAAC;IAEpB,SAAS;IAET,IAAI,EAAG,MAAM,GAAG,IAAI,CAAC;IAErB,SAAS;IAET,SAAS,EAAG,MAAM,CAAC;IAGnB,SAAS,EAAG,IAAI,CAAC;CAClB"}
|