feat: 메일함·근무상태 기록·프로필 사진·자동 프로비저닝 + 인센티브 유저 노출 제한
build-and-push / build (push) Successful in 33s

- 알림(Notification) 모델/이벤트 발행(프로젝트 추가·휴가/초과근무 승인·인센티브 반영/지급·정산 확정) + 메일함 API
- 근무상태 기록(WorkStatusEvent: 출근/퇴근/휴식/미팅/이동), 출퇴근은 Attendance도 갱신
- 남은 연차(소수점) 엔드포인트, 관리자 근무관리용 집계/로그 조회
- 프로필 사진(Member.AvatarKey) 업로드/스트리밍
- Keycloak 최초 로그인 자동 Member 프로비저닝(ensureMember, rank/부서 nullable)
- 프로젝트 scope=mine(나의 업무는 관리자도 본인 참여분만), nav에 메일함·근무관리·프로젝트관리·내프로필 추가
- 운영 안전: SEED 기본값 false(로컬만 SEED=true), ADMIN_GROUPS 기본 'admin'

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
theorose49
2026-06-28 09:38:33 +09:00
co-authored by Claude Opus 4.8
parent f83724b995
commit a904cbf9b9
10 changed files with 339 additions and 6 deletions
+4 -3
View File
@@ -63,9 +63,10 @@ func Load() Config {
S3AccessKey: firstEnv("minioadmin", "AWS_ACCESS_KEY_ID", "S3_ACCESS_KEY"),
S3SecretKey: firstEnv("minioadmin", "AWS_SECRET_ACCESS_KEY", "S3_SECRET_KEY"),
DevAuth: env("DEV_AUTH", "true") != "false",
// Sample data is seeded only when SEED is truthy (default). Production
// sets SEED=false so the cluster DB stays clean.
SeedData: env("SEED", "true") != "false",
// Sample data is seeded ONLY when SEED=true is explicitly set. Default is
// OFF so production never seeds (avoids confusion); local docker-compose /
// `make be-dev` opt in with SEED=true.
SeedData: env("SEED", "false") == "true",
// Super-admin Keycloak groups (comma-separated). Default: admin
// (shared group name across all internal apps, not app-specific).
AdminGroups: splitCSV(env("ADMIN_GROUPS", "admin")),