"""Catalog Engine — module manifest."""

from __future__ import annotations

from simorgh.apps.modules.registry import CapabilitySpec, FeatureSpec, ModuleManifest, register_module

register_module(
    ModuleManifest(
        name="catalog",
        version=1,
        domain="platform",
        label_key="catalog.module_label",
        description="Catalog Engine — metadata and discoverability for products, services, and catalogs",
        permissions=(
            "catalog.category.view",
            "catalog.category.manage",
            "catalog.item.view",
            "catalog.item.create",
            "catalog.item.update",
            "catalog.item.publish",
            "catalog.item.delete",
        ),
        events=(
            "catalog.category_created",
            "catalog.category_updated",
            "catalog.category_deleted",
            "catalog.item_created",
            "catalog.item_updated",
            "catalog.item_submitted_for_review",
            "catalog.item_published",
            "catalog.item_retired",
            "catalog.item_reverted_to_draft",
            "catalog.version_created",
        ),
        capabilities=(
            CapabilitySpec(slug="management", label_key="catalog.capabilities.management",
                          description="Catalog management and workflows", icon="box"),
            CapabilitySpec(slug="search", label_key="catalog.capabilities.search",
                          description="Search and discovery", icon="search"),
            CapabilitySpec(slug="ai", label_key="catalog.capabilities.ai",
                          description="AI-powered features", icon="sparkles"),
        ),
        features=(
            FeatureSpec(
                code="management.catalog_management",
                label_key="catalog.features.catalog_management",
                scope="tenant",
                default_enabled=True,
                is_always_on=True,
                is_platform_internal=True,
                description="Core catalog CRUD operations",
            ),
            FeatureSpec(
                code="management.catalog_workflow",
                label_key="catalog.features.catalog_workflow",
                scope="tenant",
                default_enabled=True,
                description="Draft→Review→Publish→Retire workflow",
            ),
            FeatureSpec(
                code="management.catalog_custom_attributes",
                label_key="catalog.features.catalog_custom_attributes",
                scope="tenant",
                default_enabled=True,
                description="Dynamic custom attributes per catalog item via Custom Fields",
            ),
            FeatureSpec(
                code="search.catalog_search",
                label_key="catalog.features.catalog_search",
                scope="tenant",
                default_enabled=True,
                description="Global and semantic search integration",
            ),
            FeatureSpec(
                code="ai.catalog_ai",
                label_key="catalog.features.catalog_ai",
                scope="tenant",
                description="AI-powered catalog enrichment, description generation, and classification",
            ),
        ),
    )
)
