V13-FE-005: restore direct UI components and harden grid provider
deploy / deploy (push) Failing after 51s
deploy / notify (push) Successful in 1s

This commit is contained in:
2026-08-13 02:39:48 +09:00
parent c4f0224a4f
commit d79edae546
45 changed files with 463 additions and 760 deletions
@@ -0,0 +1,37 @@
# V13-FE-005 — Existing Component Direct Vendor Restore
## Source / Assumption / Unknown / Decision Required
- **Source:** `frontend/src/shared/ui/components/`, existing PrimeVue/AG Grid adapters, and current component contract tests.
- **Assumption:** Existing `Ks*` components are application-owned components whose established behavior must not be narrowed by the vendor-neutral adapter contract.
- **Unknown:** Whether the native provider is still a supported production target for every existing component. This must not be inferred from the presence of `VITE_UI_ADAPTER`.
- **Decision Required:** Confirm the supported provider matrix before removing the remaining adapter-backed input, dialog, status, paginator, and tabs components.
## Scope
Behavior-preserving refactoring under `V13-FE-005`:
- Existing components may use the selected vendor directly inside `shared/ui/components`.
- Feature code remains vendor-import free.
- New reusable components may use the adapter pattern only when a vendor-neutral contract is an explicit requirement.
- No policy, API, database, migration, or production automation change.
## Implemented
- `KsButton.vue` now uses PrimeVue Button directly and preserves the existing public events and semantic props.
- `KsDataGrid.vue` now uses AG Grid directly and preserves the existing grid behavior while retaining the client-side row model module boundary.
- Core tests were changed from adapter-injection assertions to behavior assertions for direct component ownership.
## Remaining
- Existing `shared/ui/components/*.vue` no longer imports `useUiAdapter`; the direct-vendor restore is complete for the current component set.
- Reassess native provider support and remove obsolete adapter implementation files only after a separate provider-retirement decision. The adapter remains available for new vendor-neutral components.
## Evidence
- Targeted tests: shared component tests — 25/25 PASS.
- Full frontend tests: `pnpm test -- --run` — 63 files / 168 tests PASS.
- Typecheck: `pnpm typecheck` — PASS.
- Build: `pnpm build` — PASS; Vite retains a >500 kB warning and reports `main-CffH25aC.js` 587.58 kB / gzip 163.16 kB.
- Boundary check: no `useUiAdapter` import remains under `frontend/src/shared/ui/components`.
- Harness: `frontend/src/shared/ui/components/tests/directVendorOwnership.contract.spec.ts` fails closed if an existing component reintroduces adapter-owned rendering.