This commit is contained in:
35
src/services/storyEngine/narrativeTelemetry.ts
Normal file
35
src/services/storyEngine/narrativeTelemetry.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
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}。`,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user