Skip to content

[JDDEV-41] [[JDDEV-43] [JDDEV-48] [JDDEV-78] Feat: 실제 공고 지원 플로우 API 연동#62

Merged
minnngo merged 6 commits into
developfrom
feature/JDDEV-43-jd_input-api-feat
May 22, 2026
Merged

[JDDEV-41] [[JDDEV-43] [JDDEV-48] [JDDEV-78] Feat: 실제 공고 지원 플로우 API 연동#62
minnngo merged 6 commits into
developfrom
feature/JDDEV-43-jd_input-api-feat

Conversation

@minnngo
Copy link
Copy Markdown
Collaborator

@minnngo minnngo commented May 22, 2026

🔗 관련 이슈

  • JDDEV-41
  • JDDEV-43
  • JDDEV-48
  • JDDEV-78

📝 개요

  • 실제 공고 기반 모의서류지원 플로우에 필요한 API를 연동했습니다.
  • 모의서류지원 기본 화면, 빈 상태, 문항 생성 로딩 화면을 추가했습니다.
  • 아직 구현되지 않은 가상 공고 지원은 실제 공고 지원 플로우와 섞이지 않도록 진입을 비활성화했습니다.

⌨️ 작업 상세 내용

  • 로그인/회원가입/구글 로그인 및 지원 플로우 API 연동
  • 실제 공고 입력, 공고 확인, 저장, 모의 지원 생성 API 연결
  • 문항 직접 추가 시 선택 목록에서 사라지던 오류 수정
  • 모의서류지원 기본 화면에서 지원 내역이 없을 때 빈 화면 표시
  • 공고 확정 후 문항 생성 대기용 로딩 화면 구현
  • 로딩 화면에 입력한 기업명/직무명이 반영되도록 연결
  • 가상 공
2026-05-22.235013.mp4

고 지원 진입 비활성화 및 실제 공고 지원 플로우와 분리

📸 스크린샷 (UI 변경 시)

Summary by CodeRabbit

  • New Features

    • Virtual apply option is now marked as unavailable
    • Question generation loading screen displays progress during save
    • Application history now shows saved applications with scores or draft status badges
    • URL validation and normalization for job posting inputs
  • Bug Fixes

    • Real apply selection now persists correctly before proceeding
    • Improved error messages for invalid uploads and failed operations

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 22, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4510f66e-5200-4621-9446-04af3a047b63

📥 Commits

Reviewing files that changed from the base of the PR and between 0980755 and fcb2efa.

⛔ Files ignored due to path filters (1)
  • jobdri/src/assets/ic_text.svg is excluded by !**/*.svg
📒 Files selected for processing (13)
  • jobdri/src/app/apply/apply-type/ApplyTypePageClient.tsx
  • jobdri/src/app/apply/virtual/[id]/(jd)/jd-input/JdInputPageClient.tsx
  • jobdri/src/app/apply/virtual/[id]/(jd)/jd-review/JdReviewPageClient.tsx
  • jobdri/src/app/apply/virtual/[id]/(jd)/jd-review/page.tsx
  • jobdri/src/components/apply/SelectQuestion.tsx
  • jobdri/src/components/common/cards/ApplyOptionCard.tsx
  • jobdri/src/components/mock-application/JdReviewMain.tsx
  • jobdri/src/components/mock-application/MockApplicationHomePageClient.tsx
  • jobdri/src/components/mock-application/QuestionGenerationLoading.tsx
  • jobdri/src/components/mock-application/jdReviewSections.ts
  • jobdri/src/lib/api/jobPostings.ts
  • jobdri/src/lib/api/mockApplies.ts
  • jobdri/src/lib/api/questions.ts

📝 Walkthrough

Walkthrough

This PR implements a complete job posting submission and application workflow. It disables the virtual apply option, adds job posting ingest via link or image with URL normalization and async error handling, implements async review confirmation with session storage management, introduces question generation loading screens, and transforms the home page to display fetched saved applications instead of mocks.

Changes

Job Posting Workflow

Layer / File(s) Summary
Apply Type Selection & Persistence
jobdri/src/app/apply/apply-type/ApplyTypePageClient.tsx, jobdri/src/components/common/cards/ApplyOptionCard.tsx
Virtual apply option is marked disabled (card disabler prop enforced at click/hover time), description text updated, and selecting "real" now persists the choice via saveSelectedApplyType("ACTUAL") before routing.
API Infrastructure
jobdri/src/lib/api/jobPostings.ts, jobdri/src/lib/api/mockApplies.ts, jobdri/src/components/mock-application/jdReviewSections.ts, jobdri/src/lib/api/questions.ts
New jobPostings.ts defines job posting extraction, ingest, save, and async polling contracts; new mockApplies.ts provides apply creation and type persistence; jdReviewSections.ts adds storage key helpers and section construction from job posting data; questions.ts refactored to use standardized API response parsing.
JD Input — URL Normalization & Async Processing
jobdri/src/app/apply/virtual/[id]/(jd)/jd-input/JdInputPageClient.tsx
Adds normalizeUrl helper for link validation, introduces activeRequestIdRef and processingErrorMessage state to deduplicate concurrent ingest requests and surface dynamic errors in failure modals; link and image submit handlers now validate/fail early or start async processJobPosting with normalized inputs.
JD Review — Section Propagation & Async Confirmation
jobdri/src/app/apply/virtual/[id]/(jd)/jd-review/JdReviewPageClient.tsx, jobdri/src/app/apply/virtual/[id]/(jd)/jd-review/page.tsx, jobdri/src/components/mock-application/JdReviewMain.tsx
JdReviewPageClient and JdReviewMain now accept optional onSectionsChange callback to propagate edits; page.tsx implements async handleConfirm that validates inputs, saves job posting, creates apply record, copies session storage to new id, waits for loading, and routes to questions; errors surface via modal.
Questions Selection & Loading State
jobdri/src/components/apply/SelectQuestion.tsx, jobdri/src/components/mock-application/QuestionGenerationLoading.tsx
SelectQuestion adds error state and callback-based updates for question selection/propagation, uses monotonic counter for custom question IDs; new QuestionGenerationLoading component displays three-step loading screen with timed transitions based on configurable durationMs.
Home Page — Fetched Data Integration
jobdri/src/components/mock-application/MockApplicationHomePageClient.tsx
Replaces hardcoded mock datasets with fetchMyJobPostings() integration; maps SavedJobPosting results to cards with optional score field; conditionally renders ResultScore or new ApplicationStateBadge ("작성중"); adds loading/error/empty states; derives paused/result lists from fetched data.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant ApplyType as Apply Type Page
  participant JdInput as JD Input Page
  participant Modal as Input Modal
  participant IngestAPI as Ingest API
  participant JdReview as JD Review Page
  participant SaveAPI as Save Job Posting
  participant ApplyAPI as Create Apply

  User->>ApplyType: Select "ACTUAL"
  ApplyType->>ApplyType: saveSelectedApplyType("ACTUAL")
  ApplyType->>JdInput: Navigate

  User->>Modal: Submit JD link
  Modal->>JdInput: normalizeUrl() validation
  alt URL Invalid
    JdInput->>Modal: step="failed", processingErrorMessage
  else URL Valid
    JdInput->>IngestAPI: processJobPosting(normalizedUrl)
    IngestAPI-->>JdInput: Ingest result/error
    alt Ingest Success
      JdInput->>JdReview: Load sections
    else Ingest Failure
      JdInput->>Modal: step="failed", processingErrorMessage
    end
  end

  User->>JdReview: Edit sections, Confirm
  JdReview->>JdReview: onSectionsChange callbacks
  JdReview->>SaveAPI: saveJobPosting(payload)
  SaveAPI-->>JdReview: jobPostingId
  JdReview->>ApplyAPI: createApplyFromJobPosting()
  ApplyAPI-->>JdReview: applyId
  JdReview->>JdReview: Copy sessionStorage to applyId
  JdReview->>JdReview: QuestionGenerationLoading (delay)
  JdReview->>User: Navigate to questions
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • JobDri-Developer/FrontEnd#60: Modifies questions.ts API surface and SelectQuestion component for question fetching and selection flow.
  • JobDri-Developer/FrontEnd#58: Refactors question selection exporting and updates SelectQuestion callback wiring for selected question propagation.
  • JobDri-Developer/FrontEnd#57: Modifies virtual JD flow components (JdInputPageClient, JdReviewPageClient) for routing and control changes that align with this PR's additions.

Suggested reviewers

  • yiyoonseo

🐰 A job posting bloom, now saved and known,
Ingest with grace, and sections sown.
Questions load with step-by-step delight,
Mock and real apply, both paths shining bright! 🌟

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/JDDEV-43-jd_input-api-feat

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@yiyoonseo yiyoonseo left a comment

Choose a reason for hiding this comment

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

짱 !!

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.

2 participants