ixg_platform/dsp_platform/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

31 lines
1.3 KiB
Python

from django.contrib import admin
from django.http import HttpResponseRedirect
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from rest_framework.authtoken import views as drf_auth
urlpatterns = [
path("", lambda r: HttpResponseRedirect("/admin/")),
path("grappelli/", include("grappelli.urls")),
path("admin/", admin.site.urls),
path("oidc/", include("mozilla_django_oidc.urls")),
path("api/auth/", drf_auth.obtain_auth_token),
path("api/", include("apps.users.urls")),
path("api/", include("apps.subscriptions.urls")),
path("api/", include("apps.batches.urls")),
path("api/", include("apps.qc.urls")),
path("api/", include("apps.shipments.urls")),
path("api/", include("apps.documents.urls")),
path("api/", include("apps.capa.urls")),
path("api/", include("apps.esg.urls")),
path("api/", include("apps.compliance.urls")),
path("api/", include("apps.ai.urls")),
path("api/", include("apps.notifications.urls")),
path("ops/", include("apps.ops.urls")),
path("portal/", include("apps.buyer.urls")),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)