"""Correspondence module manifest — registers with the platform module system."""

from simorgh.apps.modules.registry import (
    CapabilitySpec,
    FeatureFlagSpec,
    FeatureSpec,
    ModuleManifest,
    register_module,
)

register_module(
    ModuleManifest(
        name="correspondence",
        version=1,
        domain="business",
        label_key="correspondence.module_label",
        description="Correspondence Management — incoming/outgoing letters, memos, announcements, notices",
        permissions=(
            "correspondence.letter.view",
            "correspondence.letter.add",
            "correspondence.letter.change",
            "correspondence.letter.delete",
            "correspondence.letter.archive",
            "correspondence.letter.assign",
            "correspondence.category.view",
            "correspondence.category.add",
            "correspondence.category.change",
            "correspondence.category.delete",
            "correspondence.template.view",
            "correspondence.template.add",
            "correspondence.template.change",
            "correspondence.template.delete",
            "correspondence.numbering.view",
            "correspondence.numbering.add",
            "correspondence.numbering.change",
            "correspondence.numbering.delete",
            "correspondence.letterhead.view",
            "correspondence.letterhead.add",
            "correspondence.letterhead.change",
            "correspondence.letterhead.delete",
            "correspondence.report.view",
        ),
        events=(
            "correspondence.letter.created",
            "correspondence.letter.updated",
            "correspondence.letter.registered",
            "correspondence.letter.sent",
            "correspondence.letter.received",
            "correspondence.letter.archived",
            "correspondence.letter.cancelled",
            "correspondence.letter.status_changed",
            "correspondence.reply.added",
        ),
        capabilities=(
            CapabilitySpec(slug="letters", label_key="correspondence.capabilities.letters",
                          description="Letter management and tracking", icon="mail"),
            CapabilitySpec(slug="templates", label_key="correspondence.capabilities.templates",
                          description="Templates and numbering", icon="template"),
            CapabilitySpec(slug="search", label_key="correspondence.capabilities.search",
                          description="Search and reports", icon="search"),
        ),
        features=(
            FeatureSpec(
                code="letters.letter_management",
                label_key="correspondence.features.letter_management",
                scope="tenant",
                default_enabled=True,
                description="Create, register, track all correspondence types",
            ),
            FeatureSpec(
                code="templates.template_management",
                label_key="correspondence.features.template_management",
                scope="tenant",
                default_enabled=True,
                description="Letter templates, numbering templates, letterhead templates",
            ),
            FeatureSpec(
                code="letters.category_management",
                label_key="correspondence.features.category_management",
                scope="tenant",
                default_enabled=True,
                description="Hierarchical subject and unit categories",
            ),
            FeatureSpec(
                code="search.full_text_search",
                label_key="correspondence.features.full_text_search",
                scope="tenant",
                default_enabled=True,
                description="Full-text search across correspondence archive",
            ),
            FeatureSpec(
                code="search.advanced_reports",
                label_key="correspondence.features.advanced_reports",
                scope="tenant",
                default_enabled=False,
                description="Correspondence volume, status, and trend reports",
            ),
        ),
        feature_flags=(
            FeatureFlagSpec(
                name="auto_numbering",
                label_key="correspondence.ff.auto_numbering",
                default=True,
                scope="tenant",
            ),
            FeatureFlagSpec(
                name="allow_external_recipients",
                label_key="correspondence.ff.allow_external_recipients",
                default=True,
                scope="tenant",
            ),
        ),
    )
)
