@rine-kit/pubg-domain 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +38 -2
- package/dist/config/default-team.json +27 -0
- package/dist/src/config/chicken-index.d.ts +9 -0
- package/dist/src/config/chicken-index.js +37 -0
- package/dist/src/config/chicken-index.js.map +1 -0
- package/dist/src/config/team.d.ts +22 -0
- package/dist/src/config/team.js +69 -0
- package/dist/src/config/team.js.map +1 -0
- package/dist/src/context/context-store.d.ts +40 -0
- package/dist/src/context/context-store.js +119 -0
- package/dist/src/context/context-store.js.map +1 -0
- package/dist/src/context/team-context.d.ts +13 -0
- package/dist/src/context/team-context.js +16 -0
- package/dist/src/context/team-context.js.map +1 -0
- package/dist/src/core.d.ts +23 -0
- package/dist/src/core.js +24 -0
- package/dist/src/core.js.map +1 -0
- package/dist/src/data/model.d.ts +123 -0
- package/dist/src/data/model.js +100 -0
- package/dist/src/data/model.js.map +1 -0
- package/dist/src/data/pubg-api-client.d.ts +59 -0
- package/dist/src/data/pubg-api-client.js +441 -0
- package/dist/src/data/pubg-api-client.js.map +1 -0
- package/dist/src/engine/query-engine.d.ts +20 -0
- package/dist/src/engine/query-engine.js +765 -0
- package/dist/src/engine/query-engine.js.map +1 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.js +28 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/migration/importer.d.ts +35 -0
- package/dist/src/migration/importer.js +229 -0
- package/dist/src/migration/importer.js.map +1 -0
- package/dist/src/review/combat-scope.d.ts +11 -0
- package/dist/src/review/combat-scope.js +101 -0
- package/dist/src/review/combat-scope.js.map +1 -0
- package/dist/src/review/event-combination-engine.d.ts +17 -0
- package/dist/src/review/event-combination-engine.js +534 -0
- package/dist/src/review/event-combination-engine.js.map +1 -0
- package/dist/src/review/fight-detector.d.ts +4 -0
- package/dist/src/review/fight-detector.js +138 -0
- package/dist/src/review/fight-detector.js.map +1 -0
- package/dist/src/review/fight-integrity-validator.d.ts +13 -0
- package/dist/src/review/fight-integrity-validator.js +134 -0
- package/dist/src/review/fight-integrity-validator.js.map +1 -0
- package/dist/src/review/fun-candidate-generator.d.ts +9 -0
- package/dist/src/review/fun-candidate-generator.js +267 -0
- package/dist/src/review/fun-candidate-generator.js.map +1 -0
- package/dist/src/review/fun-event-generator.d.ts +8 -0
- package/dist/src/review/fun-event-generator.js +740 -0
- package/dist/src/review/fun-event-generator.js.map +1 -0
- package/dist/src/review/fun-intelligence.d.ts +13 -0
- package/dist/src/review/fun-intelligence.js +20 -0
- package/dist/src/review/fun-intelligence.js.map +1 -0
- package/dist/src/review/fun-ranker.d.ts +13 -0
- package/dist/src/review/fun-ranker.js +68 -0
- package/dist/src/review/fun-ranker.js.map +1 -0
- package/dist/src/review/heavy-weapon-intelligence.d.ts +5 -0
- package/dist/src/review/heavy-weapon-intelligence.js +215 -0
- package/dist/src/review/heavy-weapon-intelligence.js.map +1 -0
- package/dist/src/review/key-operation-detector.d.ts +3 -0
- package/dist/src/review/key-operation-detector.js +126 -0
- package/dist/src/review/key-operation-detector.js.map +1 -0
- package/dist/src/review/match-selector.d.ts +18 -0
- package/dist/src/review/match-selector.js +202 -0
- package/dist/src/review/match-selector.js.map +1 -0
- package/dist/src/review/review-analyzer.d.ts +2 -0
- package/dist/src/review/review-analyzer.js +652 -0
- package/dist/src/review/review-analyzer.js.map +1 -0
- package/dist/src/review/review-facts.d.ts +17 -0
- package/dist/src/review/review-facts.js +560 -0
- package/dist/src/review/review-facts.js.map +1 -0
- package/dist/src/review/review-share.d.ts +48 -0
- package/dist/src/review/review-share.js +37 -0
- package/dist/src/review/review-share.js.map +1 -0
- package/dist/src/review/selection-store.d.ts +25 -0
- package/dist/src/review/selection-store.js +80 -0
- package/dist/src/review/selection-store.js.map +1 -0
- package/dist/src/review/session-review.d.ts +72 -0
- package/dist/src/review/session-review.js +492 -0
- package/dist/src/review/session-review.js.map +1 -0
- package/dist/src/review/special-events.d.ts +3 -0
- package/dist/src/review/special-events.js +258 -0
- package/dist/src/review/special-events.js.map +1 -0
- package/dist/src/review/subgraph.d.ts +26 -0
- package/dist/src/review/subgraph.js +146 -0
- package/dist/src/review/subgraph.js.map +1 -0
- package/dist/src/review/supplemental-intelligence.d.ts +15 -0
- package/dist/src/review/supplemental-intelligence.js +431 -0
- package/dist/src/review/supplemental-intelligence.js.map +1 -0
- package/dist/src/review/team-damage.d.ts +8 -0
- package/dist/src/review/team-damage.js +180 -0
- package/dist/src/review/team-damage.js.map +1 -0
- package/dist/src/review/telemetry-events.d.ts +72 -0
- package/dist/src/review/telemetry-events.js +573 -0
- package/dist/src/review/telemetry-events.js.map +1 -0
- package/dist/src/review/telemetry.d.ts +86 -0
- package/dist/src/review/telemetry.js +266 -0
- package/dist/src/review/telemetry.js.map +1 -0
- package/dist/src/review/types.d.ts +501 -0
- package/dist/src/review/types.js +2 -0
- package/dist/src/review/types.js.map +1 -0
- package/dist/src/review/vehicle-intelligence.d.ts +3 -0
- package/dist/src/review/vehicle-intelligence.js +148 -0
- package/dist/src/review/vehicle-intelligence.js.map +1 -0
- package/dist/src/schema/query.d.ts +876 -0
- package/dist/src/schema/query.js +185 -0
- package/dist/src/schema/query.js.map +1 -0
- package/dist/src/schema/status.d.ts +66 -0
- package/dist/src/schema/status.js +49 -0
- package/dist/src/schema/status.js.map +1 -0
- package/dist/src/service/pubg-domain-service.d.ts +192 -0
- package/dist/src/service/pubg-domain-service.js +1598 -0
- package/dist/src/service/pubg-domain-service.js.map +1 -0
- package/dist/src/storage/repository-port.d.ts +84 -0
- package/dist/src/storage/repository-port.js +2 -0
- package/dist/src/storage/repository-port.js.map +1 -0
- package/dist/src/storage/sqlite-repository-adapter.d.ts +33 -0
- package/dist/src/storage/sqlite-repository-adapter.js +66 -0
- package/dist/src/storage/sqlite-repository-adapter.js.map +1 -0
- package/dist/src/storage/sqlite-repository.d.ts +73 -0
- package/dist/src/storage/sqlite-repository.js +652 -0
- package/dist/src/storage/sqlite-repository.js.map +1 -0
- package/dist/src/time/selector-resolver.d.ts +34 -0
- package/dist/src/time/selector-resolver.js +364 -0
- package/dist/src/time/selector-resolver.js.map +1 -0
- package/package.json +42 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-facts.js","sourceRoot":"","sources":["../../../src/review/review-facts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** How long a shared review link opens without a login. */
|
|
2
|
+
export declare const REVIEW_SHARE_TTL_MS: number;
|
|
3
|
+
/** 128 random bits, base64url: 22 characters. */
|
|
4
|
+
export declare const REVIEW_SHARE_TOKEN: RegExp;
|
|
5
|
+
/** A delivered session review, a one-match review, or a query result (今日战绩 and other answers). */
|
|
6
|
+
export type ReviewShareKind = 'session' | 'match' | 'query';
|
|
7
|
+
/**
|
|
8
|
+
* One shared review: the matches it may show and the review exactly as it was sent. Only the token's SHA-256 is
|
|
9
|
+
* stored, so a copy of the database (the Intelligence Lab snapshot) cannot be turned back into a working link.
|
|
10
|
+
*/
|
|
11
|
+
export interface ReviewShareRecord {
|
|
12
|
+
tokenHash: string;
|
|
13
|
+
kind: ReviewShareKind;
|
|
14
|
+
squadId: string;
|
|
15
|
+
sessionKey: string;
|
|
16
|
+
matchIds: string[];
|
|
17
|
+
presentationJson: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
expiresAt: string;
|
|
20
|
+
revokedAt: string | null;
|
|
21
|
+
}
|
|
22
|
+
export interface ReviewShareStore {
|
|
23
|
+
putReviewShare(record: ReviewShareRecord): void;
|
|
24
|
+
getReviewShare(tokenHash: string): ReviewShareRecord | null;
|
|
25
|
+
latestReviewShare(squadId: string, sessionKey: string): ReviewShareRecord | null;
|
|
26
|
+
revokeReviewShares(squadId: string, sessionKey: string, revokedAt: string): number;
|
|
27
|
+
}
|
|
28
|
+
export declare function newReviewShareToken(): string;
|
|
29
|
+
export declare function reviewShareTokenHash(token: string): string;
|
|
30
|
+
/** Whether a stored share may be opened now. */
|
|
31
|
+
export declare function reviewShareOpen(record: ReviewShareRecord, now: Date): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Issues a fresh link for a review. Earlier links of the same session are revoked first, so only the link in the
|
|
34
|
+
* message that was actually delivered keeps working.
|
|
35
|
+
*/
|
|
36
|
+
export declare function issueReviewShare(store: ReviewShareStore, input: {
|
|
37
|
+
squadId: string;
|
|
38
|
+
sessionKey: string;
|
|
39
|
+
matchIds: readonly string[];
|
|
40
|
+
presentationJson: string;
|
|
41
|
+
now: Date;
|
|
42
|
+
ttlMs?: number;
|
|
43
|
+
/** Defaults to a session or one-match review by the number of matches. */
|
|
44
|
+
kind?: ReviewShareKind;
|
|
45
|
+
}): {
|
|
46
|
+
token: string;
|
|
47
|
+
record: ReviewShareRecord;
|
|
48
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createHash, randomBytes } from 'node:crypto';
|
|
2
|
+
/** How long a shared review link opens without a login. */
|
|
3
|
+
export const REVIEW_SHARE_TTL_MS = 7 * 24 * 60 * 60_000;
|
|
4
|
+
/** 128 random bits, base64url: 22 characters. */
|
|
5
|
+
export const REVIEW_SHARE_TOKEN = /^[A-Za-z0-9_-]{22}$/u;
|
|
6
|
+
export function newReviewShareToken() {
|
|
7
|
+
return randomBytes(16).toString('base64url');
|
|
8
|
+
}
|
|
9
|
+
export function reviewShareTokenHash(token) {
|
|
10
|
+
return createHash('sha256').update(token).digest('hex');
|
|
11
|
+
}
|
|
12
|
+
/** Whether a stored share may be opened now. */
|
|
13
|
+
export function reviewShareOpen(record, now) {
|
|
14
|
+
return record.revokedAt === null && Date.parse(record.expiresAt) > now.getTime();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Issues a fresh link for a review. Earlier links of the same session are revoked first, so only the link in the
|
|
18
|
+
* message that was actually delivered keeps working.
|
|
19
|
+
*/
|
|
20
|
+
export function issueReviewShare(store, input) {
|
|
21
|
+
store.revokeReviewShares(input.squadId, input.sessionKey, input.now.toISOString());
|
|
22
|
+
const token = newReviewShareToken();
|
|
23
|
+
const record = {
|
|
24
|
+
tokenHash: reviewShareTokenHash(token),
|
|
25
|
+
kind: input.kind ?? (input.matchIds.length === 1 ? 'match' : 'session'),
|
|
26
|
+
squadId: input.squadId,
|
|
27
|
+
sessionKey: input.sessionKey,
|
|
28
|
+
matchIds: [...input.matchIds],
|
|
29
|
+
presentationJson: input.presentationJson,
|
|
30
|
+
createdAt: input.now.toISOString(),
|
|
31
|
+
expiresAt: new Date(input.now.getTime() + (input.ttlMs ?? REVIEW_SHARE_TTL_MS)).toISOString(),
|
|
32
|
+
revokedAt: null,
|
|
33
|
+
};
|
|
34
|
+
store.putReviewShare(record);
|
|
35
|
+
return { token, record };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=review-share.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-share.js","sourceRoot":"","sources":["../../../src/review/review-share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AACxD,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AA4BzD,MAAM,UAAU,mBAAmB;IACjC,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,GAAS;IAClE,OAAO,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAuB,EACvB,KASC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAsB;QAChC,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;QACtC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC7B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;QAClC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE;QAC7F,SAAS,EAAE,IAAI;KAChB,CAAC;IACF,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MatchSelectionRecord, MatchSelectionRequest } from './types.js';
|
|
2
|
+
export interface SelectionStore {
|
|
3
|
+
set(record: MatchSelectionRecord): Promise<void>;
|
|
4
|
+
get(token: string): Promise<MatchSelectionRecord | null>;
|
|
5
|
+
resolve(token: string, request: MatchSelectionRequest): Promise<MatchSelectionRecord | null>;
|
|
6
|
+
}
|
|
7
|
+
export declare function createSelectionToken(): string;
|
|
8
|
+
export declare function callbackDataForToken(token: string): string;
|
|
9
|
+
export declare function tokenFromCallbackData(value: string): string | null;
|
|
10
|
+
export declare class InMemorySelectionStore implements SelectionStore {
|
|
11
|
+
private readonly values;
|
|
12
|
+
set(record: MatchSelectionRecord): Promise<void>;
|
|
13
|
+
get(token: string): Promise<MatchSelectionRecord | null>;
|
|
14
|
+
resolve(token: string, request: MatchSelectionRequest): Promise<MatchSelectionRecord | null>;
|
|
15
|
+
}
|
|
16
|
+
export declare class JsonSelectionStore implements SelectionStore {
|
|
17
|
+
private readonly filePath;
|
|
18
|
+
private queue;
|
|
19
|
+
constructor(filePath: string);
|
|
20
|
+
private read;
|
|
21
|
+
private write;
|
|
22
|
+
set(record: MatchSelectionRecord): Promise<void>;
|
|
23
|
+
get(token: string): Promise<MatchSelectionRecord | null>;
|
|
24
|
+
resolve(token: string, request: MatchSelectionRequest): Promise<MatchSelectionRecord | null>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
function isValid(record, request) {
|
|
5
|
+
const now = request.now?.getTime() ?? Date.now();
|
|
6
|
+
const expires = Date.parse(record.expiresAt);
|
|
7
|
+
return (record.platform === request.platform &&
|
|
8
|
+
record.chatId === request.chatId &&
|
|
9
|
+
Number.isFinite(expires) &&
|
|
10
|
+
expires > now);
|
|
11
|
+
}
|
|
12
|
+
export function createSelectionToken() {
|
|
13
|
+
return `s${randomUUID().replaceAll('-', '').slice(0, 11)}`;
|
|
14
|
+
}
|
|
15
|
+
export function callbackDataForToken(token) {
|
|
16
|
+
return `pubg:m:${token}`;
|
|
17
|
+
}
|
|
18
|
+
export function tokenFromCallbackData(value) {
|
|
19
|
+
const match = String(value ?? '').match(/^pubg:m:([A-Za-z0-9_-]{4,32})$/u);
|
|
20
|
+
return match?.[1] ?? null;
|
|
21
|
+
}
|
|
22
|
+
export class InMemorySelectionStore {
|
|
23
|
+
values = new Map();
|
|
24
|
+
async set(record) {
|
|
25
|
+
this.values.set(record.token, structuredClone(record));
|
|
26
|
+
}
|
|
27
|
+
async get(token) {
|
|
28
|
+
const record = this.values.get(token);
|
|
29
|
+
return record ? structuredClone(record) : null;
|
|
30
|
+
}
|
|
31
|
+
async resolve(token, request) {
|
|
32
|
+
const record = await this.get(token);
|
|
33
|
+
return record && isValid(record, request) ? record : null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class JsonSelectionStore {
|
|
37
|
+
filePath;
|
|
38
|
+
queue = Promise.resolve();
|
|
39
|
+
constructor(filePath) {
|
|
40
|
+
this.filePath = filePath;
|
|
41
|
+
}
|
|
42
|
+
async read() {
|
|
43
|
+
try {
|
|
44
|
+
const value = JSON.parse(await fs.readFile(this.filePath, 'utf8'));
|
|
45
|
+
return { selections: value.selections ?? {} };
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error.code !== 'ENOENT')
|
|
49
|
+
throw error;
|
|
50
|
+
return { selections: {} };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async write(mutator) {
|
|
54
|
+
this.queue = this.queue
|
|
55
|
+
.catch(() => undefined)
|
|
56
|
+
.then(async () => {
|
|
57
|
+
const state = await this.read();
|
|
58
|
+
mutator(state);
|
|
59
|
+
await fs.mkdir(path.dirname(this.filePath), { recursive: true });
|
|
60
|
+
const temporaryPath = `${this.filePath}.tmp`;
|
|
61
|
+
await fs.writeFile(temporaryPath, JSON.stringify(state), { mode: 0o600 });
|
|
62
|
+
await fs.rename(temporaryPath, this.filePath);
|
|
63
|
+
});
|
|
64
|
+
return this.queue;
|
|
65
|
+
}
|
|
66
|
+
async set(record) {
|
|
67
|
+
await this.write((state) => {
|
|
68
|
+
state.selections[record.token] = record;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async get(token) {
|
|
72
|
+
const state = await this.read();
|
|
73
|
+
return state.selections[token] ?? null;
|
|
74
|
+
}
|
|
75
|
+
async resolve(token, request) {
|
|
76
|
+
const record = await this.get(token);
|
|
77
|
+
return record && isValid(record, request) ? record : null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=selection-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection-store.js","sourceRoot":"","sources":["../../../src/review/selection-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { SessionReviewPresentation } from '@rine-kit/presentation';
|
|
2
|
+
import type { NormalizedMatch, NormalizedPlayer } from '../data/model.js';
|
|
3
|
+
import type { MatchReviewFacts } from './types.js';
|
|
4
|
+
export declare const SESSION_BASELINE_MS: number;
|
|
5
|
+
export declare const SESSION_MIN_MEMBERS = 2;
|
|
6
|
+
/** Out within this much match time (plane included): roughly "lost someone right after landing". */
|
|
7
|
+
export declare const SESSION_EARLY_OUT_SECONDS = 420;
|
|
8
|
+
export declare const SESSION_BOOTSTRAP = 2000;
|
|
9
|
+
export interface SessionTeam {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
memberIds: readonly string[];
|
|
13
|
+
}
|
|
14
|
+
/** A ranked match in which at least two squad members played on the same team. */
|
|
15
|
+
export interface SquadMatch {
|
|
16
|
+
match: NormalizedMatch;
|
|
17
|
+
members: NormalizedPlayer[];
|
|
18
|
+
teamRank: number | null;
|
|
19
|
+
endMs: number;
|
|
20
|
+
}
|
|
21
|
+
export interface SquadSession {
|
|
22
|
+
key: string;
|
|
23
|
+
matches: SquadMatch[];
|
|
24
|
+
startMs: number;
|
|
25
|
+
lastEndMs: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function squadMatches(matches: readonly NormalizedMatch[], memberIds: readonly string[], minMembers?: number): SquadMatch[];
|
|
28
|
+
export declare function dailyReviewKey(teamId: string, businessDay: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* The squad's ranked matches that started inside one business day ([startMs, endMs), 06:00 to 06:00 local), as one
|
|
31
|
+
* review session; null when the squad did not play together that day.
|
|
32
|
+
*/
|
|
33
|
+
export declare function dailySquadSession(matches: readonly NormalizedMatch[], team: SessionTeam, window: {
|
|
34
|
+
businessDay: string;
|
|
35
|
+
startMs: number;
|
|
36
|
+
endMs: number;
|
|
37
|
+
}): SquadSession | null;
|
|
38
|
+
export type SessionReviewStatus = 'sent' | 'dry_run' | 'pending_delivery' | 'blocked' | 'skipped';
|
|
39
|
+
export interface SessionReviewRecord {
|
|
40
|
+
squadId: string;
|
|
41
|
+
sessionKey: string;
|
|
42
|
+
matchIds: string[];
|
|
43
|
+
lastMatchEndMs: number;
|
|
44
|
+
status: SessionReviewStatus;
|
|
45
|
+
detail: string | null;
|
|
46
|
+
message: string | null;
|
|
47
|
+
attempts: number;
|
|
48
|
+
updatedAt: string;
|
|
49
|
+
}
|
|
50
|
+
/** Private Lab storage for the review ledger; deliberately not part of the tenant-aware repository port. */
|
|
51
|
+
export interface SessionReviewLedger {
|
|
52
|
+
getSessionReview(squadId: string, sessionKey: string): SessionReviewRecord | null;
|
|
53
|
+
putSessionReview(record: SessionReviewRecord): void;
|
|
54
|
+
getSessionReviewMeta(key: string): string | null;
|
|
55
|
+
setSessionReviewMeta(key: string, value: string): void;
|
|
56
|
+
latestPrefetchFinishedMs(): number | null;
|
|
57
|
+
}
|
|
58
|
+
/** The squad's own ranked history in the 30 days before the session, used as "平时". */
|
|
59
|
+
export declare function sessionBaseline(matches: readonly NormalizedMatch[], team: SessionTeam, session: SquadSession): SquadMatch[];
|
|
60
|
+
export interface BuildSessionReviewInput {
|
|
61
|
+
session: SquadSession;
|
|
62
|
+
baseline: readonly SquadMatch[];
|
|
63
|
+
team: SessionTeam;
|
|
64
|
+
/** Compact review facts per match id; null when telemetry is missing. */
|
|
65
|
+
facts: ReadonlyMap<string, MatchReviewFacts | null>;
|
|
66
|
+
playerNames?: ReadonlyMap<string, string>;
|
|
67
|
+
timezone: string;
|
|
68
|
+
/** Link shown at the end of the review; the delivery layer decides what it points to. */
|
|
69
|
+
link?: string;
|
|
70
|
+
now: Date;
|
|
71
|
+
}
|
|
72
|
+
export declare function buildSessionReview(input: BuildSessionReviewInput): SessionReviewPresentation;
|