Add fluency metrics to Azure Table Storage with unified scoring for team dashboard#303
Add fluency metrics to Azure Table Storage with unified scoring for team dashboard#303
Conversation
Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
…entation Co-authored-by: rajbos <6085745+rajbos@users.noreply.github.com>
|
@copilot I don't see any addition to the team dashboard. I expect the fluency level per team member there. Check the screenshot I made. Ensure fluency per team member is visible on the team dashboard.
|
Co-authored-by: FokkoVeegens <24793348+FokkoVeegens@users.noreply.github.com>
I've added fluency score display per team member in the dashboard leaderboard (commit 4b2b1ed). Changes:
The fluency score uses the same 6-category scoring logic as the individual Fluency Score dashboard, calculating a median across Prompt Engineering, Context Engineering, Agentic, Tool Usage, Customization, and Workflow Integration. Example leaderboard display: Fluency data is automatically included when Azure Tables entities have schema version 4+ (entities uploaded after the backend changes). Users with older data will show as "Skeptic" until their next sync. |
|
@copilot It looks like two different scoring mechanisms are used for the individual fluency score on one hand and the team scores on the other hand. Currently I have a high score in my individual dashboard and a low score in my team dashboard, which is obviously not correct, they should be the same. Change the code to only use one fluency calculation mechanism, which is the original individual fluency score calculation and use it for the team overview as well. Make sure the json files sent to the Azure Storage Account contain all data necessary to make this calculation. Also ensure that when no fluency data exist for a team member, the fluency column must remain empty for that team member. |
…ashboards Co-authored-by: FokkoVeegens <24793348+FokkoVeegens@users.noreply.github.com>
I've unified the fluency scoring calculation (commit cf35848). Both the individual Fluency Score dashboard and team dashboard now use the SAME calculation method. Changes:
Scoring consistency: A user's fluency score will now be IDENTICAL in both the individual Fluency Score dashboard and the team dashboard leaderboard, because they use the same calculation logic. Note: Existing Azure Table entities with schema v1-3 won't have fluency data. Users will see empty fluency cells until their next sync uploads schema v4 entities with the complete metrics. |

The extension computes comprehensive fluency metrics (mode usage, tool adoption, context engineering patterns) from session logs but only syncs basic token counts to Azure Tables. This PR adds fluency metrics to the backend and displays them in the team dashboard leaderboard using the same scoring calculation as the individual Fluency Score dashboard.
Schema Extension
Added schema version 4 with 20+ fluency fields to
BackendAggDailyEntityLike:askModeCount,editModeCount,agentModeCount,planModeCount,customAgentModeCounttoolCallsJson,contextRefsJson,mcpToolsJson,modelSwitchingJson,editScopeJson,agentTypesJson,repositoriesJson,applyUsageJson,sessionDurationJsonmultiTurnSessions,avgTurnsPerSessionmultiFileEdits,avgFilesPerEditcodeBlockApplyRatesessionCountrepoCustomizationRateExample entity:
Sync Service Updates
extractFluencyMetricsFromCache(): Extracts ALL metrics fromSessionFileCache.usageAnalysisand serializes complex objects to JSON, including editScope, agentTypes, repositories, applyUsage, and sessionDurationprocessCachedSessionFile(): Updated to include complete fluency metrics in daily rollupscreateDailyAggEntity(): Now accepts optionalfluencyMetricsparameter with all fieldsAggregation Logic
Enhanced
upsertDailyRollup()to merge fluency metrics when multiple sessions contribute to the same rollup key:mergeJsonMetrics()helpermergeRepositoriesJson()helperTeam Dashboard Integration
Added fluency score display per team member in the dashboard leaderboard using unified scoring:
calculateFluencyScoreForTeamMember()uses the EXACT same 6-category scoring logic as the individual Fluency Score dashboard (calculateMaturityScores()), ensuring consistent scores across both viewsgetDashboardData()extracts and aggregates fluency metrics from Azure Table entities per user, deserializing all JSON fieldsScoring Consistency
Both the individual Fluency Score dashboard and team dashboard now use the SAME scoring method:
calculateMaturityScores()calculateFluencyScoreForTeamMember()with IDENTICAL 6-category logic, thresholds, and boostersThis ensures a user's fluency score is consistent across both views, solving the issue where users had different scores in different dashboards.
Documentation
FLUENCY-METRICS-SCHEMA.md: Complete schema reference with JSON formats and aggregation rulesFLUENCY-DATA-IMPLEMENTATION.md: Implementation summary and team dashboard integration detailsCompatibility
Backward compatible with schema versions 1-3. Team members with older data will display empty fluency cells until their next sync uploads schema v4 entities with complete metrics.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.