Skip to content

Conversation

@HD152521
Copy link
Owner

중국어로 변경완료 MVP배포

@HD152521 HD152521 merged commit 42dfd86 into main Dec 15, 2025
2 checks passed
@gemini-code-assist
Copy link

Summary of Changes

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

此拉取请求旨在通过将应用程序的界面和内容全面本地化为中文,为MVP(最小可行产品)的部署做好准备。它涵盖了从导航元素到复杂表单和动态内容的广泛翻译工作。除了语言本地化,还实施了多项代码改进和错误修复,以优化应用程序的性能、健壮性和用户体验,特别是在代理机构查询、文件处理和动态内容渲染方面。

Highlights

  • 中文本地化: 此拉取请求的核心是全面将应用程序的用户界面和内容翻译成中文,为MVP部署做准备。这包括导航、页脚、表单字段、按钮文本、提示信息以及动态生成的内容,如调查问卷和学校信息。
  • 增强的代理机构查询逻辑: 代理机构查询方法已更新,现在包含一个'共享'参数,确保在会员注册过程中只考虑已共享的代理机构,从而提高数据筛选的准确性。
  • JavaScript逻辑改进与错误修复: 多个JavaScript文件中的逻辑得到了增强,包括修复了代理机构地址搜索中的错误、改进了日历事件显示、优化了动态表单元素的ID生成,并确保了在元素不存在时代码的健壮性。这些改进提高了用户体验和应用程序的稳定性。
  • CSS输出更新: Tailwind CSS的输出文件已更新,这通常是由于样式更改或重新编译所致,确保了最新的样式定义被应用。
  • 文件URL标准化: 文件URL的生成方式已修改,将文件类型转换为小写,以确保URL路径的一致性。
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

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

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.

ℹ️ 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 +259 to 262
<!-- ... (중간 내용 동일) ... -->
<!-- (이 아래 섹션들은 너 코드 그대로 두었음) -->
<!-- 사업자등록증 / 대표사진 / 설문 기록 ... -->
</section>

Choose a reason for hiding this comment

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

P1 Badge Restore removed profile sections

The profile template now ends the main content at lines 259‑262 with placeholder comments and no markup for the business certificate, agency picture, or survey history sections that existed previously. With the HTML removed, users can no longer view or upload a business certificate or agency photo, and those actions are unreachable regardless of input or environment. This is a functional regression introduced here rather than a localization change.

Useful? React with 👍 / 👎.

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은 애플리케이션의 중국어 현지화 작업을 주로 다루고 있습니다. 대부분의 변경 사항은 한국어 텍스트를 중국어로 번역하는 것입니다. 이와 더불어, 중복된 ID 사용, 언어 종속적인 로직 등 여러 JavaScript 버그를 수정하고 코드를 개선한 점이 인상적입니다. 백엔드에서도 새로운 필터링 로직을 지원하기 위한 변경과 코드 정리가 이루어졌습니다. 전반적으로 좋은 변경이지만, 몇 가지 개선점을 제안합니다. 특히, SurveySaveService.java 파일에 하드코딩된 문자열이 많아 유지보수성이 떨어질 수 있습니다. 이를 외부 리소스 파일로 분리하는 것을 강력히 권장합니다. 또한, IntroPost.java에서 문자열 검사를 더 견고하게 만들 수 있는 제안과, SurveySaveService.java에 남아있는 한국어 주석에 대한 피드백을 포함했습니다.

Comment on lines 309 to 359
new QuestionDto(
null,
"hierarchy",
"학/석사 선택",
"本科/硕士选择",
"",
List.of(
// ====== Level 1 (학사 / 석사) ======
new OptionDto(0, null, "학사", null, null, "1-1", 1),
new OptionDto(0, null, "석사", null, null, "1-2", 1),
new OptionDto(0, null, "本科", null, null, "1-1", 1),
new OptionDto(0, null, "硕士", null, null, "1-2", 1),

// ====== Level 2: 학사 계열 단과대학 ======
new OptionDto(0, null, "소프트웨어융합대학", null, "1-1", "2-1", 2),
new OptionDto(0, null, "자연과학대학", null, "1-1", "2-2", 2),
new OptionDto(0, null, "软件融合学院", null, "1-1", "2-1", 2),
new OptionDto(0, null, "自然科学学院", null, "1-1", "2-2", 2),

// ====== Level 3: 소프트웨어융합대학 학과 ======
new OptionDto(0, null, "컴퓨터공학과", null, "2-1", "3-1", 3),
new OptionDto(0, null, "지능기전공학과", null, "2-1", "3-2", 3),
new OptionDto(0, null, "计算机工程系", null, "2-1", "3-1", 3),
new OptionDto(0, null, "智能机电工程系", null, "2-1", "3-2", 3),

// ====== Level 3: 자연과학대학 학과 ======
new OptionDto(0, null, "물리천문학과", null, "2-2", "3-3", 3),
new OptionDto(0, null, "수학통계학과", null, "2-2", "3-4", 3),
new OptionDto(0, null, "物理天文学系", null, "2-2", "3-3", 3),
new OptionDto(0, null, "数学统计学系", null, "2-2", "3-4", 3),

// ====== Level 2: 석사 계열 단과대학 ======
new OptionDto(0, null, "자연과학", null, "1-2", "2-3", 2),
new OptionDto(0, null, "공학", null, "1-2", "2-4", 2),
new OptionDto(0, null, "自然科学", null, "1-2", "2-3", 2),
new OptionDto(0, null, "工学", null, "1-2", "2-4", 2),

// ====== Level 3: 석사 계열 학과 ======
new OptionDto(0, null, "수학과", null, "2-3", "3-5", 3),
new OptionDto(0, null, "응용통계학과", null, "2-3", "3-6", 3),
new OptionDto(0, null, "건축공학과", null, "2-4", "3-7", 3),
new OptionDto(0, null, "건설환경공학과", null, "2-4", "3-8", 3)
new OptionDto(0, null, "数学系", null, "2-3", "3-5", 3),
new OptionDto(0, null, "应用统计学系", null, "2-3", "3-6", 3),
new OptionDto(0, null, "建筑工程系", null, "2-4", "3-7", 3),
new OptionDto(0, null, "建设环境工程系", null, "2-4", "3-8", 3)
),
0,
true,
"degreeZip"
)
,
new QuestionDto(null, "short", "중국어이름", "", null, 0, true, "chineseName"),
new QuestionDto(null, "short", "영문이름", "", null, 0, true, "englishName"),
new QuestionDto(null, "date", "생년월일", "", null, 0, true, "birthDate"),
new QuestionDto(null, "multiple", "성별", "", List.of(
new OptionDto(0, null, "남성", null,null,null,0),
new OptionDto(0, null, "여성", null,null,null,0)
),
new QuestionDto(null, "short", "中文姓名", "", null, 0, true, "chineseName"),
new QuestionDto(null, "short", "英文姓名", "", null, 0, true, "englishName"),
new QuestionDto(null, "date", "出生日期", "", null, 0, true, "birthDate"),
new QuestionDto(null, "multiple", "性别", "", List.of(
new OptionDto(0, null, "男", null, null, null, 0),
new OptionDto(0, null, "女", null, null, null, 0)
), 0, true, "gender"),

new QuestionDto(null, "short", "학생 메일", "", null, 0, true, "studentEmail"),
new QuestionDto(null, "short", "여권 번호", "", null, 0, true, "passportNumber"),
new QuestionDto(null, "short", "수험 번호", "", null, 0, true, "examNumber"),
new QuestionDto(null, "short", "유학원 담당자 위챗", "", null, 0, true, "agentWechat"),
new QuestionDto(null, "short", "유학원 담당자 이메일", "", null, 0, true, "agentEmail"),
new QuestionDto(null, "short", "긴급연락처", "", null, 0, true, "emergencyContactNum")
new QuestionDto(null, "short", "学生邮箱", "", null, 0, true, "studentEmail"),
new QuestionDto(null, "short", "护照号码", "", null, 0, true, "passportNumber"),
new QuestionDto(null, "short", "准考证号", "", null, 0, true, "examNumber"),
new QuestionDto(null, "short", "留学机构负责人微信", "", null, 0, true, "agentWechat"),
new QuestionDto(null, "short", "留学机构负责人邮箱", "", null, 0, true, "agentEmail"),
new QuestionDto(null, "short", "紧急联系方式", "", null, 0, true, "emergencyContactNum")
);

Choose a reason for hiding this comment

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

high

설문 질문과 옵션에 대한 많은 중국어 문자열이 Java 코드에 하드코딩되어 있습니다. 이렇게 하면 향후 텍스트를 수정하거나 다른 언어를 추가할 때마다 코드를 변경하고 재배포해야 하므로 유지보수가 어렵습니다. 이러한 문자열들은 외부 리소스 파일(예: messages_zh.properties)로 분리하고, 코드에서는 해당 리소스의 키를 참조하여 값을 불러오는 방식을 사용하는 것이 좋습니다. 이를 통해 코드와 콘텐츠를 분리하여 관리 효율성을 높일 수 있습니다.


public String getImgUrl(){
if(this.schoolPicUrl==null){
if(this.schoolPicUrl==null || this.schoolPicUrl.isEmpty()){

Choose a reason for hiding this comment

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

medium

isEmpty() 대신 isBlank()를 사용하면 코드가 더 견고해집니다. isEmpty()는 문자열의 길이가 0인지만 확인하지만, isBlank()는 공백(whitespace)으로만 이루어진 문자열도 비어있는 것으로 간주하여 처리할 수 있습니다. Java 11 이상을 사용하고 계시다면 isBlank()로 변경하는 것을 권장합니다.

Suggested change
if(this.schoolPicUrl==null || this.schoolPicUrl.isEmpty()){
if(this.schoolPicUrl==null || this.schoolPicUrl.isBlank()){

"本科/硕士选择",
"",
List.of(
// ====== Level 1 (학사 / 석사) ======

Choose a reason for hiding this comment

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

medium

// ====== Level 1 (학사 / 석사) ====== 와 같이 코드 내에 한국어 주석이 남아있습니다. 중국어 현지화 작업의 일환으로, 다른 주석들(// ====== Level 2: 학사 계열 단과대학 ======, // ====== Level 3: ... 등)과 함께 중국어로 번역하거나, 코드만으로 의미가 충분히 전달된다면 제거하여 코드의 일관성과 가독성을 높이는 것이 좋겠습니다.

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