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:
2026-03-08 21:54:35 +08:00
parent ac724266c1
commit a666649fd4
57 changed files with 28637 additions and 316 deletions

View File

@@ -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;