6 Commits

Author SHA1 Message Date
9ae3cf2709 fix(cache): 문서 iframe ?v= 캐시버스터 + SPA 표준 캐시 정책
옛 X-Frame-Options:DENY 응답이 브라우저 캐시에 박혀 서버 수정 후에도 계속
'연결 거부'가 나던 문제의 근본 대응:
- DocViewerPage iframe src에 ?v=2 — 캐시 키를 바꿔 새 응답을 받게(캐시 우회)
- Caddy 캐시 정책 정리: /assets/*(해시파일) 영구 immutable, 그 외 HTML·문서 no-cache
  → 앞으로 헤더/내용 변경이 캐시에 눌어붙지 않고 즉시 반영

검증: 문서=no-cache+SAMEORIGIN, index=no-cache, assets=immutable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 16:38:15 +09:00
91a6c2a9a9 fix(cache): 학습 문서에 Cache-Control:no-cache — 옛 보안헤더가 캐시에 눌어붙는 문제 방지
X-Frame-Options를 SAMEORIGIN으로 고쳤는데도, 예전에 DENY로 받은 문서가
브라우저 캐시에 남아 일반 새로고침으로는 계속 '연결 거부'가 났다.
/docs/* 응답에 no-cache를 걸어 브라우저가 매번 서버에 재검증하게 함 —
이후로는 헤더가 바뀌면 즉시 반영된다. Caddy 재기동만으로 적용.

검증: 문서 응답에 Cache-Control:no-cache + X-Frame-Options:SAMEORIGIN 확인.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 16:33:15 +09:00
0cbfe666d7 fix(security): X-Frame-Options DENY→SAMEORIGIN — 학습 문서 iframe 로딩 복구
보안 헤더 추가(0a4c769) 때 X-Frame-Options를 DENY로 걸었는데,
DENY는 '어떤 사이트에서도 iframe 금지'라 우리 자신의 iframe(DocViewerPage가
학습 문서를 표시하는 방식)까지 막아 '연결 거부'로 문서가 안 떴다.
SAMEORIGIN(같은 출처끼리는 허용)으로 변경 — 클릭재킹 방어는 그대로 유지.

원인·교훈을 Caddyfile 주석에 기록. Caddy 재기동만으로 반영(재빌드 불필요).
검증: 문서 헤더 SAMEORIGIN, SPA도 헤더 유지, intern-guide 문서 iframe 정상 로딩.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 16:23:22 +09:00
0a4c769d00 feat: 고도화 배치 7건 — 보안헤더·다운감시·로그회전·개인정보파기·문서정합성
[보안]
- Caddy 보안 응답헤더(HSTS·X-Frame-Options:DENY·X-Content-Type-Options·Referrer-Policy) +
  Server 헤더 제거. :80 catch-all 제거로 HTTP→HTTPS 자동 리다이렉트 복원(평문 표면 제거)
[운영 안정성]
- 헬스체크 스크립트 + systemd 타이머(2분): 공개 URL 두드려 UP/DOWN 변화 시에만 텔레그램 알림
- Docker 로그 회전(json-file 10m×3, YAML 앵커 공통적용) — 디스크 풀로 인한 조용한 다운 방지
[개인정보]
- 학생 파기: DELETE /api/mentor/students/{id} (멘토 권한) → 자식6테이블 먼저·계정 나중,
  @Transactional. 동의화면이 약속한 '파기' 이행. 멘토 화면에 이름입력 확인 파기 버튼
  StudentPurgeService + 테스트3(삭제순서·멘토거부·404)
[문서 정합성 — 지금 쓰는 학생 대상]
- STUDY.md: 없는 파일 가리키던 코드지도 정정(controller/→web/, ChecklistPage→DashboardPage,
  DocumentsPage→DocsPage, SubmissionsPage→AssignmentsPage)
- README: '6주'→8주, 학습센터/퀴즈/코딩 소개 추가, 폴더구조·초기계정(멘토만 시드·랜덤비번) 현행화
- 퀴즈 만점 안내: 없는 '코스 완료' 버튼 대신 '[← 코스로] 돌아가 완료' 로 정정

검증: 테스트29 통과, 운영에서 헤더4종·308리다이렉트·헬스체크·파기 E2E(무인증401·멘토200·
자식전체0건) 확인. 나머지 13건은 티켓 풀 확장감으로 남김.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 14:58:00 +09:00
c6d723824b feat: 설치 가이드 개편 — IntelliJ 설치·Git 연결 단계 추가, 가이드 디자인 시스템 도입
- STEP 6 IntelliJ 설치(Community 선택, JDK 지정, 첫 실행까지)
- STEP 7 IntelliJ에서 Git 연결(클론→브랜치→커밋→푸시→PR, 클릭 경로 명시)
- 히어로·단계 필 내비·번호 리스트·팁/주의 박스 등 가이드 전용 스타일 추가 (global.css)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 08:32:51 +09:00
111590104e feat: 수습 학습 플랫폼 최초 구축 (React + Spring Boot + PostgreSQL)
- 로그인/회원가입/아이디찾기/비밀번호재설정 (세션 기반)
- 대시보드(주차별 진도 체크리스트), 학습 문서 뷰어(17종), 과제 제출/멘토 피드백
- 코딩 기초·개발 환경 설치 가이드 학습 페이지
- 전 소스 한국어 학습 주석 — 수습생 교육용 저장소
- Docker 배포 구성 (Caddy + Spring Boot + PG + Gitea)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 08:18:12 +09:00