from simorgh.apps.modules.registry import (
    CapabilitySpec,
    FeatureSpec,
    ModuleManifest,
    register_module,
)

register_module(
    ModuleManifest(
        name="time_tracking",
        version=1,
        domain="platform",
        label_key="time_tracking.module_label",
        description="Time Tracking — log hours against projects and tasks with approval workflow",
        capabilities=(
            CapabilitySpec(slug="tracking", label_key="time_tracking.capabilities.tracking",
                          description="Time tracking and timesheets", icon="clock"),
        ),
        features=(
            FeatureSpec(code="tracking.time_logging", label_key="time_tracking.features.time_logging", scope="tenant", default_enabled=True, description="Log hours against projects and tasks"),
            FeatureSpec(code="tracking.time_approval", label_key="time_tracking.features.time_approval", scope="tenant", default_enabled=True, description="Manager approval workflow for time entries"),
            FeatureSpec(code="tracking.time_reports", label_key="time_tracking.features.time_reports", scope="tenant", default_enabled=True, description="Time reports by project, user, and date range"),
            FeatureSpec(code="tracking.billable_tracking", label_key="time_tracking.features.billable_tracking", scope="tenant", description="Track billable vs non-billable hours for invoicing"),
        ),
        permissions=(
            "time.entry.create",
            "time.entry.update_own",
            "time.entry.manage_others",
            "time.report.view",
            "time.report.view_all",
        ),
        events=(
            "time.entry.logged",
            "time.entry.approved",
        ),
    )
)
