export type DataOrigin = "production_db" | "runtime_export" | "mixed_with_runtime_export"; export type RawRecord = Record; export type RunListItem = { run_id: string; policy_run_id?: string | null; status?: string | null; current_step?: string | null; platform?: string | null; platform_mode?: string | null; content_format?: string | null; strategy_version?: string | null; demand_content_id?: number | null; demand_name?: string | null; demand_desc?: string | null; validation_status?: string | null; error_code?: string | null; started_at?: string | null; completed_at?: string | null; }; export type RunListResponse = { items: RunListItem[]; page: number; page_size: number; total: number; data_origin: DataOrigin; }; export type RuntimeFileResponse = { run_id: string; filename: string; data_origin: DataOrigin; data?: RawRecord; records?: RawRecord[]; offset?: number; limit?: number; total?: number; }; export type DashboardResponse = { run_id: string; summary: RawRecord; counts: Record; files: Record; validation: RawRecord; final_output_summary: RawRecord; business_summary?: RawRecord; data_origin: DataOrigin; links?: Record; }; export type QueryListResponse = { run_id: string; items: RawRecord[]; total: number; data_origin: DataOrigin; }; export type ContentItemsResponse = { run_id: string; items: RawRecord[]; total: number; data_origin: DataOrigin; }; export type TimelineItem = { source: string; stage?: string | null; event_type?: string | null; status?: string | null; timestamp?: string | null; error_code?: string | null; walk_action_id?: string | null; record: RawRecord; }; export type TimelineResponse = { run_id: string; items: TimelineItem[]; total: number; data_origin: DataOrigin; summary: RawRecord; }; export type FlowInput = { dashboard: DashboardResponse; queries: QueryListResponse; contentItems: ContentItemsResponse; timeline: TimelineResponse; searchQueries: RawRecord[]; searchClues: RawRecord[]; ruleDecisions: RawRecord[]; walkActions: RawRecord[]; sourcePathRecords: RawRecord[]; }; export type FlowLedgerApiResponse = { run_id: string; data_origin: DataOrigin; data_origin_label: string; summary: RawRecord; demand_summary?: RawRecord | null; rows: RawRecord[]; extension_queries: RawRecord[]; debug?: RawRecord | null; }; export type FlowLedgerVideosResponse = { run_id: string; query?: RawRecord | null; videos: RawRecord[]; summary: RawRecord; data_origin: DataOrigin; data_origin_label: string; }; export type FlowLedgerWalkResponse = { run_id: string; query?: RawRecord | null; actions: RawRecord[]; lanes: Record; extension_queries: RawRecord[]; summary: RawRecord; data_origin: DataOrigin; data_origin_label: string; }; export type FlowLedgerVideoResponse = { run_id: string; video?: RawRecord | null; source_paths: RawRecord[]; decision?: RawRecord | null; data_origin: DataOrigin; data_origin_label: string; }; export type FlowLedgerVideoWalkResponse = { run_id: string; root_video?: RawRecord | null; actions: RawRecord[]; summary: RawRecord; data_origin: DataOrigin; data_origin_label: string; }; export type AigcPushPlan = { push_record_id: string; plan_part: string; produce_plan_id: string; crawler_plan_id: string; content_count: number; pushed_at?: string | null; raw_payload?: RawRecord | null; }; export type AigcPushItem = { push_record_id: string; plan_part: string; item_index: number; platform_content_id: string; decision_id?: string | null; content_title?: string | null; author_display_name?: string | null; raw_payload?: RawRecord | null; }; export type AigcPushRecord = { push_record_id: string; run_id: string; policy_run_id?: string | null; platform: string; demand_content_id?: number | null; demand_name?: string | null; demand_dt?: string | null; hive_merge_leve2?: string | null; hive_gap_dt?: string | null; evidence_platform?: string | null; run_label?: string | null; run_status?: string | null; pushed_at?: string | null; push_status: string; source_kind?: string | null; source_ref?: string | null; uploaded_by?: string | null; notes?: string | null; pushed_content_count?: number; crawler_plan_count?: number; plans: AigcPushPlan[]; items: AigcPushItem[]; }; export type AigcPushRecordListResponse = { items: AigcPushRecord[]; total: number; data_origin: DataOrigin; };