Files

28 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 결정 주소가 게시 시점에 굳어져 방문자가 404 를 만나기까지
## Alternative text
계약, 게시 시점 경로 생성, 저장 테이블, 조회 시점 경로 생성, 방문자, 공개 라우트 여섯 참가자 사이에서 주소가 만들어져 저장되고 방문 시 404 로 끝나는 순서도.
## Long description
위에서 아래로 여섯 번의 이동이 있다. 계약 ProjectDecisionItem 은 공개 주소가 decisions#{slug} 앵커라고 규정한다. 게시 시점의 PublicPaths.forKind 는 그 대신 decisions/{slug} 를 만들어 public_resource_projection 에 저장한다. 조회 시점의 PublicSql.pathOf 가 저장된 주소를 읽고 방문자에게 링크로 내보낸다. 방문자가 그 주소를 요청하면 공개 라우트에는 projects/{slug}/decisions 하나뿐이라 맞는 라우트가 없고 404 가 돌아온다.
## Elements and evidence
- **계약 ProjectDecisionItem** (participant): 공개 주소를 앵커로 규정한 OpenAPI 계약. Evidence: L676L678.
- **PublicPaths.forKind** (participant): 게시할 때 공개 주소를 만드는 코드. Evidence: L677L678.
- **public_resource_projection** (participant): 만들어진 주소가 저장되는 투영 테이블. Evidence: L682L683.
- **PublicSql.pathOf** (participant): 조회할 때 공개 주소를 만드는 코드. Evidence: L677L678.
- **방문자** (actor): 「다음에 읽을 것」 링크를 따라간 사람. Evidence: L670L671.
- **공개 라우트** (participant): 결정에는 상세 화면이 없어 라우트가 하나뿐이다. Evidence: L675L676.
## Relationships
- **계약 ProjectDecisionItem → PublicPaths.forKind:** …/decisions#{slug} 로 규정. Evidence: L676L678.
- **PublicPaths.forKind → public_resource_projection:** …/decisions/{slug} 저장. Evidence: L675L678.
- **public_resource_projection → PublicSql.pathOf:** 저장된 주소 조회. Evidence: L682L683.
- **PublicSql.pathOf → 방문자:** 같은 형태로 링크 전달. Evidence: L677L678.
- **방문자 → 공개 라우트:** …/decisions/{slug} 요청. Evidence: L670L675.
- **공개 라우트 → 방문자:** 404. Evidence: L670L675.