feat: 기능 추가 과정중

This commit is contained in:
donghyeon-ka
2026-07-30 15:58:20 +09:00
parent d3ef801fe6
commit 6c52cdb916
648 changed files with 126325 additions and 6680 deletions
@@ -29,7 +29,7 @@ RP-04 이후 route runtime과 RP-06 page/form platform에는 다음 장점이
- reference feature의 list/detail/create/status route가 네 template variation을
production composition에서 실행한다.
platform route 계약, `src/features/installed-feature-contracts.js`,
platform route 계약, `src/features/installed-feature-contracts.ts`,
`src/features/installed-feature-runtimes.tsx`의 완전성은 TypeScript와 registry
negative fixture가 함께 검사한다. params/search codec, loading/error surface,
access, title, navigation, chunk ID는
@@ -37,6 +37,13 @@ access, title, navigation, chunk ID는
manifest의 dynamic entry는 release manifest route chunk map과 검증되며,
`ChunkRecoveryBoundary`는 일반 render error와 chunk rejection을 분리한다.
route ID와 parsed input type은 `route-contract.ts`, parse/canonical URL 생성은
`route-codecs.ts`, React context/provider/hook은 `route-input.tsx`가 소유한다.
router는 codec 결과를 provider에 넣고 lazy feature page는 좁은
`useRouteInput()`만 소비한다. 이 분리로 feature runtime이 자신을 load하는
`app-router.tsx`를 역참조하지 않으며, 같은 유형의 TypeScript 순환 의존은
architecture graph fixture가 거절한다.
template는 데이터를 가져오지 않는다. reference page controller가 route input과
application input을 query/form facade에 연결하고, template에는 render할 slot과
안전한 callback만 전달한다. 이 분리는
@@ -391,10 +398,8 @@ page view
```tsx
export function ResourceListRoute() {
const input = useRouteInput(resourceListRoute);
if (!input.ok) return <InvalidRouteSurface failure={input.error} />;
return <ResourceListController input={input.value} />;
const input = useRouteInput();
return <ResourceListController input={input} />;
}
function ResourceListController({ input }: ResourceListControllerProps) {
@@ -403,7 +408,8 @@ function ResourceListController({ input }: ResourceListControllerProps) {
}
```
route parse boundary와 controller component를 분리하므로 controller hook은
router의 parse/invalid-route boundary가 성공한 `ParsedRouteInput`만 provider에
넣고, page controller는 그 context를 바로 읽는다. 따라서 controller hook은
조건부로 호출되지 않는다.
controller가 소유하는 것: