ixg_platform/apps/compliance/urls.py
ixgadmin 08096e168f P99C: compliance automation - CoA auto-generation and EUDR due diligence
- Versioned product specification table (Unrefined Shea Butter v1.0 seed) with
  spec-based QC evaluation replacing hard-coded thresholds
- Structured QC results with test methods and four-eyes verification
  (submitter cannot self-approve)
- reportlab IXG Quality Summary PDF auto-generated on quality approval,
  SHA-256 hashed; original independent lab PDF kept authoritative
- CertificateOfAnalysis version/status/hash/approval/supersede lifecycle;
  commercial release publishes to buyers and triggers notification
- EUDR evidence workflow: Facility, OriginZone, CollectorGroup, HarvestIntake,
  IntakeBatchLineage, DueDiligenceCase, EUDREvidence, RiskAssessment,
  MitigationAction, DueDiligenceStatementReference with rule-based
  completeness check and risk assessment (no AI legal conclusions)
- Ops portal: QC Approvals, CoA Reviews, EUDR Compliance screens
- Buyer portal: /portal/compliance page
- 22 automated tests covering four-eyes, CAPA, PDF+hash, publish/notify,
  EUDR blocks and buyer isolation
2026-08-05 13:58:39 +00:00

20 lines
901 B
Python

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from . import views
router = DefaultRouter()
router.register("product-specs", views.ProductSpecificationViewSet)
router.register("facilities", views.FacilityViewSet)
router.register("origin-zones", views.OriginZoneViewSet)
router.register("collector-groups", views.CollectorGroupViewSet)
router.register("harvest-intakes", views.HarvestIntakeViewSet)
router.register("intake-batch-lineage", views.IntakeBatchLineageViewSet)
router.register("eudr-cases", views.DueDiligenceCaseViewSet)
router.register("eudr-evidence", views.EUDREvidenceViewSet)
router.register("risk-assessments", views.RiskAssessmentViewSet)
router.register("mitigation-actions", views.MitigationActionViewSet)
router.register("dds-references", views.DueDiligenceStatementReferenceViewSet)
urlpatterns = [
path("", include(router.urls)),
]