PostgreSQL 15+ 는 public 스키마 CREATE 권한을 PUBLIC 역할에서 회수했기 때문에
expense_app (앱 전용 비특권 계정) 으로 CREATE TABLE 시도하면
"permission denied for schema public" 으로 컨테이너 부팅 실패.
스키마 책임 분리:
- DDL: scripts/sql/expense_db_init.sql + expense_db_002_workflow_attachments.sql
(superuser 가 사전 적용)
- 런타임: SELECT/INSERT/UPDATE/DELETE 만
ConnectionPool 도 open=False + lazy open 으로 변경. DB 가 잠시 끊겨도
컨테이너가 죽지 않게 함.
expense_approver 권한만 가진 관리자가 본인 경비를 등록/제출할 수 있도록
has_module() 에서 <module>_approver 보유 시 <module> 접근도 허용.
APPROVER_KEYS 자체에는 재귀 적용하지 않음 (vacation_approver 가
expense_approver 를 부여하는 일은 없음).
- 메인 홈 화면 카드 수정: 'CS 발주 업무' -> 'CS, 발주, 반품, 코드관리' (설명 문구도 이에 맞춤) / '고객 주문리스트 프로그램' -> '고객 주문 데이터베이스' (설명 문구도 이에 맞춤)
- 디자인 레이아웃 스타일 개선: 로그인 화면의 좌측 상단 로고 이미지를 원본 이미지 크기로 정상 출력되도록 수정 (styles.css 내 brand-logo-img 수정) / 메인 대시보드 상단 헤더 높이를 기존 110px에서 55px로 단축하여 공간 효율화 / 메인 대시보드 내 로고 높이를 55px로 고정하고 가로 비율이 유지되도록 수정 / 로고 옆의 '업무 포털' 브랜드 텍스트 폰트 크기를 24px로 확대 및 볼드 처리하여 시인성 극대화
- SESSION_SECRET_KEY 가 .env 에 없으면 컨테이너 기동 단계에서 RuntimeError.
알려진 기본값(change-this-session-secret) 폴백 제거로
운영 .env 누락 시 양쪽 secret 불일치로 SSO 가 조용히 깨지는 사고 방지.
- ALLOWED_EMAILS 를 환경변수(쉼표 구분)로 덮어쓸 수 있게 변경.
env 미설정 시 기존 4명 기본 목록 유지 → 운영 호환.
- .env.example 갱신: SESSION_SECRET_KEY 안내 강화, ALLOWED_EMAILS 항목 추가.
- SessionMiddleware max_age 를 SESSION_MAX_AGE 환경변수에서 읽도록 변경
(기본 28800초=8h, OMS .env.example 과 일치)
- .env.example 에 SESSION_MAX_AGE 항목 추가
- run-local.ps1 을 .gitignore 에 추가 (run-local.bat 와 동일 정책 — 로컬 전용)
- 세션 쿠키 이름을 SESSION_COOKIE_NAME env 로 OMS 와 통일
- 로그인 성공 시 top-level user_email / user_name 키도 함께 저장
- get_user() 가 OMS 가 만든 SSO 세션(top-level email만 있는 경우)도 인정
- /login 에 ?next= 지원 (open redirect 방지 위해 같은 호스트 절대경로만 허용)
- 메뉴 카드 새 탭 열기 + /orderlist/health/db 헬스 배지 (온라인/오프라인) 추가
- CUSTOMER_ORDER_LIST_URL 기본값을 /orderlist/ 로 (NPM 같은 도메인 하위 경로)
- orderlist 측 compose 정리 스크립트 추가 (ports 제거, npm_default 외부 네트워크 attach)
- kingFloat 애니메이션 translate 범위를 ±16px → ±70px 로 확장
- login.html / denied.html 에서 shape-7(별) div 제거
- shape-1~6 도형 밝기 은은하게 감소 (이전 수준으로 복구)
- .shape-king text-transform: none → "King" 으로 표시
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 모든 페이지 'DBX Corp' → 'DBX Corporation' 통일
- 브랜드 패널 좌측에 천천히 움직이는 도형 5개 추가 (CSS 애니메이션)
- 전체 기본 폰트 15px → 16px, 제목/카드 크기 확대
- 'Google Workspace 계정...' 문장 한 줄 표시 처리
- 로그인/접근거부 페이지: 좌우 분할 레이아웃(다크 네이비 브랜드 패널 + 흰색 폼),
실제 Google G 컬러 버튼, 자물쇠·안내 아이콘 적용
- 메인 페이지: 다크 네이비 헤더, 웰컴 히어로 배너(오늘 날짜 JS 자동 표시),
SVG 아이콘이 있는 업무 카드 그리드, 호버 시 상단 블루 액센트 라인
- styles.css: 코퍼레이트 네이비/블루 색상 토큰 체계로 전면 재작성,
Pretendard 폰트 유지, 모바일 반응형 포함
- run-local.bat / run-local.ps1: 더블클릭 또는 인수(stop/logs/ps/restart)로
로컬 Docker 컨테이너를 간편하게 관리하는 스크립트 추가
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>