feat(iit): harden QC pipeline consistency and release artifacts
Implement IIT quality workflow hardening across eQuery deduplication, guard metadata validation, timeline/readability improvements, and chat evidence fallbacks, then synchronize release and development documentation for deployment handoff. Includes migration/scripts for open eQuery dedupe guards, orchestration/status semantics, report/tool readability fixes, and updated module status plus deployment checklist. Made-with: Cursor
This commit is contained in:
@@ -173,25 +173,36 @@ async function aggregateRecordSummary(
|
||||
: Prisma.sql`WHERE es.project_id = ${projectId}`;
|
||||
|
||||
const rows: number = await prisma.$executeRaw`
|
||||
UPDATE iit_schema.record_summary rs
|
||||
SET
|
||||
events_total = agg.events_total,
|
||||
events_passed = agg.events_passed,
|
||||
events_failed = agg.events_failed,
|
||||
events_warning = agg.events_warning,
|
||||
fields_total = agg.fields_total,
|
||||
fields_passed = agg.fields_passed,
|
||||
fields_failed = agg.fields_failed,
|
||||
d1_issues = agg.d1_issues,
|
||||
d2_issues = agg.d2_issues,
|
||||
d3_issues = agg.d3_issues,
|
||||
d5_issues = agg.d5_issues,
|
||||
d6_issues = agg.d6_issues,
|
||||
d7_issues = agg.d7_issues,
|
||||
top_issues = agg.top_issues,
|
||||
latest_qc_status = agg.worst_status,
|
||||
latest_qc_at = NOW(),
|
||||
updated_at = NOW()
|
||||
INSERT INTO iit_schema.record_summary (
|
||||
id, project_id, record_id,
|
||||
last_updated_at, updated_at,
|
||||
events_total, events_passed, events_failed, events_warning,
|
||||
fields_total, fields_passed, fields_failed,
|
||||
d1_issues, d2_issues, d3_issues, d5_issues, d6_issues, d7_issues,
|
||||
top_issues, latest_qc_status, latest_qc_at
|
||||
)
|
||||
SELECT
|
||||
gen_random_uuid(),
|
||||
agg.project_id,
|
||||
agg.record_id,
|
||||
agg.last_qc_at,
|
||||
NOW(),
|
||||
agg.events_total,
|
||||
agg.events_passed,
|
||||
agg.events_failed,
|
||||
agg.events_warning,
|
||||
agg.fields_total,
|
||||
agg.fields_passed,
|
||||
agg.fields_failed,
|
||||
agg.d1_issues,
|
||||
agg.d2_issues,
|
||||
agg.d3_issues,
|
||||
agg.d5_issues,
|
||||
agg.d6_issues,
|
||||
agg.d7_issues,
|
||||
agg.top_issues,
|
||||
agg.worst_status,
|
||||
agg.last_qc_at
|
||||
FROM (
|
||||
SELECT
|
||||
es.project_id,
|
||||
@@ -223,13 +234,32 @@ async function aggregateRecordSummary(
|
||||
)
|
||||
) FILTER (WHERE es.status IN ('FAIL', 'WARNING')),
|
||||
'[]'::jsonb
|
||||
) AS top_issues
|
||||
) AS top_issues,
|
||||
COALESCE(MAX(es.last_qc_at), NOW()) AS last_qc_at
|
||||
FROM iit_schema.qc_event_status es
|
||||
${whereClause}
|
||||
GROUP BY es.project_id, es.record_id
|
||||
) agg
|
||||
WHERE rs.project_id = agg.project_id
|
||||
AND rs.record_id = agg.record_id
|
||||
ON CONFLICT (project_id, record_id)
|
||||
DO UPDATE SET
|
||||
events_total = EXCLUDED.events_total,
|
||||
events_passed = EXCLUDED.events_passed,
|
||||
events_failed = EXCLUDED.events_failed,
|
||||
events_warning = EXCLUDED.events_warning,
|
||||
fields_total = EXCLUDED.fields_total,
|
||||
fields_passed = EXCLUDED.fields_passed,
|
||||
fields_failed = EXCLUDED.fields_failed,
|
||||
d1_issues = EXCLUDED.d1_issues,
|
||||
d2_issues = EXCLUDED.d2_issues,
|
||||
d3_issues = EXCLUDED.d3_issues,
|
||||
d5_issues = EXCLUDED.d5_issues,
|
||||
d6_issues = EXCLUDED.d6_issues,
|
||||
d7_issues = EXCLUDED.d7_issues,
|
||||
top_issues = EXCLUDED.top_issues,
|
||||
latest_qc_status = EXCLUDED.latest_qc_status,
|
||||
latest_qc_at = EXCLUDED.latest_qc_at,
|
||||
last_updated_at = EXCLUDED.latest_qc_at,
|
||||
updated_at = NOW()
|
||||
`;
|
||||
|
||||
return rows;
|
||||
|
||||
Reference in New Issue
Block a user