from __future__ import annotations

from jarvis_gateway.adapters.base import BaseAdapter
from jarvis_gateway.contracts import (
    ActionDescriptor,
    ActionMode,
    AttentionItem,
    DisplayPolicy,
    KpiItem,
    ModuleId,
    ModuleSnapshot,
    ModuleStatus,
    Sensitivity,
    Severity,
    SourceHealth,
    SourceType,
    utcnow,
)


class DisabledFinanceAdapter(BaseAdapter):
    module_id = ModuleId.FINANCE
    title = "FinanceManager"

    def get_snapshot(self) -> ModuleSnapshot:
        now = utcnow()
        action = ActionDescriptor(label="Open Finance", href="/finance", mode=ActionMode.LINK_ONLY, sensitivity=Sensitivity.SENSITIVE, blocked_reason=None, preview_required=False, confirm_required=False, audit_required=False)
        return ModuleSnapshot(
            module_id=ModuleId.FINANCE,
            title=self.title,
            status=ModuleStatus.DEGRADED,
            sensitivity=Sensitivity.SENSITIVE,
            display_policy=DisplayPolicy.SUMMARY,
            last_success_at=None,
            last_attempt_at=now,
            stale_after_seconds=300,
            degraded_reason="finance_adapter_disabled",
            source_health=SourceHealth(reachable=False, latency_ms=None, source_type=SourceType.STATIC_CONFIG, version="disabled", contract_version="jarvis.module_snapshot.v1", last_success_at=None, last_error_redacted=None, stale=True),
            kpis=[KpiItem(key="adapter_mode", label="Adapter", value="disabled", unit=None, severity=Severity.INFO, sensitivity=Sensitivity.INTERNAL, display_policy=DisplayPolicy.SUMMARY, help_text="Finance live read-only adapter disabled.")],
            attention_items=[AttentionItem(id="att_finance_disabled", module_id=ModuleId.FINANCE, title="Finance Adapter deaktiviert", message="FinanceManager Integration ist bewusst deaktiviert.", severity=Severity.INFO, sensitivity=Sensitivity.SENSITIVE, created_at=now, action=action, dedupe_key="finance.disabled")],
            links=[action],
            primary_action=action,
            contract_version="jarvis.module_snapshot.v1",
        )
