from fastapi import APIRouter, Depends
from sqlalchemy import select
from app import __version__
from app.api.deps import require_tenant
from app.core.database import get_db
from app.models import PaymentWorkspace, TenantPaymentBundle, PaymentFeatureToggle
router=APIRouter()
@router.get("/health")
async def health(): return {"status":"ok","service":"payment-service","version":__version__}
@router.get("/metrics")
async def metrics(): return {"service":"payment-service","version":__version__,"phase":"14.5","metrics":{"outbox_events":"tenant_scoped","transactions":"tenant_scoped"}}
@router.get("/capabilities")
async def capabilities(tenant_id=Depends(require_tenant),db=Depends(get_db)):
    ws=(await db.execute(select(PaymentWorkspace).where(PaymentWorkspace.tenant_id==tenant_id))).scalars().first()
    bundles=(await db.execute(select(TenantPaymentBundle).where(TenantPaymentBundle.tenant_id==tenant_id,TenantPaymentBundle.is_active.is_(True)))).scalars().all()
    toggles=(await db.execute(select(PaymentFeatureToggle).where(PaymentFeatureToggle.tenant_id==tenant_id))).scalars().all()
    return {"service":"payment","version":__version__,"phase":"14.5","workspace_status":ws.status if ws else "disabled","default_payment_mode":ws.default_payment_mode if ws else "byo_psp","active_bundles":[x.bundle_code for x in bundles],"feature_toggles":{x.key:x.enabled for x in toggles},"payment_sources_supported":["PSP","MERCHANT_FACILITATOR"],"payment_sources_reserved":["CREDIT_PROVIDER"],"contract_versions":{"payment_intent":"v1","callback_ingress":"v1"}}
