import { Activity, ArrowUpRight, Box, Database, ShieldCheck, Users, } from "lucide-react"; import { Link } from "react-router-dom"; import { Badge } from "../../components/ui/badge"; import { Button } from "../../components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "../../components/ui/card"; import { t } from "../../lib/i18n"; import PermissionChecker from "./components/PermissionChecker"; const summaryCards = [ { labelKey: "ui.admin.overview.summary.total_tenants", labelFallback: "Total Tenants", value: "-", hintKey: "msg.admin.overview.summary.total_tenants", hintFallback: "Tenant-aware core", icon: Users, }, { labelKey: "ui.admin.overview.summary.oidc_clients", labelFallback: "OIDC Clients", value: "-", hintKey: "msg.admin.overview.summary.oidc_clients", hintFallback: "Hydra registry", icon: ShieldCheck, }, { labelKey: "ui.admin.overview.summary.audit_events_24h", labelFallback: "Audit Events (24h)", value: "-", hintKey: "msg.admin.overview.summary.audit_events_24h", hintFallback: "ClickHouse stream", icon: Activity, }, { labelKey: "ui.admin.overview.summary.policy_gate", labelFallback: "Policy Gate", value: "Planned", hintKey: "msg.admin.overview.summary.policy_gate", hintFallback: "Keto + Admin checks", icon: Database, }, ]; function GlobalOverviewPage() { return (
{t("ui.admin.overview.kicker", "Global Overview")}
{t( "msg.admin.overview.description", "모든 테넌트 공통 지표와 정책 상태를 한 곳에서 확인합니다.", )}
{t(hintKey, hintFallback)}
{t( "msg.admin.overview.playbook.idp_title", "Backend-only IDP access", )}
{t( "msg.admin.overview.playbook.idp_body", "모든 IDP 호출은 backend를 통해서만 수행하며, Hydra/Kratos admin 포트는 외부에 노출하지 않습니다.", )}
{t( "msg.admin.overview.playbook.tenant_title", "Tenant isolation", )}
{t( "msg.admin.overview.playbook.tenant_body", "Tenant 헤더와 감사 로그 규칙을 기본 적용하며, 향후 Keto 정책으로 확장 예정입니다.", )}