Skip to content

클래스 이용권 Mock 등록과 댓글 답글 흐름 보강 - #51

Merged
Roy-wonji merged 5 commits into
developfrom
feature/remaining-design-audit-20261017
Oct 19, 2026
Merged

Roy-wonji merged 5 commits into
developfrom
feature/remaining-design-audit-20261017

Conversation

@Roy-wonji

Copy link
Copy Markdown
Contributor

클래스 이용권 등록 진입을 Mock 데이터로 연결하고, 클래스 시작 화면과 AI 채팅 말풍선의 레이아웃을 정리했습니다. 댓글·답글에서는 수정 입력 포커스와 push/뒤로 가기 경로를 보강했습니다. 실제 등록 API는 추가하지 않았습니다.

검증: iPhone 18 Pro 시뮬레이터의 Picke-TicketAudit에서 클래스 코디네이터, 이용권, 댓글 포커스·이동 관련 테스트 57개 통과(동적 매개변수 실행 포함), 실패·스킵 0개. git diff --check 통과.

범위: 이 PR은 현재 구현·테스트가 끝난 부분만 다룹니다. 전체 클래스 화면의 Figma 원본 대조, 댓글 화면 전체 시각 검증, 실기기 E2E는 후속 작업입니다.

Figma 시안의 1pt 내부 테두리를 사용자 말풍선에 적용하고 공용 카드의 기존 동작은 유지한다.
클래스 인트로에서 이용권 등록 화면을 코디네이터 push로 연결하고, 로컬 Mock 코드 확인과 경로 이탈 시 취소를 구현합니다.

Stage에서는 명시적인 환경 변수로만 Mock을 켜고, 화면·코디네이터 테스트와 375pt·402pt 시각 캡처를 추가합니다.
댓글과 답글 수정 전환 시 입력창에 포커스를 맞추고 부모 글 수정 상태를 정리합니다.

시뮬레이터 포커스 테스트로 답글과 부모 글 수정 전환을 검증합니다.
클래스 댓글에서 답글 화면으로 push하고 뒤로 돌아오는 코디네이터 경로를 검증합니다.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T11:00:04.191073Z cb70aa3 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown
Contributor

전반적으로 이 PR은 ClassTicket 기능을 성공적으로 추가하고, 기존 코드의 가독성을 높였습니다. TCA, SwiftUI, 그리고 프로젝트의 코딩 컨벤션을 잘 준수하고 있습니다. 새로운 기능은 적절한 종속성 주입(@Dependency)과 함께 모의(mock) 처리가 잘 되어 있으며, 취소 가능(cancellable) 효과 및 내비게이션 흐름도 표준 TCA 패턴에 따라 견고하게 구현되었습니다. 테스트 코드도 포괄적이며, UI/UX 개선(댓글·답글 포커스, 카드 보더 스타일)도 잘 반영되었습니다. 특별히 수정이 필요한 이슈는 발견되지 않았습니다.

@Roy-wonji
Roy-wonji merged commit 4066c97 into develop Oct 19, 2026
5 checks passed
@Roy-wonji
Roy-wonji deleted the feature/remaining-design-audit-20261017 branch October 19, 2026 10:57

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +25 to +27
public init(instanceID: UUID = UUID()) {
self.instanceID = instanceID
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +3 to +5
public enum ClassTicketPhase: Equatable, Sendable {
case entry
case registered

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +18 to +22
public var body: some View {
VStack(spacing: 0) {
PickeNavigationBar(
onBack: { send(.backTapped) },
centerTitle: "이용권 등록하기"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +256 to +260
Button {
send(store.phase == .entry ? .checkTapped : .confirmTapped)
} label: {
Text(store.phase == .entry ? "코드 확인하기" : "이용권 확인하기")
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant