+
+
+
+
{t("ui.admin.integrity.title", "데이터 정합성 검증")}
-
+
{t(
"msg.admin.integrity.subtitle",
"Review integrity status and inspect checks across the admin data model.",
@@ -359,176 +359,184 @@ function DataIntegrityContent() {
) : null}
-
{t("ui.admin.integrity.title", "데이터 정합성 검증")}
-+
{t( "msg.admin.integrity.subtitle", "Review integrity status and inspect checks across the admin data model.", @@ -359,176 +359,184 @@ function DataIntegrityContent() { ) : null}
- {t("ui.admin.integrity.read_model.title", "Read model integrity")} -
-- {t( - "msg.admin.integrity.read_model.description", - "Ory SoT를 덮어쓰지 않고 backend DB read model의 이상 징후만 확인합니다.", +
-
+
- - {t("ui.admin.integrity.summary.total_checks", "검사 항목")} - -
- - {data?.summary.totalChecks ?? 0} - -
- - {t("ui.admin.integrity.summary.passed", "정상")} - -
- - {data?.summary.passed ?? 0} - -
- - {t("ui.admin.integrity.summary.failures", "실패 건수")} - -
- - {data?.summary.failures ?? 0} - -
- - {t("ui.admin.integrity.summary.checked_at", "검사 시각")} - -
- - {formatDateTime(data?.checkedAt)} - -
- + {t("ui.admin.integrity.summary.total_checks", "검사 항목")} + +
- + {data?.summary.totalChecks ?? 0} + +
- + {t("ui.admin.integrity.summary.passed", "정상")} + +
- + {data?.summary.passed ?? 0} + +
- + {t("ui.admin.integrity.summary.failures", "실패 건수")} + +
- + {data?.summary.failures ?? 0} + +
- + {t("ui.admin.integrity.summary.checked_at", "검사 시각")} + +
- + {formatDateTime(data?.checkedAt)} + +
- {integritySectionLabel(section.key, section.label)} + {t( + "ui.admin.integrity.read_model.title", + "Read model integrity", + )}
-+ {t( + "msg.admin.integrity.read_model.description", + "Ory SoT를 덮어쓰지 않고 backend DB read model의 이상 징후만 확인합니다.", + )} +
-
+
+ {integritySectionLabel(section.key, section.label)} +
++ {integrityCheckDescription( + check.key, + check.description, + )} +
- {integrityCheckDescription(check.key, check.description)} -
+- {t( - "ui.admin.integrity.orphan_login_ids.title", - "유령 로그인 ID 정리", - )} -
-- {t( - "msg.admin.integrity.orphan_login_ids.description", - "삭제되었거나 존재하지 않는 사용자/테넌트를 참조하는 로그인 ID를 확인한 뒤 선택 삭제합니다.", - )} -
-+ {t( + "ui.admin.integrity.orphan_login_ids.title", + "유령 로그인 ID 정리", + )} +
++ {t( + "msg.admin.integrity.orphan_login_ids.description", + "삭제되었거나 존재하지 않는 사용자/테넌트를 참조하는 로그인 ID를 확인한 뒤 선택 삭제합니다.", + )} +
+
{t("ui.admin.overview.chart.title", "회사별 앱별 로그인 요청 현황")}
@@ -507,9 +507,9 @@ function GlobalOverviewPage() {
return (
-
+
-
+
{t("ui.common.overview.title", "운영 현황")}
@@ -562,7 +562,7 @@ function GlobalOverviewPage() {
{usageQuery.isError ? (
-
+
{t(
diff --git a/adminfront/src/features/projections/UserProjectionPage.tsx b/adminfront/src/features/projections/UserProjectionPage.tsx
index 763dd29b..2c8efa7e 100644
--- a/adminfront/src/features/projections/UserProjectionPage.tsx
+++ b/adminfront/src/features/projections/UserProjectionPage.tsx
@@ -95,16 +95,16 @@ function UserProjectionContent() {
const actionError = reconcileMutation.error ?? resetMutation.error;
return (
-
-
-
-
+
+
+
+
{t(
"ui.admin.user_projection.title",
"User Projection Management",
)}
-
+
{t(
"msg.admin.user_projection.subtitle",
"Review and sync the Kratos user read model.",
@@ -134,7 +134,7 @@ function UserProjectionContent() {
)}
-
+
{isError ? (
+
{t("ui.common.overview.title", "운영 현황")}
@@ -562,7 +562,7 @@ function GlobalOverviewPage() {
{usageQuery.isError ? (
+
{t(
"msg.admin.user_projection.subtitle",
"Review and sync the Kratos user read model.",
@@ -134,7 +134,7 @@ function UserProjectionContent() {
)}
{t(
diff --git a/adminfront/src/features/projections/UserProjectionPage.tsx b/adminfront/src/features/projections/UserProjectionPage.tsx
index 763dd29b..2c8efa7e 100644
--- a/adminfront/src/features/projections/UserProjectionPage.tsx
+++ b/adminfront/src/features/projections/UserProjectionPage.tsx
@@ -95,16 +95,16 @@ function UserProjectionContent() {
const actionError = reconcileMutation.error ?? resetMutation.error;
return (
-
+
{t(
"ui.admin.user_projection.title",
"User Projection Management",
)}
-