from simorgh.apps.modules.registry import (
    CapabilitySpec,
    FeatureSpec,
    ModuleManifest,
    register_module,
)

register_module(
    ModuleManifest(
        name="kb",
        version=1,
        domain="platform",
        label_key="kb.module_label",
        description="Knowledge Base — articles, categories, versioned publishing, feedback",
        permissions=(
            "kb.category.manage",
            "kb.article.view",
            "kb.article.create",
            "kb.article.update",
            "kb.article.publish",
            "kb.article.delete",
        ),
        events=(),
        capabilities=(
            CapabilitySpec(slug="articles", label_key="kb.capabilities.articles",
                          description="Article management and publishing", icon="book"),
        ),
        features=(
            FeatureSpec(
                code="articles.article_management",
                label_key="kb.feature.article_management",
                scope="tenant",
                default_enabled=True,
                description="Create and manage knowledge base articles",
            ),
            FeatureSpec(
                code="articles.article_publishing",
                label_key="kb.feature.article_publishing",
                scope="tenant",
                default_enabled=True,
                description="Draft/publish/archive lifecycle with version snapshots",
            ),
            FeatureSpec(
                code="articles.article_feedback",
                label_key="kb.feature.article_feedback",
                scope="tenant",
                default_enabled=True,
                description="Was-this-helpful ratings per article",
            ),
            FeatureSpec(
                code="articles.category_taxonomy",
                label_key="kb.feature.category_taxonomy",
                scope="tenant",
                default_enabled=True,
                description="Hierarchical category organisation",
            ),
            FeatureSpec(
                code="articles.visibility_control",
                label_key="kb.feature.visibility_control",
                scope="tenant",
                default_enabled=True,
                description="Public/internal/private visibility per article",
            ),
        ),
    )
)
