from simorgh.apps.modules.registry import (
    CapabilitySpec,
    FeatureSpec,
    ModuleManifest,
    register_module,
)

register_module(
    ModuleManifest(
        name="projects",
        version=1,
        domain="business",
        label_key="projects.module_label",
        description="Projects — project planning with phases, milestones, and team management",
        capabilities=(
            CapabilitySpec(slug="management", label_key="projects.capabilities.management",
                          description="Project management", icon="folder"),
            CapabilitySpec(slug="tasks", label_key="projects.capabilities.tasks",
                          description="Task management", icon="check-square"),
            CapabilitySpec(slug="collaboration", label_key="projects.capabilities.collaboration",
                          description="Team collaboration", icon="message-square"),
        ),
        features=(
            FeatureSpec(code="management.project_management", label_key="projects.features.project_management", scope="tenant", default_enabled=True, description="Create and manage projects with status lifecycle"),
            FeatureSpec(code="management.project_phases", label_key="projects.features.project_phases", scope="tenant", default_enabled=True, description="Organise projects into ordered phases"),
            FeatureSpec(code="management.milestones", label_key="projects.features.milestones", scope="tenant", default_enabled=True, description="Track key milestones and deliverables"),
            FeatureSpec(code="collaboration.team_management", label_key="projects.features.team_management", scope="tenant", default_enabled=True, description="Project member roles and permissions"),
            FeatureSpec(code="management.gantt_view", label_key="projects.features.gantt_view", scope="tenant", description="Visual Gantt chart timeline for project scheduling"),
            FeatureSpec(code="management.project_templates", label_key="projects.features.project_templates", scope="tenant", description="Reusable project templates with predefined phases"),
        ),
        permissions=(
            "projects.project.view",
            "projects.project.create",
            "projects.project.update",
            "projects.project.delete",
            "projects.member.manage",
            "projects.phase.manage",
            "projects.milestone.manage",
        ),
        events=(
            "projects.project.created",
            "projects.project.status_changed",
            "projects.project.completed",
            "projects.project.member_added",
            "projects.project.member_removed",
            "projects.milestone.completed",
        ),
    )
)
