Files
Genarrative/src/services/storyEngine/narrativeTelemetry.ts
kdletters cbc27bad4a
Some checks failed
CI / verify (push) Has been cancelled
init with react+axum+spacetimedb
2026-04-26 18:06:23 +08:00

36 lines
1.2 KiB
TypeScript

import type {
NarrativeQaReport,
StoryEngineMemoryState,
} from '../../types';
export interface NarrativeTelemetrySnapshot {
averageActiveThreadCount: number;
companionReactionDensity: number;
endingFamilyCount: number;
unresolvedPayoffCount: number;
}
export function buildTelemetrySnapshot(params: {
memory: StoryEngineMemoryState;
qaReport?: NarrativeQaReport | null;
}) {
return {
averageActiveThreadCount: params.memory.activeThreadIds.length,
companionReactionDensity: params.memory.recentCompanionReactions?.length ?? 0,
endingFamilyCount: params.memory.endingState ? 1 : 0,
unresolvedPayoffCount:
params.qaReport?.issues.filter((issue) => issue.category === 'payoff').length ?? 0,
} satisfies NarrativeTelemetrySnapshot;
}
export function captureNarrativeTelemetry(params: {
memory: StoryEngineMemoryState;
qaReport?: NarrativeQaReport | null;
}) {
const snapshot = buildTelemetrySnapshot(params);
return {
...snapshot,
summary: `当前平均活跃线程 ${snapshot.averageActiveThreadCount},队友反应密度 ${snapshot.companionReactionDensity},未回收 payoff ${snapshot.unresolvedPayoffCount}`,
};
}