"""Platform-level Reporting Engine module manifest."""

from __future__ import annotations

from simorgh.apps.modules.registry import (
    CapabilitySpec,
    FeatureSpec,
    ModuleManifest,
    register_module,
)

register_module(
    ModuleManifest(
        name="reporting",
        version=1,
        label_key="reporting.module_label",
        description=(
            "Core reporting engine — report viewer, filters, exports, "
            "scheduled reports, and KPI dashboards.  All business modules "
            "connect through the report/KPI/dashboard registries."
        ),
        domain="platform",
        capabilities=(
            CapabilitySpec(slug="reports", label_key="reporting.capabilities.reports",
                          description="Report definitions and execution", icon="bar-chart"),
            CapabilitySpec(slug="dashboards", label_key="reporting.capabilities.dashboards",
                          description="Dashboards and KPIs", icon="layout-dashboard"),
        ),
        features=(
            FeatureSpec(
                code="reports.report_viewer",
                label_key="reporting.features.viewer",
                scope="tenant",
            ),
            FeatureSpec(
                code="reports.report_filters",
                label_key="reporting.features.filters",
                scope="tenant",
            ),
            FeatureSpec(
                code="reports.report_exports",
                label_key="reporting.features.exports",
                scope="tenant",
            ),
            FeatureSpec(
                code="reports.scheduled_reports",
                label_key="reporting.features.scheduled",
                scope="tenant",
            ),
            FeatureSpec(
                code="dashboards.kpi_dashboards",
                label_key="reporting.features.kpi_dashboards",
                scope="tenant",
            ),
        ),
        permissions=(
            "reporting.reports.view",
            "reporting.reports.create",
            "reporting.reports.update",
            "reporting.reports.delete",
            "reporting.reports.execute",
            "reporting.reports.export",
            "reporting.schedules.view",
            "reporting.schedules.create",
            "reporting.schedules.update",
            "reporting.schedules.delete",
            "reporting.kpis.view",
            "reporting.kpis.create",
            "reporting.kpis.update",
            "reporting.kpis.delete",
            "reporting.dashboards.view",
            "reporting.dashboards.create",
            "reporting.dashboards.update",
            "reporting.dashboards.delete",
            "reporting.executions.view",
        ),
        events=(
            "reporting.report_executed",
            "reporting.report_scheduled",
        ),
    )
)
