Skip to content

feat/materials-api - #103

Merged
kimwuju merged 1 commit into
mainfrom
feat/materials-api
Oct 17, 2026
Merged

kimwuju merged 1 commit into
mainfrom
feat/materials-api

Conversation

@kimwuju

@kimwuju kimwuju commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

마이페이지가 저장된 직무·문서·GitHub·보완 입력을 한 번에 불러오는 GET /api/v1/metaData/materials를 추가합니다(비개발 직군 명세 01-overview §4.1 계약 C-1). 저장(PUT /api/v1/metaData/materials)은 이 PR에 없고 후속 PR로 붙입니다.

관련 이슈

별도 연결 이슈 없음. 비개발 직군 구현 명세 01-overview §4.1(C-1)·§4.2(C-2)를 기준으로 했습니다. 인증 서버 쪽 엔드포인트는 Alpha-origin/Repit-auth-server#34입니다.

Task

  • AuthServerApi·AuthServerClient.getMaterials(): 인증 서버 GET /api/v1/auth/materials(C-2)를 사용자 토큰으로 호출. GET이라 기존 규칙대로 5xx·연결 실패는 재시도
  • AuthMaterialsResponse: 인증 서버 응답(major, documents, gitUrls, supplements, legacyPortfolio)
  • MaterialsResponse: 마이페이지 응답(C-1)
    • jobRole: MAJOR_ 접두사를 뗀 직무 코드(UserJobMajors.normalize), 미선택이면 null
    • documents[]: 문서 순서대로 index(0부터)를 붙임
    • 옛 업로드 경로(dataUpload)로 올린 PDF만 있는 사용자는 {"index": 0, "type": "PORTFOLIO", "fileUrl": …, "fileName": null, "pageCount": null} 한 건
    • 목록은 null 대신 빈 목록. 인증 서버가 빈 응답을 주면 jobRole: null과 빈 목록
  • MetaDataController에 GET /api/v1/metaData/materials. 01-overview §4.1의 JSON 모양 그대로 돌려줌(기존 getMetaData처럼 ApiResponse로 감싸지 않음)

응답 예:

{
  "jobRole": "QA_ENGINEER",
  "documents": [{"index": 0, "type": "TEST_PLAN", "fileUrl": "https://.../a1b2.pdf", "fileName": "결제-테스트계획.pdf", "pageCount": 12}],
  "gitUrls": ["https://github.com/owner/repo"],
  "supplements": []
}

검증

  • 새 테스트 7개 추가
    • MaterialsResponseTest 5개: 새 형식 변환(접두사·index·보완 입력), 옛 사용자 PORTFOLIO 한 건, 저장 없음, 빈 PDF 주소, 빈 응답
    • MetaDataControllerTest 1개: 사용자 토큰으로 받아 그대로 반환
    • AuthServerMaterialsWiringTest 1개: 설정으로 만든 실제 HTTP 클라이언트가 가짜 인증 서버에 토큰을 넘기고, C-2 JSON(message·null 필드 포함)을 읽는지 확인
  • ./gradlew test: 전체 743개 통과, 실패·오류·건너뜀 0개
  • git diff --check 통과
  • 실제 인증 서버와 맞물리는 확인은 Alpha-origin/Repit-auth-server#34가 병합 전이라 하지 못했습니다. 인증 서버 쪽 PUT → GET 로컬 확인 결과는 fix: fix question tailor #34 본문에 있습니다

후속 (이 PR 범위 밖)

  • PUT /api/v1/metaData/materials: 422 사유별 판정 기준, 분석 재료 변경 판정(analysis: null), 옛 업로드 경로 연결이 비개발 API 명세(03 §3)에 있습니다. 그 명세를 받은 뒤 별도 PR로 붙입니다
  • Web의 getMaterials 연결은 Web 단계(06 §3.5)에서 합니다. 그 전까지 Web은 지금처럼 getMetaData를 씁니다

ETC

  • [가정] jobRole이 9개 코드 중 하나인지는 여기서 다시 검사하지 않습니다. 인증 서버가 enum으로 막고 있고, 직무 명세 상수는 03 §2의 모양을 받은 뒤 맞춥니다
  • [가정] 인증 서버가 fix: fix question tailor #34 이전 버전이면 이 엔드포인트는 인증 서버 오류로 실패합니다. 병합 순서(auth 1번 → API 4번)를 전제로 옛 getMetaData로 대체하는 처리는 넣지 않았습니다. #34를 먼저 병합해 주세요
  • 기존 엔드포인트(dataUpload, getMetaData, isGit, isPortfolio)는 바꾸지 않았습니다
  • main 병합 시 deploy.yml이 배포를 실행합니다

🤖 Generated with Claude Code

- 인증 서버 GET /api/v1/auth/materials(계약 C-2) 호출과 응답 DTO
- 마이페이지 응답(계약 C-1): MAJOR_ 접두사를 뗀 jobRole, 문서 순서대로 index
- 옛 업로드 경로로 올린 PDF는 파일명·쪽수 없는 PORTFOLIO 문서 한 건으로 보여 준다
- 저장(PUT)은 비개발 API 명세(03 §3)를 받은 뒤 붙인다

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@danjee2009 danjee2009 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

변경된 자료 조회 컨트롤러, 인증 서버 클라이언트와 응답 변환 로직 및 관련 테스트를 검토했습니다. 확인한 범위에서 별도로 지적할 실질적인 문제는 없습니다. PR의 CI에서 전체 테스트 743개가 통과한 것을 확인했으며, 이 리뷰에서는 테스트를 다시 실행하거나 실제 인증 서버와의 통합 검증은 하지 않았습니다.

@kimwuju kimwuju mentioned this pull request Oct 17, 2026
@kimwuju
kimwuju merged commit ab165ac into main Oct 17, 2026
1 check passed
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