feat: add project usage analytics with ECharts
This commit is contained in:
@@ -123,14 +123,23 @@ async function main() {
|
||||
assert.strictEqual(result.overview.mcpCalls, 2);
|
||||
assert.strictEqual(result.overview.mcpFailures, 1, 'done=true 的失败调用仍应计入失败');
|
||||
assert.strictEqual(result.overview.skillMentions, 1);
|
||||
assert.strictEqual(result.overview.projects, 1);
|
||||
assert.strictEqual(result.overview.projectSessions, 1);
|
||||
assert.strictEqual(result.overview.unassignedProjectSessions, 0);
|
||||
assert.strictEqual(result.mcpStatus.completed, 1);
|
||||
assert.strictEqual(result.mcpStatus.failed, 1);
|
||||
assert.strictEqual(result.mcpTools[0].server, 'ccweb');
|
||||
assert.strictEqual(result.mcpTools[0].calls, 1, '同调用数时应按工具名稳定排序');
|
||||
assert.strictEqual(result.mcpTools[0].detailCallsReturned, 1);
|
||||
assert.strictEqual(result.skills[0].name, 'openai-docs');
|
||||
assert.strictEqual(result.projects[0].name, 'usage-project');
|
||||
assert.strictEqual(result.projects[0].sessions, 1);
|
||||
assert.strictEqual(result.projects[0].messages, 2);
|
||||
assert.strictEqual(result.projects[0].mcpCalls, 2);
|
||||
assert.strictEqual(result.recentSessions[0].projectName, 'usage-project');
|
||||
assert.strictEqual(result.mcpRecentCalls[0].timestamp, '2026-07-28T02:00:00.000Z');
|
||||
assert(result.trend.find((row) => row.date === '2026-07-28')?.mcpCalls === 2);
|
||||
assert(result.trend.find((row) => row.date === '2026-07-28')?.projects === 1);
|
||||
const serialized = JSON.stringify(result);
|
||||
assert(!serialized.includes('secret-body'));
|
||||
assert(!serialized.includes('secret-result'));
|
||||
@@ -145,6 +154,7 @@ async function main() {
|
||||
timeZone: 'UTC',
|
||||
mcpToolLimit: 1,
|
||||
skillLimit: 1,
|
||||
projectLimit: 1,
|
||||
mcpDetailLimit: 1,
|
||||
});
|
||||
assert.strictEqual(limited.coverage.distinctMcpTools, 2);
|
||||
@@ -154,6 +164,9 @@ async function main() {
|
||||
assert.strictEqual(limited.mcpTools[0].detailCallsReturned, 1);
|
||||
assert.strictEqual(limited.coverage.distinctSkills, 1);
|
||||
assert.strictEqual(limited.coverage.returnedSkills, 1);
|
||||
assert.strictEqual(limited.coverage.distinctProjects, 1);
|
||||
assert.strictEqual(limited.coverage.returnedProjects, 1);
|
||||
assert.strictEqual(limited.projects.length, 1);
|
||||
|
||||
fixture.messages.push({ role: 'user', content: '增量消息', timestamp: '2026-07-30T04:00:00.000Z' });
|
||||
writeSession(sessionsDir, fixture);
|
||||
|
||||
Reference in New Issue
Block a user