feat: 인턴 직급 + 초과근무 관리자 집계화 + SSO 로그아웃 URL + 디바이스/FCM
build-and-push / build (push) Successful in 35s

- 직급에 인턴 추가(기본 할당량 15), 직책(position)은 UI에서 제거(컬럼은 유지)
- 초과근무: 유저 신청 제거 → 관리자 근무관리에서 실제 출퇴근 기록 기반 자동 집계
- 로그아웃: infra 공통 LOGOUT_URL(/me로 전달) 사용 → oauth2-proxy 종료 + Keycloak end-session
- (이전 커밋 포함) Device 등록 + FCM HTTP v1 sender + notify 연동

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
theorose49
2026-06-28 10:55:53 +09:00
co-authored by Claude Opus 4.8
parent 6158888417
commit df09d23662
12 changed files with 293 additions and 19 deletions
+11 -1
View File
@@ -24,6 +24,13 @@ type Config struct {
S3SecretKey string
DevAuth bool
SeedData bool
// FCMCredentialsFile is the path to a Firebase service-account JSON used to
// send push notifications to spin-mobile. Empty = push disabled (no-op).
FCMCredentialsFile string
// LogoutURL is the common SSO logout path injected by infra (LOGOUT_URL):
// ends the oauth2-proxy session then redirects to Keycloak end-session.
// The static frontend reads it via /me. Defaults to the infra-common value.
LogoutURL string
// AdminGroups are the Keycloak groups whose members are super-admins
// (manage everything across the company: incentive console, accounting,
// approvals, all member/project data).
@@ -69,7 +76,10 @@ func Load() Config {
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")),
AdminGroups: splitCSV(env("ADMIN_GROUPS", "admin")),
FCMCredentialsFile: env("FCM_CREDENTIALS_FILE", ""),
LogoutURL: env("LOGOUT_URL",
"/oauth2/sign_out?rd=https%3A%2F%2Fauth.special-partners.com%2Frealms%2Fsp%2Fprotocol%2Fopenid-connect%2Flogout"),
}
}