V13-FE-011: finalize search list layout slice

This commit is contained in:
2026-08-09 02:57:26 +09:00
parent 9efd202e76
commit 6422cb2b13
984 changed files with 120811 additions and 1498 deletions
@@ -0,0 +1,50 @@
// GENERATED. DO NOT EDIT.
// Scenario SHA256: c2a8910c136f08c0c33c3f7f5e78302a0723a35ab8506c3dbdee53634e2c5df3
// Fixture SHA256: befb917413e52c04f3d0116f29aa2f07d3273d6b71d980a4f4416d48a5b3a162
namespace Shared.Testing.Generated;
public sealed record KbxTestScenarioContract(
string Id, string Title, string ScreenId, string Kind,
IReadOnlyList<string> Tags, IReadOnlyList<string> FixtureSets,
IReadOnlyList<string> RequiredPermissions, IReadOnlyList<string> ApiOperations,
string Isolation);
public static class KbxTestScenarioCatalog
{
public const string ContractVersion = "1.9.0";
public const string FixtureVersion = "1.4.0";
public const string ReferenceClock = "2026-08-08T09:00:00Z";
public static IReadOnlyList<KbxTestScenarioContract> All { get; } = new KbxTestScenarioContract[]
{
new("scenario.common.design-system.interactions", "KBX 컴포넌트 상태·키보드 상호작용 계약", "COMMON-DS-001", "e2e", new[] { "component-contract", "accessibility", "keyboard", "visual-regression" }, new[] { }, new[] { }, new[] { }, "ui-only"),
new("scenario.common.operations.stale-event", "업무 예외 해결 후 오래된 Event가 재오픈하지 않음", "COMMON-OPS-001", "integration", new[] { "exception", "outbox", "projection", "ordering" }, new[] { "fixture.common.operations" }, new[] { "common.operations.read", "common.operations.resolve" }, new[] { "common.operations.search" }, "database-reset"),
new("scenario.common.reconcile.grace-period", "OMS-WMS 대사 Grace Period 내 Pending 이후 Mismatch", "COMMON-REC-001", "integration", new[] { "reconcile", "eventual-consistency" }, new[] { "fixture.common.reconcile" }, new[] { "common.reconcile.read" }, new[] { "common.reconcile.search" }, "database-reset"),
new("scenario.erp.inventory-move.workflow", "ERP 재고이동 정상 상태전이와 잘못된 창고 차단", "ERP-INV-MOVE-001", "integration", new[] { "workflow", "domain-validation", "audit" }, new[] { "fixture.erp.inventory-move" }, new[] { "erp.inventory.move.read", "erp.inventory.move.write" }, new[] { }, "database-reset"),
new("scenario.erp.inventory.master-detail-context", "ERP 재고 T05 Master/Detail Context·이력·Drill-down", "ERP-INV-001", "e2e", new[] { "golden-screen", "master-detail", "context-retention", "drill-down", "history" }, new[] { "fixture.erp.inventory-explorer" }, new[] { "erp.inventory.read" }, new[] { "erp.inventory.search", "erp.inventory.locations", "erp.inventory.history" }, "database-reset"),
new("scenario.erp.item-price.fast-entry", "ERP 품목 단가 T04 Fast Entry 일괄저장", "ERP-PRICE-001", "e2e", new[] { "golden-screen", "fast-entry", "lookup", "paste", "fill-down", "idempotency", "audit", "outbox" }, new[] { "fixture.erp.item-price-fast-entry" }, new[] { "erp.item.price.read", "erp.item.price.write", "erp.item.read" }, new[] { "lookup.items.resolveByCode", "erp.itemPrices.bulkSave" }, "database-reset"),
new("scenario.external-data.kis.strict-expiry", "KIS 현재가 만료 캐시를 최신값으로 사용하지 않음", "COMMON-DATA-001", "integration", new[] { "external-data", "kis", "freshness", "strict" }, new[] { "fixture.external-data.kis" }, new[] { "common.external-data.read" }, new[] { "common.externalData.status" }, "database-reset"),
new("scenario.external-data.opendart.stale-revalidate", "OPENDART Stale 데이터 명시 표시 후 재수집 예약", "COMMON-DATA-001", "integration", new[] { "external-data", "opendart", "stale-while-revalidate", "provenance" }, new[] { "fixture.external-data.opendart" }, new[] { "common.external-data.read", "common.external-data.refresh" }, new[] { "common.externalData.status", "common.externalData.refresh" }, "database-reset"),
new("scenario.integration.inbox.duplicate", "Inbox 동일 메시지 중복수신 1회 처리", "COMMON-OPS-001", "integration", new[] { "integration", "inbox", "idempotency", "duplicate" }, new[] { "fixture.integration.inbox" }, new[] { "common.operations.read" }, new[] { }, "database-reset"),
new("scenario.integration.manual-retry.idempotent", "최종 실패 외부연계 수동 재처리 중복 클릭 방지", "COMMON-OPS-001", "integration", new[] { "integration", "manual-retry", "idempotency" }, new[] { "fixture.integration.outbox" }, new[] { "common.integration.read", "common.integration.retry" }, new[] { "common.integrations.retryAttempt" }, "database-reset"),
new("scenario.integration.outbox.permanent-failure", "외부연계 영구 실패가 업무 예외로 승격", "COMMON-OPS-001", "integration", new[] { "integration", "outbox", "permanent-failure", "exception" }, new[] { "fixture.integration.outbox" }, new[] { "common.operations.read" }, new[] { }, "database-reset"),
new("scenario.integration.outbox.transient-retry", "Outbox 외부연계 일시 장애 후 자동 재시도", "COMMON-OPS-001", "integration", new[] { "integration", "outbox", "retry", "polly", "hangfire" }, new[] { "fixture.integration.outbox" }, new[] { "common.operations.read" }, new[] { }, "database-reset"),
new("scenario.oms.order-import.partial", "OMS 주문 Excel 검증 후 부분 반영", "OMS-ORD-003", "e2e", new[] { "excel", "mapping", "staging", "partial-success", "job" }, new[] { "fixture.oms.order-import" }, new[] { "oms.order.import" }, new[] { "common.imports.createSession", "common.imports.validate", "common.imports.commit", "common.imports.getSession" }, "database-reset"),
new("scenario.oms.order-list.all-filtered-ship", "OMS 주문조회 검색결과 전체선택 안전 출고 계약", "OMS-ORD-001", "contract", new[] { "golden-screen", "bulk", "all-filtered", "filter-snapshot", "idempotency" }, new[] { "fixture.oms.orders.bulk-ship" }, new[] { "oms.order.read", "oms.order.ship" }, new[] { "oms.orders.search", "oms.orders.ship" }, "database-reset"),
new("scenario.oms.order-list.bulk-ship", "OMS 주문조회 대량 출고지시 부분성공", "OMS-ORD-001", "e2e", new[] { "golden-screen", "bulk", "idempotency", "audit", "outbox" }, new[] { "fixture.oms.orders.bulk-ship" }, new[] { "oms.order.read", "oms.order.ship" }, new[] { "oms.orders.search", "oms.orders.ship" }, "database-reset"),
new("scenario.oms.order-register.conflict", "OMS 주문수정 Optimistic Concurrency 충돌", "OMS-ORD-002", "integration", new[] { "concurrency", "conflict", "recovery" }, new[] { "fixture.oms.order-conflict" }, new[] { "oms.order.read", "erp.item.read", "oms.order.write" }, new[] { "oms.orders.update", "oms.orders.get" }, "database-reset"),
new("scenario.oms.order-register.fast-entry", "OMS 주문등록 Fast Entry Grid 대량입력 계약", "OMS-ORD-002", "contract", new[] { "golden-screen", "fast-entry", "paste", "fill-down", "inline-validation" }, new[] { "fixture.oms.order-register" }, new[] { "oms.order.create", "oms.order.read" }, new[] { }, "ui-only"),
new("scenario.oms.order-register.keyboard", "OMS 주문등록 키보드 중심 저장", "OMS-ORD-002", "e2e", new[] { "golden-screen", "keyboard", "lookup", "validation", "audit" }, new[] { "fixture.oms.order-register" }, new[] { "oms.order.create", "oms.order.read", "erp.item.read" }, new[] { "lookup.customers.search", "lookup.items.resolveByCode", "lookup.warehouses.resolveByCode", "oms.orders.register" }, "database-reset"),
new("scenario.shell.unsaved-tab", "Workspace Tab 미저장 변경 보호", "OMS-ORD-002", "e2e", new[] { "shell", "dirty-state", "keyboard" }, new[] { "fixture.shell.user" }, new[] { "oms.order.create", "oms.order.read", "erp.item.read" }, new[] { }, "ui-only"),
new("scenario.wms.picking.idempotent-replay", "WMS 피킹 응답유실 후 동일 Scan Replay", "WMS-PICK-001", "e2e", new[] { "golden-screen", "scanner", "idempotency", "network" }, new[] { "fixture.wms.picking" }, new[] { "wms.picking.execute" }, new[] { "wms.picking.getTask", "wms.picking.start", "wms.picking.scan" }, "database-reset"),
new("scenario.wms.picking.wrong-item", "WMS 다른 상품 Scan은 재시도 Queue 비대상", "WMS-PICK-001", "e2e", new[] { "scanner", "business-error", "retry-policy" }, new[] { "fixture.wms.picking" }, new[] { "wms.picking.execute" }, new[] { "wms.picking.scan" }, "database-reset"),
new("scenario.erp.item-master.lifecycle", "ERP 품목관리 CRUD·Concurrency·Audit Lifecycle", "ERP-MST-ITEM-001", "integration", new[] { "golden-screen", "master-crud", "concurrency", "audit", "state-policy" }, new[] { "fixture.erp.item-master-lifecycle" }, new[] { "erp.item.read", "erp.item.write" }, new[] { "erp.items.get", "erp.items.update", "erp.items.audit", "erp.items.deactivate" }, "database-reset"),
new("scenario.oms.order-register.lifecycle", "OMS 주문 작성→확정·읽기전용·Audit Lifecycle", "OMS-ORD-002", "e2e", new[] { "golden-screen", "transaction", "workflow", "audit", "state-policy" }, new[] { "fixture.oms.order-conflict" }, new[] { "oms.order.create", "oms.order.read", "oms.order.confirm", "erp.item.read" }, new[] { "oms.orders.get", "oms.orders.confirm", "oms.orders.audit" }, "database-reset"),
new("scenario.shell.home-navigation-security", "Home Workbench·권한필터·Scope/Route/Workspace 격리", "OMS-ORD-001", "e2e", new[] { "shell", "home", "navigation", "security", "preference", "workspace" }, new[] { }, new[] { "oms.order.read" }, new[] { }, "ui-only"),
new("scenario.kbx.template-runtime-utility", "T01~T09 Runtime State·Help/AI/제안 Utility 공통 계약", "OMS-ORD-001", "e2e", new[] { "template-contract", "runtime-state", "utility", "accessibility", "recovery" }, new[] { }, new[] { "oms.order.read", "common.ai.use", "common.suggestion.create" }, new[] { }, "ui-only"),
new("scenario.common.design-system.form-composition", "Desktop Form 2-column·Full-span·Responsive 표준 계약", "COMMON-DS-001", "e2e", new[] { "template-contract", "form", "responsive", "accessibility", "design-token" }, new[] { }, new[] { }, new[] { }, "ui-only"),
new("scenario.shell.module-route-recovery", "Global Module Selector·딥링크 복구·Navigation Capability 보안 계약", "OMS-ORD-001", "e2e", new[] { "shell", "navigation", "security", "deep-link", "accessibility" }, new[] { }, new[] { "oms.order.read" }, new[] { }, "ui-only"),
new("scenario.erp.item-master.keyboard-recovery", "ERP 품목 T02 조회·권한·Dirty·Conflict 복구", "ERP-MST-ITEM-001", "e2e", new[] { "golden-screen", "master-crud", "keyboard", "permission", "concurrency", "audit", "recovery" }, new[] { "fixture.erp.item-master-lifecycle" }, new[] { "erp.item.read", "erp.item.write" }, new[] { "erp.items.search", "erp.items.get" }, "database-reset"),
new("scenario.common.operations.queue-recovery", "업무 예외 T06 Queue 조회·상세 Context·재시도 복구", "COMMON-OPS-001", "e2e", new[] { "golden-screen", "queue", "exception", "recovery", "context-retention", "permission" }, new[] { "fixture.common.operations" }, new[] { "common.operations.read", "common.operations.retry" }, new[] { "common.operations.search", "common.operations.retry" }, "database-reset"),
new("scenario.common.reconcile.mismatch-recovery", "업무 대사 T07 불일치 필터·비교 Context·복구", "COMMON-REC-001", "e2e", new[] { "golden-screen", "reconcile", "mismatch-filter", "eventual-consistency", "recovery", "context-retention" }, new[] { "fixture.common.reconcile" }, new[] { "common.reconcile.read" }, new[] { "common.reconcile.search" }, "database-reset")
};
}