feat: add coordination-ROI band to member Work History
Surfaces "rework saved" at the top of the teammate Work History dialog: a transparent heuristic over collisions Hermes caught early (eligible = gitOverlap or critical, with an intervention), credit split across involved engineers. Shows hard counts (clashes caught, conflict-free files) plus an info-tooltip breakdown of the estimate. - shared: optional MemberWorkHistoryRoi field (back-compat, self-zeroes) - backend: query collisions + interventions in getMemberWorkHistory, computeRoi helper - frontend: RoiBand + RoiTooltip components, hidden when no clashes Implements docs/plans/work-history-roi.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LuV8W8oNYRsDWKoqK8Mkqc
This commit is contained in:
@@ -56,5 +56,6 @@ export type {
|
||||
MemberWorkHistory,
|
||||
MemberWorkHistoryEvent,
|
||||
MemberWorkHistoryFile,
|
||||
MemberWorkHistoryRoi,
|
||||
MemberWorkHistorySource,
|
||||
} from './member-history.js';
|
||||
|
||||
@@ -33,4 +33,24 @@ export interface MemberWorkHistory {
|
||||
};
|
||||
files: MemberWorkHistoryFile[];
|
||||
timeline: MemberWorkHistoryEvent[];
|
||||
/**
|
||||
* Coordination ROI summary — clashes Hermes caught for this member. Optional
|
||||
* so pods with no collisions / older payloads render without the band.
|
||||
*/
|
||||
roi?: MemberWorkHistoryRoi;
|
||||
}
|
||||
|
||||
export interface MemberWorkHistoryRoi {
|
||||
/** Estimated rework minutes saved (heuristic, labeled "~/est." in UI). */
|
||||
savedMinutes: number;
|
||||
/** Eligible collisions caught early (hard count). */
|
||||
clashesCaught: number;
|
||||
/** Distinct files that hit an eligible clash. */
|
||||
filesDeconflicted: number;
|
||||
/** Member files in flight that never hit a clash. */
|
||||
conflictFreeFiles: number;
|
||||
/** Total member files in flight (git changedFiles). */
|
||||
totalFiles: number;
|
||||
/** Per-kind breakdown for the tooltip. */
|
||||
breakdown: { label: string; count: number; minutesEach: number }[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user