1
0
forked from baron/baron-sso

fix(admin): stabilize tenant import report UI and satisfy E2E tests

- Added missing i18n keys for import results in both root and common locales.
- Fixed TypeScript type errors and implicit 'any' types in TenantListPage.
- Added 'destructive' variant to common Badge component.
- Updated Playwright tests with refined locators and enhanced API mocks to match the new reporting structure.
- Restored quick summary message in Tenant Registry for backward compatibility.
This commit is contained in:
2026-06-04 12:59:32 +09:00
parent 91e983b315
commit 8f2e351875
9 changed files with 106 additions and 9 deletions

View File

@@ -85,6 +85,8 @@ import {
fetchMe,
fetchTenants,
importTenantsCSV,
type TenantImportDetail,
type TenantImportResult,
type TenantSummary,
updateTenant,
} from "../../../lib/adminApi";
@@ -297,8 +299,10 @@ function TenantListPage() {
if (!importResult) return [];
if (importResultFilter === "all") return importResult.details;
if (importResultFilter === "failed")
return importResult.details.filter((d) => !d.success);
return importResult.details.filter((d) => d.action === importResultFilter);
return importResult.details.filter((d: TenantImportDetail) => !d.success);
return importResult.details.filter(
(d: TenantImportDetail) => d.action === importResultFilter,
);
}, [importResult, importResultFilter]);
const [selectedBulkStatus, setSelectedBulkStatus] = React.useState("");
const _tenantTableScrollRef = React.useRef<HTMLDivElement | null>(null);
@@ -404,6 +408,17 @@ function TenantListPage() {
onSuccess: (result) => {
setImportResult(result);
setImportResultOpen(true);
setImportMessage(
t(
"msg.admin.tenants.import_result",
"생성 {{created}}, 갱신 {{updated}}, 실패 {{failed}}",
{
created: result.created,
updated: result.updated,
failed: result.failed,
},
),
);
setPreviewOpen(false);
setPreviewRows([]);
setSelectedMatches({});
@@ -1135,7 +1150,7 @@ function TenantListPage() {
</TableCell>
</TableRow>
) : (
filteredImportDetails.map((detail) => (
filteredImportDetails.map((detail: TenantImportDetail) => (
<TableRow key={detail.row}>
<TableCell className="font-mono text-xs text-muted-foreground">
{detail.row}
@@ -1173,7 +1188,7 @@ function TenantListPage() {
"수정됨:",
)}
</span>
{detail.modifiedFields.map((field) => (
{detail.modifiedFields.map((field: string) => (
<Badge
key={field}
variant="outline"