feat: 인턴 직급 + 초과근무 관리자 집계화 + SSO 로그아웃 URL + 디바이스/FCM
build-and-push / build (push) Successful in 35s
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:
co-authored by
Claude Opus 4.8
parent
6158888417
commit
df09d23662
@@ -10,6 +10,7 @@ import (
|
||||
// 주임(junior) · 선임(senior) · 책임(lead) · 파트너(partner)
|
||||
// Stored as the Korean label so it round-trips to the UI directly.
|
||||
const (
|
||||
RankIntern = "인턴"
|
||||
RankJunior = "주임"
|
||||
RankSenior = "선임"
|
||||
RankLead = "책임"
|
||||
@@ -99,3 +100,16 @@ type WorkStatusEvent struct {
|
||||
}
|
||||
|
||||
func (m *WorkStatusEvent) BeforeCreate(*gorm.DB) error { m.ensureID(); return nil }
|
||||
|
||||
// Device is a registered push target (spin-mobile Flutter 앱 FCM 토큰). 한 유저가
|
||||
// 여러 기기를 가질 수 있고, 토큰은 고유.
|
||||
type Device struct {
|
||||
Base
|
||||
MemberEmail string `gorm:"index" json:"memberEmail"`
|
||||
Token string `gorm:"uniqueIndex" json:"token"`
|
||||
Platform string `json:"platform"` // android | ios
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
}
|
||||
|
||||
func (m *Device) BeforeCreate(*gorm.DB) error { m.ensureID(); return nil }
|
||||
|
||||
@@ -23,7 +23,7 @@ func (b *Base) ensureID() {
|
||||
func All() []interface{} {
|
||||
return []interface{}{
|
||||
// slice 1 — members / org
|
||||
&Member{}, &Department{}, &AuditLog{}, &Notification{}, &WorkStatusEvent{},
|
||||
&Member{}, &Department{}, &AuditLog{}, &Notification{}, &WorkStatusEvent{}, &Device{},
|
||||
// slice 2 — attendance / leave
|
||||
&Attendance{}, &LeaveRequest{}, &OvertimeRequest{}, &WorkPolicy{}, &LeaveBalance{},
|
||||
// slice 3 — projects
|
||||
|
||||
Reference in New Issue
Block a user