feat(ingestion): enrich issues with work item status from GraphQL API
Add a "Phase 1.5" status enrichment step to the issue ingestion pipeline that fetches work item statuses via the GitLab GraphQL API after the standard REST API ingestion completes. Schema changes (migration 021): - Add status_name, status_category, status_color, status_icon_name, and status_synced_at columns to the issues table (all nullable) Ingestion pipeline changes: - New `enrich_issue_statuses_txn()` function that applies fetched statuses in a single transaction with two phases: clear stale statuses for issues that no longer have a status widget, then apply new/updated statuses from the GraphQL response - ProgressEvent variants for status enrichment (complete/skipped) - IngestProjectResult tracks enrichment metrics (seen, enriched, cleared, without_widget, partial_error_count, enrichment_mode, errors) - Robot mode JSON output includes per-project status enrichment details Configuration: - New `sync.fetchWorkItemStatus` config option (defaults true) to disable GraphQL status enrichment on instances without Premium/Ultimate - `LoreError::GitLabAuthFailed` now treated as permanent API error so status enrichment auth failures don't trigger retries Also removes the unnecessary nested SAVEPOINT in store_closes_issues_refs (already runs within the orchestrator's transaction context). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
9
migrations/021_work_item_status.sql
Normal file
9
migrations/021_work_item_status.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
ALTER TABLE issues ADD COLUMN status_name TEXT;
|
||||
ALTER TABLE issues ADD COLUMN status_category TEXT;
|
||||
ALTER TABLE issues ADD COLUMN status_color TEXT;
|
||||
ALTER TABLE issues ADD COLUMN status_icon_name TEXT;
|
||||
ALTER TABLE issues ADD COLUMN status_synced_at INTEGER;
|
||||
CREATE INDEX IF NOT EXISTS idx_issues_project_status_name ON issues(project_id, status_name);
|
||||
|
||||
INSERT INTO schema_version (version, applied_at, description)
|
||||
VALUES (21, strftime('%s', 'now') * 1000, 'Work item status columns for issues');
|
||||
Reference in New Issue
Block a user