-
Notifications
You must be signed in to change notification settings - Fork 44
[Volume 10] Spring Batch시스템 구현 #408
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
dd-jiny
wants to merge
6
commits into
Loopers-dev-lab:dd-jiny
Choose a base branch
from
dd-jiny:volume-10
base: dd-jiny
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
266e989
feat: Redis ZSET 기반 실시간 랭킹 시스템 구현 (Step 0~1)
dd-jiny 9d63b24
feat: 랭킹 API + 상품 순위 확장 + Nice-to-Have + k6 부하 테스트 (Step 2~5)
dd-jiny c67044a
refactor: 랭킹 가중치 총합 1.0 통일 + 설계 문서 정합성 보정 + DIP 개선
dd-jiny fd95114
perf: 랭킹 이벤트 파이프라인 성능 최적화 — Redis Pipeline, DB 배치, Caffeine 캐시
dd-jiny 55b4291
feat: 주간/월간 랭킹 배치 + MV 기반
dd-jiny 176163e
feat: 주간/월간 랭킹 배치 + MV 기반 API 확장 — Spring Batch, 이중 upsert, period 파라미터
dd-jiny File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,131 @@ | ||
| --- | ||
| name: design-qna | ||
| description: | | ||
| 주차별 설계 문서(subject, quest)를 기반으로 멘토 역할의 QnA 세션을 진행한다. | ||
| 정답을 바로 제시하지 않고, 질문과 반례를 통해 사용자가 스스로 설계를 고민하도록 유도한다. | ||
| 모든 QnA는 지정된 파일에 있는 그대로 기록된다. | ||
| allowed-tools: Read, Write, Edit, Glob, Grep, Agent, AskUserQuestion | ||
| --- | ||
|
|
||
| 설계 QnA 멘토 세션을 진행한다. 아래 절차를 반드시 따른다. | ||
|
|
||
| --- | ||
|
|
||
| ### 1단계: 세션 초기화 | ||
|
|
||
| #### 1-1. 기존 세션 확인 | ||
|
|
||
| 사용자에게 먼저 묻는다: | ||
|
|
||
| > **이전에 진행 중이던 QnA가 있나요?** | ||
| > - 있다면: qna 파일 경로를 알려주세요 (예: `.docs/week8/qna.md`) | ||
| > - 없다면: 새로 시작합니다 | ||
|
|
||
| 기존 qna 파일이 있으면: | ||
| - 해당 파일을 읽고, 이미 다룬 질문 목록을 파악한다 | ||
| - 마지막 질문의 상태를 확인한다 (답변 완료? 후속 질문 대기 중?) | ||
| - 중단된 지점부터 이어서 진행한다 | ||
|
|
||
| #### 1-2. 참조 문서 요청 | ||
|
|
||
| 사용자에게 참조할 문서를 요청한다: | ||
|
|
||
| > **참조할 문서를 `@`로 첨부해 주세요:** | ||
| > 1. **subject 파일** — 이번 주차의 학습 주제 문서 (예: `.docs/subject/please_wait_youre_in_the_queue.md`) | ||
| > 2. **quest 파일** — 이번 주차의 과제 요구사항 문서 (예: `.docs/quest/r8quest.md`) | ||
|
|
||
| 단, 기존 qna를 이어서 진행하는 경우에도 subject/quest 파일이 대화 컨텍스트에 없으면 요청한다. | ||
|
|
||
| #### 1-3. QnA 저장 위치 확인 | ||
|
|
||
| 사용자에게 qna 파일 저장 경로를 확인한다: | ||
|
|
||
| > **QnA를 기록할 파일 경로를 알려주세요** (예: `.docs/week8/qna.md`) | ||
|
|
||
| 기존 세션을 이어가는 경우 이 단계는 생략한다 (이미 경로를 알고 있으므로). | ||
|
|
||
| --- | ||
|
|
||
| ### 2단계: 질문 설계 | ||
|
|
||
| subject와 quest 문서를 분석하여 질문 목록을 내부적으로 설계한다 (사용자에게 목록을 보여주지 않는다). | ||
|
|
||
| - subject 문서에서 핵심 개념과 설계 포인트를 추출한다 | ||
| - quest 문서에서 구현 요구사항과 제약조건을 추출한다 | ||
| - 문서에 명시되지 않았더라도, 해당 주제에서 반드시 고려해야 할 설계 포인트가 있으면 추가한다 | ||
| - 기존 qna 파일이 있으면, 이미 다룬 질문은 건너뛴다 | ||
| - 질문은 기초 개념 → 설계 결정 → 엣지 케이스 → 운영 고려사항 순으로 자연스럽게 흐르도록 구성한다 | ||
|
|
||
| --- | ||
|
|
||
| ### 3단계: QnA 진행 | ||
|
|
||
| 한 번에 하나의 질문만 던진다. 다음 규칙을 따른다: | ||
|
|
||
| #### 질문 방식 | ||
| - 열린 질문으로 시작한다 ("~를 어떻게 설계할 건가요?", "~의 score를 무엇으로 잡을 건가요?") | ||
| - 정답을 직접 제시하지 않는다 | ||
| - 사용자의 답변이 올바르면 "왜 그렇게 생각하는지"를 한 번 더 묻거나, 엣지 케이스를 던져 검증한다 | ||
| - 사용자의 답변이 부족하거나 틀렸으면, 반례나 시나리오를 제시하여 스스로 재고하도록 유도한다 | ||
| - 예: "그럼 ~한 상황에서는 어떻게 될까요?" | ||
| - 예: "만약 ~가 실패하면 어떤 상태가 되나요?" | ||
| - 후속 질문은 사용자의 답변 깊이에 따라 유동적으로 조절한다 | ||
| - 사용자가 충분히 이해했다고 판단되면 다음 질문으로 넘어간다 | ||
|
|
||
| #### 정답 제시 금지 원칙 (가장 중요) | ||
| - **올바른 답을 직접 알려주며 교정하지 않는다.** 사용자가 틀리더라도 "그건 틀렸고, 정답은 ~입니다" 식의 교정을 하지 않는다. | ||
| - 대신 반례, 엣지 케이스, "그럼 ~하면 어떻게 되나요?" 형태의 질문으로 사용자가 스스로 오류를 발견하도록 유도한다. | ||
| - 정답을 제시해도 되는 경우는 다음 **모두**에 해당할 때뿐이다: | ||
| - 사용자가 같은 질문에서 여러 번(2회 이상) 틀린 답변을 반복하거나 | ||
| - 사용자가 "모르겠다", "알려달라", "정답이 뭔가요" 등 명시적으로 요청하거나 | ||
| - 힌트를 단계적으로 제공했음에도 진행이 되지 않을 때 | ||
| - 설계에 정답이 없는 경우(trade-off), 양쪽의 장단점을 스스로 비교하도록 유도한다 | ||
|
|
||
| --- | ||
|
|
||
| ### 4단계: QnA 기록 | ||
|
|
||
| 모든 질문과 답변을 qna 파일에 **있는 그대로** 기록한다. | ||
|
|
||
| #### 기록 형식 | ||
|
|
||
| ```markdown | ||
| # Week N — {주제} 설계 QnA | ||
|
|
||
| --- | ||
|
|
||
| ## Q1. {질문 제목} | ||
|
|
||
| **[질문]** | ||
| {질문 내용} | ||
|
|
||
| **[답변]** | ||
| > {사용자의 답변 — 원문 그대로} | ||
|
|
||
| **[후속 질문: {후속 질문 요약}]** | ||
| {후속 질문 내용} | ||
|
|
||
| **[답변]** | ||
| > {사용자의 답변 — 원문 그대로} | ||
|
|
||
| --- | ||
|
|
||
| ## Q2. {다음 질문 제목} | ||
| ... | ||
| ``` | ||
|
|
||
| #### 기록 규칙 | ||
| - 사용자의 답변은 인용 블록(`>`)으로 원문 그대로 기록한다 (교정하거나 요약하지 않는다) | ||
| - 질문, 후속 질문, 힌트 등 멘토의 발화도 모두 기록한다 | ||
| - 각 질문이 완료될 때마다 qna 파일을 업데이트한다 (대화가 끊겨도 기록이 남도록) | ||
| - 새 질문을 시작할 때 `---` 구분선과 `## QN.` 헤더를 추가한다 | ||
|
|
||
| --- | ||
|
|
||
| ### 톤 & 스타일 | ||
|
|
||
| - 선생님/멘토 톤을 유지한다 — 친근하되 가르치는 톤 | ||
| - "~해보세요", "~는 어떻게 생각하시나요?" 등 유도형 표현을 사용한다 | ||
| - 사용자의 답변을 존중하되, 부족한 부분은 명확히 짚는다 | ||
| - 칭찬은 간결하게, 지적은 질문 형태로 한다 | ||
| - 한 번에 너무 많은 정보를 주지 않는다 — 한 단계씩 진행한다 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
허용 범위가 너무 넓어 사실상 임의 명령 실행 권한이 된다
Bash(grep:*),Bash(cd:*),Bash(chmod:*),Bash(k6 run:*),Bash(powershell.exe:*),Bash(sudo -S:*)같은 패턴은 세션8/9 로드 테스트를 넘어서 로컬 호스트에서 임의 명령 실행과 권한 상승까지 열어 둔다. 운영 관점에서는 재현성과 감사 가능성이 무너지고, 잘못된 프롬프트 한 번으로 개발 환경 상태가 바뀔 수 있다. 필요한 seed/reset/load 스크립트만 정확한 경로와 고정 인자로 허용하고, 일반화된sudo -S:*및powershell.exe:*항목은 제거하는 편이 안전하다. 추가로 의도한 k6 시나리오는 계속 실행되고, 무관한 임의 명령은 차단되는지 확인하는 회귀 점검이 필요하다.🤖 Prompt for AI Agents