Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
151dacf
feat: 파견 대학 테이블명 변경 및 협정 대학 테이블 추가하는 DDL 작성 (#620)
whqtker Jan 24, 2026
949d3d9
refactor: 잘못 설정되었던 테이블 간 연관 관계 재설정 (#622)
whqtker Jan 24, 2026
db0287f
refactor: 대학 검색 응답 수정 (#624)
whqtker Jan 25, 2026
b4d6ec2
refactor: s3 버전 업그레이드 및 로직 수정 (#608)
lsy1307 Jan 30, 2026
d85576d
refactor: 리프레시 토큰 만료시 쿠키 삭제 (#628)
Gyuhyeok99 Feb 2, 2026
c0a4f42
refactor: 멘토링 조회 응답에 mentoringId 필드 추가 (#638)
whqtker Feb 3, 2026
2fef77c
feat: WebSocket 로깅 인터셉터 작성 (#635)
whqtker Feb 3, 2026
27cb522
feat: 어드민에서 파견 대학을 관리하도록 (#633)
whqtker Feb 7, 2026
8d060b4
fix: host_university 테이블의 korean_name 필드에 unique key 추가 (#645)
whqtker Feb 10, 2026
3e7acea
fix: 멘토 지원서 승인 시 유저 Role 을 Mentor로 승격 (#639)
sukangpunch Feb 10, 2026
2e84c2f
chore: 스크립트 버전 수정 (#651)
whqtker Feb 10, 2026
450db99
feat: test skill 추가 (#647)
Gyuhyeok99 Feb 11, 2026
61fad78
fix: 게시글 중복 생성 방지 (#649)
JAEHEE25 Feb 12, 2026
a61888a
chore: testcontainer 버전 업 (#659)
whqtker Feb 14, 2026
02c2d8e
chore: windows에서도 hook이 동작하도록 (#655)
whqtker Feb 14, 2026
6e9ee44
refactor: 오래된 이미지 삭제 후 이미지 pull하도록 변경 (#653)
whqtker Feb 14, 2026
26f5a76
refactor: 멘토 도메인 응답의 사용자 id를 siteUserId로 통일 (#665)
Gyuhyeok99 Feb 14, 2026
80ae3fc
refactor: 채팅 도메인 응답의 사용자 관련 id를 siteUserId로 통일 (#666)
whqtker Feb 14, 2026
7e7b5c9
feat: 전체 뉴스를 조회하는 API 구현 (#674)
whqtker Feb 18, 2026
bcad07c
chore: 누락된 제약 조건을 추가하는 스크립트 작성 (#676)
whqtker Feb 18, 2026
a554fbc
chore: pr을 리뷰하는 SKILL.md 작성 (#669)
whqtker Feb 19, 2026
61aba25
feat: Parameter Store 기반 설정 관리 전환 및 loadtest 프로필 추가 (#670)
lsy1307 Mar 3, 2026
cd40ddd
refactor: docker-compose.dev.yml에 mysql 컨테이너 추가 (#690)
Hexeong Mar 3, 2026
3b238e4
fix: term 테이블의 is_current 필드에 UK 설정 (#650)
whqtker Mar 4, 2026
4086edc
feat: 어드민 유저 관리 기능 추가 (#686)
JAEHEE25 Mar 5, 2026
f152ebe
chore: 스크립트 버전 수정 (#691)
whqtker Mar 6, 2026
4efa1bc
chore: stage admin 도메인 추가 (#692)
whqtker Mar 8, 2026
bb37cd6
refactor: 응답에서 refresh token은 제외하여 전달하도록 (#646)
whqtker Mar 8, 2026
3a7e3c9
feat: 어드민 국가 crud 추가 (#656)
Gyuhyeok99 Mar 8, 2026
00093eb
refactor: 대학 캐시 무효화 정책 추가 (#660)
Gyuhyeok99 Mar 8, 2026
9f63826
chore: master hotfix를 develop에 sync (#694)
whqtker Mar 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .claude/hooks/notify.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Add-Type -AssemblyName System.Windows.Forms
$n = New-Object System.Windows.Forms.NotifyIcon
$n.Icon = [System.Drawing.SystemIcons]::Information
$n.Visible = $true
$n.BalloonTipTitle = "Claude Code"
$n.BalloonTipText = "Awaiting your input"
$n.ShowBalloonTip(5000)
Start-Sleep -Milliseconds 5100
$n.Dispose()
29 changes: 29 additions & 0 deletions .claude/hooks/notify.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env python3
import os
import platform
import subprocess

system = platform.system()
script_dir = os.path.dirname(os.path.abspath(__file__))

if system == "Darwin":
subprocess.run([
"osascript", "-e",
'display notification "Awaiting your input" with title "Claude Code"'
])
elif system == "Windows":
ps1_path = os.path.join(script_dir, "notify.ps1")
# VS Code extension 환경에서는 PATH에 powershell이 없을 수 있으므로 절대 경로 사용
powershell_candidates = [
r"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",
"powershell",
]
for ps in powershell_candidates:
try:
subprocess.run(
[ps, "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", ps1_path],
timeout=10,
)
break
except (FileNotFoundError, subprocess.TimeoutExpired):
continue
48 changes: 48 additions & 0 deletions .claude/hooks/post-edit-check.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/usr/bin/env python3
import json
import sys
import re

data = json.load(sys.stdin)
file_path = data.get("tool_input", {}).get("file_path", "")

if not file_path.endswith(".java") or not file_path:
sys.exit(0)

try:
with open(file_path) as f:
content = f.read()
lines = content.split("\n")
except Exception:
sys.exit(0)

warnings = []

# 1. 와일드카드 import 체크
for i, line in enumerate(lines, 1):
if re.match(r"\s*import\s+.*\.\*;", line):
warnings.append(f"L{i}: 와일드카드 import 발견 -> 명시적 import 필요")

# 2. 파일 끝 줄바꿈 체크
if content and not content.endswith("\n"):
warnings.append("파일 끝 줄바꿈 누락")

# 3. Entity 클래스의 @Column 체크
if "@Entity" in content:
field_pattern = re.compile(r"^\s+private\s+\w+(?:<[^>]+>)?\s+\w+;")
relation_annotations = {
"@Column", "@Id", "@ManyToOne", "@OneToMany",
"@JoinColumn", "@OneToOne", "@ManyToMany",
"@Transient", "@Version", "@Embedded", "@EmbeddedId",
}
for i, line in enumerate(lines):
if field_pattern.match(line):
preceding = "\n".join(lines[max(0, i - 5):i])
has_annotation = any(ann in preceding for ann in relation_annotations)
if not has_annotation:
warnings.append(f"L{i + 1}: Entity 필드에 @Column 누락 가능성: {line.strip()}")

if warnings:
print(f"[컨벤션 체크 - {file_path.split('/')[-1]}]")
for w in warnings:
print(f" - {w}")
29 changes: 29 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
},
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "python3 .claude/hooks/notify.py 2>/dev/null || python .claude/hooks/notify.py"
}
]
}
],
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "python3 .claude/hooks/post-edit-check.py 2>/dev/null || python .claude/hooks/post-edit-check.py"
}
]
}
]
}
}
Loading
Loading