Repository navigation
클래스 이용권 Mock 등록과 댓글 답글 흐름 보강 - #51
Conversation
Figma 시안의 1pt 내부 테두리를 사용자 말풍선에 적용하고 공용 카드의 기존 동작은 유지한다.
클래스 인트로에서 이용권 등록 화면을 코디네이터 push로 연결하고, 로컬 Mock 코드 확인과 경로 이탈 시 취소를 구현합니다. Stage에서는 명시적인 환경 변수로만 Mock을 켜고, 화면·코디네이터 테스트와 375pt·402pt 시각 캡처를 추가합니다.
댓글과 답글 수정 전환 시 입력창에 포커스를 맞추고 부모 글 수정 상태를 정리합니다. 시뮬레이터 포커스 테스트로 답글과 부모 글 수정 전환을 검증합니다.
클래스 댓글에서 답글 화면으로 push하고 뒤로 돌아오는 코디네이터 경로를 검증합니다.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
전반적으로 이 PR은 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cb70aa3453
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| public init(instanceID: UUID = UUID()) { | ||
| self.instanceID = instanceID | ||
| } |
There was a problem hiding this comment.
Restore a parameterless ticket State initializer
This introduces a public init(instanceID:), even though observable feature states in this repository must expose only public init() and callers such as coordinators and tests should mutate inline-defaulted state afterward. Keeping the parameterized initializer creates a second construction API and duplicates the instanceID default; retain public init() {} and assign the coordinator-generated ID on a mutable state value before pushing it.
AGENTS.md reference: AGENTS.md:L354-L356
Useful? React with 👍 / 👎.
| public enum ClassTicketPhase: Equatable, Sendable { | ||
| case entry | ||
| case registered |
There was a problem hiding this comment.
Move the ticket phase enum into the domain model layer
ClassTicketPhase is a screen-state branching enum, but this new file places it in the Feature module. The repository explicitly classifies UI branching enums as domain models and requires them under the applicable domain entity/model layer, so move this type into ClassDomain and import it from the feature instead of defining it under Feature/Class.
AGENTS.md reference: AGENTS.md:L427-L433
Useful? React with 👍 / 👎.
| public var body: some View { | ||
| VStack(spacing: 0) { | ||
| PickeNavigationBar( | ||
| onBack: { send(.backTapped) }, | ||
| centerTitle: "이용권 등록하기" |
There was a problem hiding this comment.
Extract the ticket body layout into named subviews
The newly added body directly constructs the navigation bar and scroll hierarchy rather than serving only as a caller of named subviews. The repository requires actual layout blocks to live in the view extension, so extract the navigation bar and content/scroll section and have body compose those helpers.
AGENTS.md reference: AGENTS.md:L145-L149
Useful? React with 👍 / 👎.
| Button { | ||
| send(store.phase == .entry ? .checkTapped : .confirmTapped) | ||
| } label: { | ||
| Text(store.phase == .entry ? "코드 확인하기" : "이용권 확인하기") | ||
| } |
There was a problem hiding this comment.
Expose the primary button title from State
The primary button label is derived inline from store.phase, contrary to the repository rule that display-derived labels belong on feature State. Add a computed title property to ClassTicketFeature.State and use it here (and for the disabled-button label) so the state remains the single source of presentation text.
AGENTS.md reference: AGENTS.md:L329-L331
Useful? React with 👍 / 👎.
클래스 이용권 등록 진입을 Mock 데이터로 연결하고, 클래스 시작 화면과 AI 채팅 말풍선의 레이아웃을 정리했습니다. 댓글·답글에서는 수정 입력 포커스와 push/뒤로 가기 경로를 보강했습니다. 실제 등록 API는 추가하지 않았습니다.
검증: iPhone 18 Pro 시뮬레이터의
Picke-TicketAudit에서 클래스 코디네이터, 이용권, 댓글 포커스·이동 관련 테스트 57개 통과(동적 매개변수 실행 포함), 실패·스킵 0개.git diff --check통과.범위: 이 PR은 현재 구현·테스트가 끝난 부분만 다룹니다. 전체 클래스 화면의 Figma 원본 대조, 댓글 화면 전체 시각 검증, 실기기 E2E는 후속 작업입니다.