2026-05-04 | API 500 에러 수정 (자료구분 저장 실패)
2026-05-04 | API 500 에러 수정 (자료구분 저장 실패)
섹션 제목: “2026-05-04 | API 500 에러 수정 (자료구분 저장 실패)”[!note] 수정이력 | 2026-05-04 03:13, 분홍 (hermes)
- 이 파일은 2026-05-05 세션 중에도 참조됨
🚨 문제 요약
섹션 제목: “🚨 문제 요약”분홍아빠가 설정 페이지에서 자료구분 추가/수정 시 저장 실패 (500 에러) 및 라이트박스 클릭 안됨 두 가지 동시에 제기함.
실제 원인은 deps.py 권한 체크 함수에서 문자열 str 입력을 Enum으로 간주하여 .value 속성 접근 → AttributeError → NameError (Enum import 누락) → 모든 권한 체크 API가 500 에러.
🔧 수정한 파일
섹션 제목: “🔧 수정한 파일”1. backend/app/api/deps.py — require_role() 함수 리팩토링
섹션 제목: “1. backend/app/api/deps.py — require_role() 함수 리팩토링”- 문제:
allowed_roles가UserRoleEnum이 아닌 문자열 str(“관리자”)로 전달됨 - 해결:
hasattr(r, 'value')로 Enum/str 분기,current_user.role도 동일하게 정규화 - 후속:
from enum import Enum누락으로isinstance(x, Enum)에서NameError→ import 추가
2. backend/app/api/v1/stages.py — (간접 수정)
섹션 제목: “2. backend/app/api/v1/stages.py — (간접 수정)”require_role("관리자")처럼 문자열 str로 전달하고 있음. 위 deps.py 수정으로 자동 호환.
3. frontend/src/views/SettingsView.vue — company_id 파라미터 추가
섹션 제목: “3. frontend/src/views/SettingsView.vue — company_id 파라미터 추가”- 문제:
GET /projects/dummy/stages/design/categories호출 시company_id누락 → 다른 회사 데이터만 조회됨 - 해결: API 호출 시 params에 company_id 추가
4. frontend/src/views/projects/ProjectDetailView.vue — 라이트박스 추가
섹션 제목: “4. frontend/src/views/projects/ProjectDetailView.vue — 라이트박스 추가”- 문제: 이미지 클릭 시 확대 안됨
- 해결: @click=“openPhoto(p)”, photoDialog, v-dialog 템플릿으로 라이트박스 구현
🐳 Docker 주의사항
섹션 제목: “🐳 Docker 주의사항”docker compose restart backend : 캐시/바이트코드 안 바뀜 (X) docker compose build backend : 이미지 재빌드 (O) docker compose up -d backend : 컨테이너 재생성 (O)
✅ API 테스트 결과
섹션 제목: “✅ API 테스트 결과”- GET 조회 : /projects/dummy/stages/design/categories?company_id=… | 200 OK
- POST 추가 : /projects/dummy/stages/design/categories | 200 OK
- PATCH 수정: /projects/dummy/stages/design/categories/ID | 200 OK
- 에러 로그 : docker logs erp-backend | Traceback 없음
🎯 분홍아빠 확인사항
섹션 제목: “🎯 분홍아빠 확인사항”- 브라우저 새로고침(F5) → 설정 페이지 → 자료구분 추가/수정 테스트
- 설계단계/실사단계 이미지 클릭 → 라이트박스 확대 테스트
⚡ 핵심 교훈
섹션 제목: “⚡ 핵심 교훈”- [r.value for r in allowed_roles] 에서 r 가 문자열 “관리자”면 → “관리자”.value → AttributeError → 500
- Docker 환경에서 소스 수정 후 docker compose restart 만으론 반영 안 됨. 반드시 build + 재생성
연결 세션
섹션 제목: “연결 세션”- [[2026-05-05_세션재개]] — 이 내용을 기반으로 다음 세션 시작