Skip to content

Release: v1.0.0-beta.2#316

Merged
hyoinkang merged 6 commits intomainfrom
dev
Mar 10, 2026
Merged

Release: v1.0.0-beta.2#316
hyoinkang merged 6 commits intomainfrom
dev

Conversation

@hyoinkang
Copy link
Contributor

@hyoinkang hyoinkang commented Mar 9, 2026

Summary

OBT 오픈 전 수정사항 반영

Type of Change

해당하는 항목에 체크해주세요:

  • Bug fix (기존 기능을 수정하는 변경)
  • New feature (새로운 기능 추가)
  • Breaking change (기존 기능에 영향을 주는 변경)
  • Refactoring (기능 변경 없이 코드 개선)
  • Documentation (문서 변경)
  • Chore (빌드, 설정 등)

Target Environment

배포 대상 브랜치를 선택해주세요:

  • Dev (dev)
  • Prod (main)

* fix: rag 생성 실패 시 fallback 코드 추가

- rag 생성 호출이 실패하면 상태를 failed로 바꾼다.

* fix: AI 서버 스펙 변경에 맞춰 API 스펙 수정 및 엔티티 마이그레이션

- 누락된 failed enum을 추가
- 첨삭 총평 필드를 correction_item에서 제거하고 portfolio-correction에 추가

* feat: correctionStatus enum 상태 다양화

- rag가 실패한 경우와 첨삭이 실패한 경우를 분리하기 위해 enum 상태를 추가함.

* refactor: try/catch 구문을 사용해 오류 처리 로직 개선

- async/await 비동기 오류 처리로 오류 처리 로직을 더 명확하고 읽기 쉽게 개선
@gemini-code-assist
Copy link

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 포트폴리오 첨삭 시스템의 데이터 구조, 오류 처리 및 데이터 무결성을 개선하는 데 중점을 둡니다. 첨삭 총평의 관리 주체를 변경하고, 포트폴리오 필드의 문자열 길이를 확장하여 더 많은 내용을 담을 수 있도록 했습니다. 또한, AI 첨삭 과정의 견고성을 높이기 위해 새로운 실패 상태를 도입하고, 엔티티 업데이트 시 타임스탬프 관리를 자동화했습니다. 전반적으로 시스템의 안정성과 유연성을 향상시키는 변경사항입니다.

Highlights

  • 첨삭 총평 구조 변경: 첨삭 결과의 총평(overallReview)이 개별 첨삭 항목(CorrectionItem)에서 전체 첨삭(PortfolioCorrection) 엔티티로 이동되어, 총평이 개별 포트폴리오가 아닌 전체 첨삭 건에 대한 내용으로 관리됩니다.
  • 포트폴리오 필드 길이 확장: 포트폴리오 엔티티의 'description', 'responsibilities', 'problemSolving', 'learnings' 필드의 최대 길이가 400자에서 1000자로 확장되었습니다.
  • 새로운 첨삭 상태 추가 및 오류 처리 강화: 첨삭 상태(CorrectionStatus)에 'RAG_FAILED'와 'FAILED'가 추가되어 AI 첨삭 과정에서의 실패를 더 세분화하여 관리하고, AI 서버 위임 호출에 대한 오류 처리 로직이 강화되었습니다.
  • 엔티티 업데이트 타임스탬프 자동화: Payment, PortfolioCorrection, Ticket, User 엔티티의 업데이트 시 'updatedAt' 필드가 'getSeoulNow()'를 통해 자동으로 현재 서울 시간으로 갱신되도록 변경되었습니다.
  • 첨삭 결과 DTO 구조 개선: 첨삭 결과 요청 DTO에 'CorrectionLineItemReqDTO'와 'CorrectionFieldReqDTO'가 도입되어 라인별, 필드별 첨삭 결과를 더욱 구조화된 형태로 표현할 수 있게 되었습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • src/common/entities/base.entity.ts
    • createdAt 필드에 update: false 속성을 추가하여 생성 시점 이후 수정되지 않도록 변경되었습니다.
  • src/modules/internal/application/dtos/internal-correction-result.dto.ts
    • CorrectionLineItemReqDTO 및 CorrectionFieldReqDTO가 새로 추가되어 첨삭 결과의 라인별, 필드별 구조를 정의했습니다.
    • CorrectionResultItemReqDTO의 description, responsibilities, problemSolving, learnings 필드가 Record<string, unknown>에서 CorrectionFieldReqDTO 타입으로 변경되었습니다.
    • SaveCorrectionResultReqDTO에 overallReview 필드가 추가되었습니다.
  • src/modules/internal/application/dtos/internal-correction.dto.ts
    • InternalCorrectionItemResDTO에서 overallReview 필드가 제거되었습니다.
  • src/modules/internal/application/services/ai-correction-compat.service.ts
    • CompatStructuredResult 인터페이스에서 overallReview 필드가 제거되었습니다.
    • CompatSaveCorrectionResultBody 인터페이스에 overallReview 필드가 추가되었습니다.
    • saveCorrectionResult 메서드에서 overallReview를 추출하고 portfolioCorrectionService.saveCorrectionResult 호출 시 전달하도록 변경되었습니다.
    • extractOverallReview 프라이빗 메서드가 추가되어 overallReview를 검증하고 추출합니다.
    • delegateCorrectionGeneration 및 delegateCompanyInsightCreation 메서드에 try-catch 블록이 추가되었고, 실패 시 fallbackToStatus를 호출하도록 변경되었습니다.
    • fallbackToStatus 프라이빗 메서드가 추가되어 특정 상태로 전환하는 로직을 캡슐화했습니다.
  • src/modules/internal/presentation/internal-correction-result.controller.ts
    • saveCorrectionResult 핸들러에서 item.description, responsibilities, problemSolving, learnings 필드를 Record<string, unknown>으로 캐스팅하도록 변경되었습니다.
    • portfolioCorrectionService.saveCorrectionResult 호출 시 body.overallReview를 추가 인자로 전달하도록 변경되었습니다.
  • src/modules/payment/infrastructure/repositories/payment.repository.ts
    • getSeoulNow 유틸리티 함수가 임포트되었습니다.
    • update 쿼리에서 updatedAt 필드를 getSeoulNow()로 자동 업데이트하도록 변경되었습니다.
  • src/modules/portfolio-correction/application/dtos/correction-result.dto.ts
    • OverallReviewPayload 타입 정의가 제거되었습니다.
    • CorrectionResultResDTO에 overallReview 필드가 추가되었습니다.
    • CorrectionItemResDTO에서 overallReview 필드가 제거되었습니다.
  • src/modules/portfolio-correction/application/facades/portfolio-correction.facade.ts
    • CorrectionStatus enum이 임포트되었습니다.
    • delegateCorrectionGeneration 및 delegateCompanyInsightCreation 메서드가 void에서 Promise로 변경되었고, await 및 try-catch 로직이 추가되었습니다.
    • 실패 시 CorrectionStatus.FAILED 또는 CorrectionStatus.RAG_FAILED로 상태를 업데이트하는 fallbackToStatus 메서드가 추가되었습니다.
  • src/modules/portfolio-correction/application/services/portfolio-correction.service.spec.ts
    • 테스트 헬퍼 함수 createCorrectionItem에서 overallReview 필드 설정이 제거되었습니다.
    • saveCorrectionResult 테스트 케이스에서 overallReview 인자가 추가되었고, repository.updateById 호출 시 overallReview가 전달되는지 확인하는 로직이 추가되었습니다.
  • src/modules/portfolio-correction/application/services/portfolio-correction.service.ts
    • transitionToGenerating 메서드에서 RAG_FAILED 상태도 실패 상태로 처리하도록 로직이 확장되었습니다.
    • saveCorrectionResult 메서드 시그니처에 overallReview: string 인자가 추가되었습니다.
    • CorrectionItem 업데이트 로직에서 overallReview 필드 설정이 제거되었습니다.
    • portfolioCorrectionRepository.updateById 호출 시 overallReview를 함께 업데이트하도록 변경되었습니다.
  • src/modules/portfolio-correction/domain/correction-item.entity.ts
    • overallReview 컬럼이 제거되었습니다.
  • src/modules/portfolio-correction/domain/enums/correction-status.enum.ts
    • RAG_FAILED 상태가 추가되었습니다.
  • src/modules/portfolio-correction/domain/portfolio-correction.entity.ts
    • overallReview 컬럼이 text 타입으로 추가되었습니다.
  • src/modules/portfolio-correction/infrastructure/repositories/portfolio-correction.repository.ts
    • getSeoulNow 유틸리티 함수가 임포트되었습니다.
    • updateById 메서드에서 updatedAt 필드를 getSeoulNow()로 자동 업데이트하도록 변경되었습니다.
  • src/modules/portfolio/domain/portfolio.entity.ts
    • description, responsibilities, problemSolving, learnings 필드의 최대 길이가 400에서 1000으로 증가되었습니다.
  • src/modules/ticket/infrastructure/repositories/ticket.repository.ts
    • getSeoulNow 유틸리티 함수가 임포트되었습니다.
    • expireTickets 메서드에서 updatedAt 필드를 getSeoulNow()로 자동 업데이트하도록 변경되었습니다.
  • src/modules/user/infrastructure/repositories/user.repository.ts
    • getSeoulNow 유틸리티 함수가 임포트되었습니다.
    • deactivateUser 메서드에서 updatedAt 필드를 getSeoulNow()로 자동 업데이트하도록 변경되었습니다.
  • supabase/migrations/20260309010000_increase_portfolio_field_length_to_1000.sql
    • portfolio 테이블의 description, responsibilities, problem_solving, learnings 컬럼의 VARCHAR 길이를 1000으로 늘리는 SQL 마이그레이션 파일이 추가되었습니다.
  • supabase/migrations/20260309120000_refactor_correction_overall_review.sql
    • portfolio_correction 테이블에 overall_review 컬럼을 추가하고, correction_item 테이블에서 overall_review 컬럼을 제거하는 SQL 마이그레이션 파일이 추가되었습니다.
  • supabase/migrations/20260309130000_add_failed_to_correction_status.sql
    • portfolio_correction_status_enum에 FAILED 값을 추가하는 SQL 마이그레이션 파일이 추가되었습니다.
  • supabase/migrations/20260309140000_add_rag_failed_to_correction_status.sql
    • portfolio_correction_status_enum에 RAG_FAILED 값을 추가하는 SQL 마이그레이션 파일이 추가되었습니다.
Activity
  • 이 PR은 OBT(Open Beta Test) 오픈 전 수정사항을 반영하기 위해 생성되었습니다.
  • 주요 변경사항은 코드 수정 및 데이터베이스 마이그레이션 스크립트 추가로 구성되어 있습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

이 PR은 첨삭 결과 저장 로직을 리팩토링하고, AI 서버 연동 시 오류 처리 로직을 강화하며, 여러 엔티티의 updatedAt 필드가 누락되던 문제를 수정하는 등 다수의 개선 사항을 포함하고 있습니다. 특히 overallReviewCorrectionItem에서 PortfolioCorrection으로 이동시킨 점과, 비동기 작업 실패 시 상태를 FAILED 또는 RAG_FAILED로 전이시키는 로직 추가는 시스템의 안정성을 크게 향상시킬 것입니다. 전반적으로 코드 품질을 높이는 좋은 변경 사항들이며, 한 가지 타입 단언과 관련된 작은 개선점을 코멘트로 남겼습니다.

hyoinkang and others added 3 commits March 9, 2026 22:27
* refactor: Admin 이벤트 보상 시스템 단순화 및 레거시 정리 (#319)

- Notice 수동 입력 필드 제거, event DB 값 기반 자동 구성
- CS 이벤트 다중 지급 지원 (allowMultipleRewards)
- CS 커스텀 이용권 선택 (customRewards DTO 추가)
- 어드민 이벤트 드롭다운 기간 필터 제거
- CTA 자동 매핑 (보상 종류 기반)
- POST /admin/api/tickets/grant API 제거 (CS 이벤트로 통합)
- GET /admin/api/tickets/history API 제거 (ticket-grants로 통합)
- Admin UI: 이용권 거래 내역 탭/이용권 지급 버튼 제거
- Admin UI: GrantEventRewardModal 리팩터링
- manual-reward-options에 userId 쿼리 추가 (isGranted 포함)
- FEEDBACK/CS 이벤트 seed 마이그레이션 추가

* docs: API.md 제거된 엔드포인트 반영 (#319)

- POST /admin/api/tickets/grant 제거 반영
- GET /admin/api/tickets/history 제거 반영
- GET /admin/api/events/manual-reward-options 문서 추가

* refactor: createNotice 체크박스 제거, 항상 notice 생성 (#319)

- Admin UI: 보상 안내 모달 체크박스 제거 → 항상 생성
- AdminGrantRewardReqDTO: createNotice 필드 제거
- buildNoticeFromEvent: createNotice 파라미터 제거

* fix: 이벤트 옵션 로드 실패 시 에러 메시지 표시 (#319)
@hyoinkang hyoinkang merged commit 9181256 into main Mar 10, 2026
4 checks passed
@IISweetHeartII IISweetHeartII mentioned this pull request Mar 10, 2026
19 tasks
IISweetHeartII added a commit that referenced this pull request Mar 10, 2026
* Fix: 포트폴리오 내용 글자수 임시 변경 (#313)

* Fix: rag 요청 실패 시 fallback 로직 추가 (#312)

* fix: rag 생성 실패 시 fallback 코드 추가

- rag 생성 호출이 실패하면 상태를 failed로 바꾼다.

* fix: AI 서버 스펙 변경에 맞춰 API 스펙 수정 및 엔티티 마이그레이션

- 누락된 failed enum을 추가
- 첨삭 총평 필드를 correction_item에서 제거하고 portfolio-correction에 추가

* feat: correctionStatus enum 상태 다양화

- rag가 실패한 경우와 첨삭이 실패한 경우를 분리하기 위해 enum 상태를 추가함.

* refactor: try/catch 구문을 사용해 오류 처리 로직 개선

- async/await 비동기 오류 처리로 오류 처리 로직을 더 명확하고 읽기 쉽게 개선

* fix: createdAt 시간 오류 해결 (#315)

* Fix: 인사이트로그 시간 에러 해결 (#317)

- 채팅 멘션 주석처리

* Fix: 시간 UTC로 롤백 (#318)

* Refactor: Admin 이벤트 보상 시스템 단순화 및 레거시 정리 (#319) (#320)

* refactor: Admin 이벤트 보상 시스템 단순화 및 레거시 정리 (#319)

- Notice 수동 입력 필드 제거, event DB 값 기반 자동 구성
- CS 이벤트 다중 지급 지원 (allowMultipleRewards)
- CS 커스텀 이용권 선택 (customRewards DTO 추가)
- 어드민 이벤트 드롭다운 기간 필터 제거
- CTA 자동 매핑 (보상 종류 기반)
- POST /admin/api/tickets/grant API 제거 (CS 이벤트로 통합)
- GET /admin/api/tickets/history API 제거 (ticket-grants로 통합)
- Admin UI: 이용권 거래 내역 탭/이용권 지급 버튼 제거
- Admin UI: GrantEventRewardModal 리팩터링
- manual-reward-options에 userId 쿼리 추가 (isGranted 포함)
- FEEDBACK/CS 이벤트 seed 마이그레이션 추가

* docs: API.md 제거된 엔드포인트 반영 (#319)

- POST /admin/api/tickets/grant 제거 반영
- GET /admin/api/tickets/history 제거 반영
- GET /admin/api/events/manual-reward-options 문서 추가

* refactor: createNotice 체크박스 제거, 항상 notice 생성 (#319)

- Admin UI: 보상 안내 모달 체크박스 제거 → 항상 생성
- AdminGrantRewardReqDTO: createNotice 필드 제거
- buildNoticeFromEvent: createNotice 파라미터 제거

* fix: 이벤트 옵션 로드 실패 시 에러 메시지 표시 (#319)

---------

Co-authored-by: 강효인 <hyoin1704@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants