diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index 57d50d2..36ac8eb 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -226,8 +226,33 @@ export interface Review { reviewed_at?: string; tenant_id: number; created_at: string; + // ---- Enriched context (joined from task / project / worker / execution) ---- + task_title: string; + task_description: string; + task_input_data: string; + task_output_data: string; + task_priority: string; + task_type: string; + task_status: string; + project_name: string; + project_description: string; + worker_id?: number; + worker_name?: string; + worker_model_name?: string; + worker_provider?: string; + worker_system_prompt?: string; + cost_cents: number; + token_usage: number; + duration_ms: number; } +/** + * Review with full context: task/project/worker/cost joined. + * Now an alias of `Review`, which itself carries all enriched fields. + * Kept for API typing clarity (reviewApi returns ReviewDetail[]). + */ +export interface ReviewDetail extends Review {} + export interface ReviewDecisionPayload { comment: string; status: 'approved' | 'rejected'; @@ -276,6 +301,99 @@ export interface DashboardStats { }; } +// ============ Knowledge Base ============ + +export interface KnowledgeDoc { + id: number; + title: string; + content: string; + doc_type: string; + source?: string; + tags: string; + project_id: number; + tenant_id: number; + created_at: string; + updated_at?: string; +} + +export interface KnowledgeDocCreate { + title: string; + content: string; + doc_type?: string; + source?: string; + tags?: string; + project_id?: number; +} + +export interface KnowledgeSearchResult { + id: number; + title: string; + content: string; + doc_type: string; + tags: string; + score: number; + project_id: number; + created_at?: string; +} + +// ============ Alerts ============ + +export type AlertSeverity = 'critical' | 'warning' | 'info'; + +export interface Alert { + id: number; + alert_type: string; + severity: AlertSeverity; + message: string; + is_read: boolean; + project_id?: number; + worker_id?: number; + tenant_id: number; + created_at: string; +} + +export interface AlertUnreadCount { + count: number; +} + +// ============ Webhooks ============ + +export interface Webhook { + id: number; + url: string; + events: string; + project_id: number; + secret?: string; + tenant_id: number; + created_at: string; +} + +export interface WebhookCreate { + url: string; + events: string; + project_id: number; + secret?: string; +} + +// ============ DAG Execution ============ + +export interface DagExecutePayload { + project_id: number; + task_ids: number[]; +} + +export interface DagExecuteResult { + execution_id?: number; + status: string; + message?: string; + results?: Array<{ + task_id: number; + status: string; + output?: string; + error?: string; + }>; +} + // ============ Generic ============ export interface ApiError {