Improve daily workflow provenance modeling and UI labels

This commit is contained in:
ي
2026-03-06 21:39:32 +05:30
parent 5d49351c2d
commit 81b29895b9
6 changed files with 87 additions and 4 deletions

View File

@@ -79,6 +79,15 @@ const WorkflowProgressBar: React.FC<WorkflowProgressBarProps> = ({
return 'Ready to Start';
};
const getProvenanceLabel = () => {
const summary = currentWorkflow?.provenanceSummary;
if (!summary) return 'Daily Workflow';
if (summary.generationMode === 'agent_committee') return 'Personalized by Agents';
if (summary.generationMode === 'llm_generation' && !summary.fallbackUsed) return 'AI Personalized Guide';
if (summary.fallbackUsed || summary.generationMode === 'controlled_fallback') return 'Baseline Daily Guide';
return 'Daily Workflow';
};
return (
<motion.div
initial={{ opacity: 0, y: -20 }}
@@ -125,6 +134,16 @@ const WorkflowProgressBar: React.FC<WorkflowProgressBarProps> = ({
fontWeight: 600
}}
/>
<Chip
label={getProvenanceLabel()}
size="small"
sx={{
background: 'rgba(255,255,255,0.08)',
color: 'rgba(255,255,255,0.9)',
border: '1px solid rgba(255,255,255,0.2)',
fontWeight: 600
}}
/>
</Box>
{/* Controls */}

View File

@@ -117,7 +117,11 @@ export const useWorkflowStore = create<WorkflowState>()(
try {
const resp = await apiClient.get('/api/today-workflow', { params: date ? { date } : {} });
const serverWorkflow = resp?.data?.data?.workflow as DailyWorkflow | undefined;
const planSummary = resp?.data?.data?.plan?.provenance_summary;
if (serverWorkflow && Array.isArray(serverWorkflow.tasks)) {
if (planSummary && !serverWorkflow.provenanceSummary) {
serverWorkflow.provenanceSummary = planSummary;
}
const derived = computeProgressAndNavigation(serverWorkflow);
set({
currentWorkflow: serverWorkflow,

View File

@@ -5,6 +5,14 @@ export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'skipped';
export type TaskPriority = 'high' | 'medium' | 'low';
export type ActionType = 'navigate' | 'modal' | 'external';
export type WorkflowStatus = 'not_started' | 'in_progress' | 'completed' | 'paused' | 'stopped';
export type WorkflowGenerationMode = 'agent_committee' | 'llm_generation' | 'llm_pillar_backfill' | 'controlled_fallback';
export interface WorkflowProvenanceSummary {
generationMode: WorkflowGenerationMode;
committeeAgentCount: number;
fallbackUsed: boolean;
taskSourceBreakdown: Partial<Record<WorkflowGenerationMode, number>>;
}
export interface TodayTask {
id: string;
@@ -44,6 +52,7 @@ export interface DailyWorkflow {
completedAt?: Date;
totalEstimatedTime: number; // in minutes
actualTimeSpent: number; // in minutes
provenanceSummary?: WorkflowProvenanceSummary;
}
export interface WorkflowProgress {
@@ -54,6 +63,7 @@ export interface WorkflowProgress {
nextTask?: TodayTask;
estimatedTimeRemaining: number; // in minutes
actualTimeSpent: number; // in minutes
provenanceSummary?: WorkflowProvenanceSummary;
}
export interface TaskCompletionData {