Persist QA feature evidence
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
|
||||
|
||||
def read_text(relative_path: str) -> str:
|
||||
return (ROOT / relative_path).read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_qa_feature_evidence_contract_is_documented_and_rendered() -> None:
|
||||
schema = read_text("backend/app/schemas/qa.py")
|
||||
quality_panel = read_text("frontend/src/components/quality/QualityResultsPanel.tsx")
|
||||
api_contracts = read_text("docs/API_CONTRACTS.md")
|
||||
|
||||
for field_name in ("match_evidence", "false_positive_evidence", "false_negative_evidence"):
|
||||
assert field_name in schema
|
||||
assert field_name in quality_panel
|
||||
assert field_name in api_contracts
|
||||
|
||||
assert "Feature-level QA/QC evidence" in quality_panel
|
||||
assert "Matched feature ids" in quality_panel
|
||||
assert "False positive feature ids" in quality_panel
|
||||
assert "False negative feature ids" in quality_panel
|
||||
assert "evidenceLabel" in quality_panel
|
||||
|
||||
|
||||
def test_qa_services_persist_feature_evidence_without_new_migrations() -> None:
|
||||
qa_route = read_text("backend/app/api/routes/qa.py")
|
||||
detection_service = read_text("backend/app/services/detection_service.py")
|
||||
segmentation_service = read_text("backend/app/services/segmentation_service.py")
|
||||
migrations = "\n".join(path.name for path in (ROOT / "backend" / "alembic" / "versions").glob("*.py"))
|
||||
|
||||
for field_name in ("match_evidence", "false_positive_evidence", "false_negative_evidence"):
|
||||
assert field_name in qa_route
|
||||
assert field_name in detection_service
|
||||
assert field_name in segmentation_service
|
||||
|
||||
assert "quality_check_items" not in migrations
|
||||
Reference in New Issue
Block a user