"""BPM API URL routing."""

from __future__ import annotations

from django.urls import path

from simorgh.apps.bpm.api import views

urlpatterns = [
    # Frameworks
    path("frameworks/", views.framework_list, name="bpm-framework-list"),
    path("frameworks/<str:code>/elements/", views.framework_elements, name="bpm-framework-elements"),

    # Processes
    path("processes/", views.process_list_create, name="bpm-process-list"),
    path("processes/<uuid:public_id>/", views.process_detail, name="bpm-process-detail"),
    path("processes/<uuid:public_id>/raci/", views.process_raci, name="bpm-process-raci"),
    path("processes/<uuid:public_id>/kpis/", views.process_kpis, name="bpm-process-kpis"),
    path("processes/<uuid:public_id>/rules/", views.process_rules, name="bpm-process-rules"),
    path(
        "processes/<uuid:public_id>/control-points/",
        views.process_control_points,
        name="bpm-process-control-points",
    ),
    path("processes/<uuid:public_id>/io/", views.process_io, name="bpm-process-io"),
    path("processes/<uuid:public_id>/steps/", views.process_steps, name="bpm-process-steps"),
    path("processes/<uuid:public_id>/roles/", views.process_roles, name="bpm-process-roles"),

    # Instances
    path("instances/", views.instance_list_create, name="bpm-instance-list"),
    path("instances/<uuid:public_id>/", views.instance_detail, name="bpm-instance-detail"),
    path(
        "instances/<uuid:public_id>/steps/<int:step_id>/",
        views.instance_step_update,
        name="bpm-instance-step-update",
    ),
    path(
        "instances/<uuid:public_id>/control-points/<str:cp_code>/execute/",
        views.instance_cp_execute,
        name="bpm-instance-cp-execute",
    ),
    path(
        "instances/<uuid:public_id>/kpis/<str:kpi_code>/measure/",
        views.instance_kpi_measure,
        name="bpm-instance-kpi-measure",
    ),
    path(
        "instances/<uuid:public_id>/kpi-gauges/",
        views.instance_kpi_gauges,
        name="bpm-instance-kpi-gauges",
    ),

    # KPI dashboard
    path("kpis/dashboard/", views.kpi_dashboard, name="bpm-kpi-dashboard"),

    # Benchmarking (Phase 13)
    path("benchmarks/", views.benchmark_list, name="bpm-benchmark-list"),
    path(
        "processes/<uuid:public_id>/benchmark-comparisons/",
        views.process_benchmark_comparisons,
        name="bpm-process-benchmark-comparisons",
    ),
    path(
        "processes/<uuid:public_id>/benchmark-comparisons/create/",
        views.process_benchmark_comparisons_create,
        name="bpm-process-benchmark-comparisons-create",
    ),
    path(
        "processes/<uuid:public_id>/benchmark-summary/",
        views.process_benchmark_summary,
        name="bpm-process-benchmark-summary",
    ),

    # Maturity Assessment (Phase 14)
    path("maturity/levels/", views.maturity_levels, name="bpm-maturity-levels"),
    path("maturity/heatmap/", views.maturity_heatmap, name="bpm-maturity-heatmap"),
    path(
        "processes/<uuid:public_id>/maturity/",
        views.process_maturity_assessments,
        name="bpm-process-maturity-list",
    ),
    path(
        "processes/<uuid:public_id>/maturity/create/",
        views.process_maturity_assessments_create,
        name="bpm-process-maturity-create",
    ),
    path(
        "processes/<uuid:public_id>/maturity/<uuid:assessment_id>/",
        views.process_maturity_assessment_detail,
        name="bpm-process-maturity-detail",
    ),
    path(
        "processes/<uuid:public_id>/maturity/<uuid:assessment_id>/actions/create/",
        views.process_maturity_action_create,
        name="bpm-process-maturity-action-create",
    ),
    path(
        "processes/<uuid:public_id>/maturity/<uuid:assessment_id>/actions/<uuid:action_id>/status/",
        views.process_maturity_action_status,
        name="bpm-process-maturity-action-status",
    ),

    # AI Process Advisor (Phase 15)
    path("ai/query/", views.ai_nl_query, name="bpm-ai-nl-query"),
    path(
        "processes/<uuid:public_id>/ai/kpi-anomalies/",
        views.process_ai_kpi_anomalies,
        name="bpm-ai-kpi-anomalies",
    ),
    path(
        "processes/<uuid:public_id>/ai/raci-suggest/",
        views.process_ai_raci_suggest,
        name="bpm-ai-raci-suggest",
    ),
    path(
        "processes/<uuid:public_id>/ai/gaps/",
        views.process_ai_gaps,
        name="bpm-ai-gaps",
    ),
    path(
        "processes/<uuid:public_id>/ai/recommendations/",
        views.process_ai_recommendations,
        name="bpm-ai-recommendations",
    ),
]
