Skip to content

Fix: 구성원 정보 모달 기능 개선 및 오류 수정 (주소 Placeholder, 학력 글자 수, 캐싱 등) - #52

Open
scs0209 wants to merge 7 commits into
mainfrom
test/code-review
Open

Fix: 구성원 정보 모달 기능 개선 및 오류 수정 (주소 Placeholder, 학력 글자 수, 캐싱 등)#52
scs0209 wants to merge 7 commits into
mainfrom
test/code-review

Conversation

@scs0209

@scs0209 scs0209 commented Jun 28, 2025

Copy link
Copy Markdown
Owner

변경 내용:

이 PR은 구성원 정보 관리 기능과 관련된 여러 버그를 수정하고 사용자 경험을 개선합니다.

  1. 모달 내 초기값 자동 선택 기능 추가:
    • SelectDegreeModal.tsx, SelectEmploymentStatusModal.tsx, SelectGraduateStatusModal.tsx에서 초기값이 제공되지 않을 경우, 첫 번째 항목이 자동으로 선택되도록 기능을 추가했습니다. 이는 사용자가 수동으로 첫 번째 옵션을 선택해야 하는 불편함을 줄여줍니다.
  2. 모달 버튼 텍스트 및 비활성화 로직 개선:
    • 위 세 모달의 하단 버튼 텍스트를 확인에서 적용으로 변경했습니다.
    • 버튼 비활성화 조건에 !selectedDegree, !selectedEmploymentStatusId, !selectedGraduateStatus 조건을 추가하여 선택된 항목이 없을 경우에도 적용 버튼이 비활성화되도록 수정했습니다.
  3. 주소 입력 Placeholder 문구 수정:
    • SearchAddressModal.tsx에서 "직접 입력" 탭의 주소 입력란 placeholder 문구를 기획에 맞게 strings.MSG__.ENTER_ADDRESS로 변경했습니다.
  4. 학력 메모 최대 글자 수 증대:
    • useBulkEditPersonalInfoTableColumns.tsx에서 학력 관련 메모 필드의 최대 입력 가능 글자 수를 기존 100자에서 300자로 확장하여 기획 요구사항을 반영했습니다.
  5. 구성원 목록 캐시 무효화:
    • EditBasicInfoModal.tsx에서 구성원 기본 정보 수정 성공 시, adminUserInfoV3Search 쿼리 키를 사용하여 구성원 목록 캐시를 무효화하도록 추가했습니다. 이는 기본 정보 변경 후 목록 데이터가 즉시 최신화되도록 보장합니다.
  6. 학력/졸업 상태 옵션 목록 동적화:
    • SelectGraduateStatusModal.tsx에서 optionList를 함수로 변경하고 strings를 사용하여 옵션 이름을 관리하도록 수정하여 다국어 지원 및 유연성을 향상했습니다.

변경 이유:

  • SH-16955: 구성원 기본 정보 편집 후 목록 캐싱이 무효화되지 않아 최신 정보가 반영되지 않던 문제를 해결합니다. 또한, 옵션 선택 팝업에서 발생하던 오류를 전반적인 모달 개선을 통해 방지합니다.
  • SH-16956: "구성원 > 개인 정보 일괄 수정 > 업로드한 구성원 > 학력 > 메모 최대 입력 가능 글자 수 기획과 상이함" 이슈를 해결하기 위해 최대 글자 수를 조정합니다.
  • SH-16959: SelectEmploymentStatusModal 및 관련 모달에서 초기 선택이 없어 사용자 경험이 저하되던 문제를 개선하고, 기획에 따라 첫 번째 항목이 자동 선택되도록 합니다.
  • "구성원 > 개인 정보 일괄 수정 > 업로드한 구성원 > 집 주소 입력 팝업 > 직접 입력 탭 > 주소 입력 placeholder 문구 기획과 상이함" 이슈를 해결하기 위해 placeholder 문구를 수정합니다.

기술적 구현 상세:

  • SelectDegreeModal.tsx, SelectEmploymentStatusModal.tsx, SelectGraduateStatusModal.tsx:
    • useState의 초기값 설정 로직에 optionList()?.[0]?.optionId 또는 employmentStatusList?.[0]?.employmentStatusId를 추가하여 자동 선택을 구현했습니다.
    • SelectEmploymentStatusModal에는 useEffect 훅을 사용하여 isLoading 상태와 employmentStatusList의 로드 여부를 감지하고, initialEmploymentStatusId가 없을 때 첫 번째 항목을 선택하도록 추가 로직을 구현했습니다.
    • disabled 속성에서 !selected*Status 조건을 추가하여 유효하지 않은 선택 상태를 방지했습니다.
  • EditBasicInfoModal.tsx:
    • react-queryqueryClient.invalidateQueries를 사용하여 ['adminUserInfoV3Search'] 쿼리 키를 가진 데이터를 무효화함으로써 구성원 목록의 최신화를 강제했습니다.
  • SearchAddressModal.tsx:
    • Input 컴포넌트의 placeholder prop에 strings.MSG__.ENTER_ADDRESS를 직접 할당하여 문구를 변경했습니다.
  • useBulkEditPersonalInfoTableColumns.tsx:
    • StyledInputWrapper 컴포넌트의 maxLength prop 값을 100에서 300으로 변경했습니다.
  • SelectGraduateStatusModal.tsx:
    • optionListoptionList = () => [...] 형태로 변경하여 함수 호출을 통해 옵션 목록을 얻도록 했으며, strings 객체를 활용하여 옵션 이름을 로드하도록 변경했습니다.

영향 범위:

  • SelectDegreeModal, SelectEmploymentStatusModal, SelectGraduateStatusModal을 사용하는 모든 구성원 정보 편집 및 일괄 수정 플로우에 적용됩니다.
  • 구성원 기본 정보 편집 시, 구성원 목록 데이터의 실시간 동기화가 개선됩니다.
  • 구성원 일괄 수정 시, 주소 입력 및 학력 메모 필드의 UI/UX가 개선됩니다.

scs0209 added 4 commits June 28, 2025 13:40
- Gemini Code Assistant 문서 생성: 자동 코드 리뷰 프로세스 설명
- 커스텀 리뷰 가이드라인 추가: 코딩 컨벤션, 베스트 프랙티스, 가독성, 성능, 에러 처리, 테스트 항목 포함
- GitHub Actions 워크플로우 수정: 코드 리뷰 자동화 및 리뷰 결과 댓글 작성 기능 추가
- 리뷰 품질 향상 처리: 코드 예시 품질 검증 및 통계 분석 기능 추가
- 아키텍처 섹션 추가: Feature-Sliced Design(FSD) 원칙 준수 확인 항목 추가
- 기존 GitHub Actions 워크플로우 파일 삭제: 자동 리뷰 시스템 관련 파일 제거
- 리뷰 언어 및 전반적인 원칙 섹션을 영어로 번역
- TypeScript & Next.js, 테스트, 보안 섹션의 내용 영어로 업데이트
- 자동 코드 리뷰를 위한 Gemini Code Assistant 구성 파일 생성
- PR 리뷰 트리거 이벤트 및 활성화할 기능 정의
@vercel

vercel Bot commented Jun 28, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
3d-blog ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 28, 2025 5:19am

@gemini-code-assist gemini-code-assist 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.

Summary of Changes

Hello @scs0209, 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!

This pull request introduces a new foundational document that establishes a set of comprehensive guidelines for conducting code reviews. It appears to be a template or a definition for an automated code review assistant, aiming to standardize the review process across various aspects of software development, from coding style to architectural adherence and testing.

Highlights

  • New Documentation: A new markdown document, gemini.md, has been added. This document outlines comprehensive guidelines for an automated code review process, specifically referencing a 'Gemini Code Assistant'.
  • Code Review Guidelines Defined: The newly introduced gemini.md file details custom code review guidelines. These guidelines cover critical aspects such as coding conventions, architectural principles (e.g., Feature-Sliced Design), best practices (e.g., SOLID principles), code readability, performance considerations, robust error handling, and adequate test coverage.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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 is currently in preview and 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 to provide feedback.

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.

@gemini-code-assist gemini-code-assist 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.

Code Review

이 PR은 코드 리뷰 자동화를 위한 Gemini Code Assistant의 가이드라인 문서를 추가합니다. 전반적으로 가이드라인은 잘 구성되어 있지만, 애플리케이션의 견고함과 안전에 필수적인 보안 검토 항목이 빠져 있습니다. 가이드라인을 완성하기 위해 이 항목을 추가할 것을 제안했습니다.

Comment thread gemini.md
Comment on lines +9 to +15
- **코딩 컨벤션:** 새로운 코드가 기존 프로젝트의 이름 지정, 서식, 구조 등 코딩 컨벤션을 준수하는지 확인합니다.
- **아키텍처:** 코드가 Feature-Sliced Design (FSD) 원칙(예: 단방향 의존성, 슬라이스 격리)을 준수하는지 확인합니다.
- **베스트 프랙티스:** 각 언어별 베스트 프랙티스(예: 객체 지향 프로그래밍의 SOLID 원칙, Python/JavaScript의 관용적 표현)를 따르는지 확인합니다.
- **가독성:** 코드가 이해하기 쉬운지, 변수 이름이 명확한지, 로직이 간단명료한지 검토합니다.
- **성능:** 명백한 성능 저하를 유발하는 부분이나 비효율적인 쿼리가 있는지 확인합니다.
- **에러 처리:** 에러 처리가 견고하게 구현되었는지, 처리되지 않은 예외가 있는지 확인합니다.
- **테스트:** 변경 사항이 새로운 테스트나 기존 테스트에 의해 충분히 커버되는지 확인합니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

현재 리뷰 가이드라인은 포괄적이지만 중요한 측면인 보안이 누락되었습니다. 가이드라인에 보안 검사를 명시적으로 포함하면 코드 리뷰 중에 잠재적인 취약점을 적극적으로 찾아낼 수 있습니다. 이는 견고하고 안전한 애플리케이션을 구축하는 데 매우 중요합니다.

아래와 같이 목록에 '보안' 항목을 추가하는 것을 제안합니다.

Suggested change
- **코딩 컨벤션:** 새로운 코드가 기존 프로젝트의 이름 지정, 서식, 구조 등 코딩 컨벤션을 준수하는지 확인합니다.
- **아키텍처:** 코드가 Feature-Sliced Design (FSD) 원칙(예: 단방향 의존성, 슬라이스 격리)을 준수하는지 확인합니다.
- **베스트 프랙티스:** 각 언어별 베스트 프랙티스(예: 객체 지향 프로그래밍의 SOLID 원칙, Python/JavaScript의 관용적 표현)를 따르는지 확인합니다.
- **가독성:** 코드가 이해하기 쉬운지, 변수 이름이 명확한지, 로직이 간단명료한지 검토합니다.
- **성능:** 명백한 성능 저하를 유발하는 부분이나 비효율적인 쿼리가 있는지 확인합니다.
- **에러 처리:** 에러 처리가 견고하게 구현되었는지, 처리되지 않은 예외가 있는지 확인합니다.
- **테스트:** 변경 사항이 새로운 테스트나 기존 테스트에 의해 충분히 커버되는지 확인합니다.
- **코딩 컨벤션:** 새로운 코드가 기존 프로젝트의 이름 지정, 서식, 구조 등 코딩 컨벤션을 준수하는지 확인합니다.
- **아키텍처:** 코드가 Feature-Sliced Design (FSD) 원칙(예: 단방향 의존성, 슬라이스 격리)을 준수하는지 확인합니다.
- **베스트 프랙티스:** 각 언어별 베스트 프랙티스(예: 객체 지향 프로그래밍의 SOLID 원칙, Python/JavaScript의 관용적 표현)를 따르는지 확인합니다.
- **가독성:** 코드가 이해하기 쉬운지, 변수 이름이 명확한지, 로직이 간단명료한지 검토합니다.
- **성능:** 명백한 성능 저하를 유발하는 부분이나 비효율적인 쿼리가 있는지 확인합니다.
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다.
- **에러 처리:** 에러 처리가 견고하게 구현되었는지, 처리되지 않은 예외가 있는지 확인합니다.
- **테스트:** 변경 사항이 새로운 테스트나 기존 테스트에 의해 충분히 커버되는지 확인합니다.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

@gemini-code-assist 보안을 넣으면 좋은 이유가 뭔데??

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

보안을 코드 리뷰 가이드라인에 포함하는 것은 여러 가지 중요한 이점이 있습니다.

  1. 잠재적 취약점 조기 발견: SQL 인젝션, XSS(Cross-Site Scripting), 인증/인가 문제, 민감한 데이터 노출 등과 같은 보안 취약점은 개발 초기 단계에서 발견하고 수정하는 것이 가장 효율적입니다. 릴리스 후에 발견되면 훨씬 더 많은 비용과 노력이 소요됩니다.
  2. 애플리케이션 견고성 강화: 보안 검토를 통해 악의적인 공격으로부터 시스템을 보호하고, 데이터 무결성과 기밀성을 유지하여 더욱 견고하고 신뢰할 수 있는 애플리케이션을 구축할 수 있습니다.
  3. 위험 감소: 보안 취약점은 데이터 유출, 서비스 중단, 평판 손상 등 심각한 비즈니스 위험으로 이어질 수 있습니다. 코드 리뷰에서 보안을 강조함으로써 이러한 위험을 사전에 줄일 수 있습니다.
  4. 보안 인식 향상: 개발자들이 코드 작성 시부터 보안을 고려하도록 유도하여 팀 전체의 보안 의식을 높이고, 장기적으로 더 안전한 코드를 작성하는 문화를 조성할 수 있습니다.
  5. 규제 준수: 많은 산업 분야에서 데이터 보호 및 보안에 대한 엄격한 규제(예: GDPR, HIPAA)가 있습니다. 코드 리뷰에 보안을 포함하면 이러한 규제 준수를 용이하게 합니다.

결론적으로, 보안은 애플리케이션의 핵심 품질 요소 중 하나이며, 코드 리뷰 과정에서 이를 명시적으로 다루는 것은 장기적인 관점에서 매우 중요합니다.

- SQL 인젝션, XSS 등 잠재적인 보안 취약점 확인 항목 추가
- 자동 코드 리뷰 기능 활성화 방식 변경: PR 생성 시 및 이후 커밋에 대한 자동 리뷰 설정 추가
- 불필요한 주석 제거 및 설정 파일 간소화
- 자동 코드 리뷰 기능 활성화 방식 간소화 및 추가 기능 활성화
- 리뷰 댓글 심각도 설정 및 코드 리뷰 관련 설정 추가
- PR 생성 시 요약 및 코드 리뷰 활성화 설정 추가
@scs0209

scs0209 commented Jun 28, 2025

Copy link
Copy Markdown
Owner Author

/gemini review

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request introduces a new Markdown file, gemini.md, which outlines comprehensive code review guidelines for the project. The guidelines cover key areas such as coding conventions, architecture principles (FSD), best practices, readability, performance, error handling, testing, and security. My review primarily focuses on ensuring the file adheres to common text file formatting standards.

Comment thread gemini.md
- **성능:** 명백한 성능 저하를 유발하는 부분이나 비효율적인 쿼리가 있는지 확인합니다.
- **에러 처리:** 에러 처리가 견고하게 구현되었는지, 처리되지 않은 예외가 있는지 확인합니다.
- **테스트:** 변경 사항이 새로운 테스트나 기존 테스트에 의해 충분히 커버되는지 확인합니다.
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다. No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

It's a common best practice for text files, including Markdown files, to end with a newline character. This ensures proper rendering and compatibility with various tools and version control systems, and avoids issues when concatenating files.

@scs0209

scs0209 commented Jun 28, 2025

Copy link
Copy Markdown
Owner Author

/gemini review

@gemini-code-assist gemini-code-assist 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.

Code Review

The pull request introduces a gemini.md file to serve as a template for automated code review guidelines. The review suggests enhancing the template by adding a check for web accessibility.

Comment thread gemini.md
- **성능:** 명백한 성능 저하를 유발하는 부분이나 비효율적인 쿼리가 있는지 확인합니다.
- **에러 처리:** 에러 처리가 견고하게 구현되었는지, 처리되지 않은 예외가 있는지 확인합니다.
- **테스트:** 변경 사항이 새로운 테스트나 기존 테스트에 의해 충분히 커버되는지 확인합니다.
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다. No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Consider adding a check for web accessibility (a11y) to ensure the application is usable by everyone. This could include verifying semantic HTML, ARIA attributes, and keyboard navigation.

Suggested change
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다.
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다.
- **접근성(Accessibility):** 시맨틱 HTML, ARIA 속성, 키보드 탐색 등 웹 접근성 표준을 준수하는지 확인합니다.

@scs0209

scs0209 commented Jun 28, 2025

Copy link
Copy Markdown
Owner Author

@gemini-code-assist 어떻게 더 좋게 스타일 가이드를 작성할수 있을까?

@scs0209

scs0209 commented Jun 28, 2025

Copy link
Copy Markdown
Owner Author

/gemini review

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request introduces a new markdown file, gemini.md, which outlines guidelines for an automated code review process. The file is written in Korean.

My review includes one suggestion to improve file formatting by adding a newline at the end of the file. This is a common best practice for text files, aligned with POSIX standards for text file formatting, and helps ensure file integrity and compatibility with various development tools.

Comment thread gemini.md
- **성능:** 명백한 성능 저하를 유발하는 부분이나 비효율적인 쿼리가 있는지 확인합니다.
- **에러 처리:** 에러 처리가 견고하게 구현되었는지, 처리되지 않은 예외가 있는지 확인합니다.
- **테스트:** 변경 사항이 새로운 테스트나 기존 테스트에 의해 충분히 커버되는지 확인합니다.
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다. No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

It's a good practice to end files with a single newline character.1 This can prevent issues with file concatenation and some command-line tools that process text files line by line.

(Korean) 파일의 마지막에 개행 문자를 추가하는 것이 좋습니다. 이렇게 하면 파일 연결 및 일부 명령줄 도구에서 발생할 수 있는 문제를 방지할 수 있습니다.

Style Guide References

Suggested change
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다.
- **보안:** SQL 인젝션, XSS(Cross-Site Scripting) 등 잠재적인 보안 취약점이 있는지 확인합니다.

Footnotes

  1. According to POSIX standards, a text file consists of lines, and each line must end with a newline character. Files not ending with a newline can cause unexpected behavior with standard text-processing utilities like cat and wc.

@scs0209 scs0209 closed this Jan 11, 2026
@scs0209 scs0209 reopened this Jan 11, 2026
@scs0209 scs0209 closed this Jan 11, 2026
@scs0209 scs0209 reopened this Jan 11, 2026
@scs0209 scs0209 closed this Jan 11, 2026
@scs0209 scs0209 reopened this Jan 11, 2026
@scs0209 scs0209 closed this Jan 11, 2026
@scs0209 scs0209 changed the title Test/code review Fix: 구성원 정보 모달 기능 개선 및 오류 수정 (주소 Placeholder, 학력 글자 수, 캐싱 등) Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
@scs0209 scs0209 closed this Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
@scs0209 scs0209 closed this Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
@scs0209 scs0209 closed this Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
@scs0209 scs0209 closed this Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
@scs0209 scs0209 closed this Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
@scs0209 scs0209 closed this Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
@scs0209 scs0209 closed this Jan 12, 2026
@scs0209 scs0209 reopened this Jan 12, 2026
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