king
269e779129
feat(vacation): 휴가 관리 모듈 — 월간 달력 bar/연차·반차 신청/승인 워크플로/공휴일·연차 설정
...
- vacation_db 전용 저장소(VacationDBStore), VACATION_DB_URL 미설정 시 '설정 필요' 안내
- 월간 달력: 구글식 휴가 bar(주 단위 lane 배정), 일/공휴일 빨강·토요일 파랑
- 신청 폼: 종류/기간/시작·종료 구분(종일/오전/오후)/사유 + 예상 일수 미리보기
- 일수 계산은 서버(compute_days)에서 주말+공휴일(is_red) 제외 재계산
- 워크플로: 작성중/반려→제출→승인|반려, 취소 soft delete, 본인만 수정(작성중/반려)
- 권한: vacation(접근)/vacation_approver(승인), admin 통과. 설정은 admin 전용
- 공휴일(vacation_holidays) DB 기반 provider + settings CRUD, 연차잔여(vacation_balances)
- 엑셀 내보내기(openpyxl), scripts/sql/vacation_db_init.sql(멱등, 2026 공휴일 seed)
- main.py 등록, 메뉴 ready 전환, docs/.env.example/CLAUDE.md 갱신
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-30 08:20:20 +09:00
king
96e2c49506
docs(cupang): itemcode_db 실제 스키마 반영 (single_items/set_items UNION 검색 SQL)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-30 03:33:08 +09:00
king
9e707be5ac
feat(cupang): 쿠팡 밀크런 모듈 추가 (출고 달력/박스계산/입고센터)
...
- app/modules/cupang: router/db/store/itemcode + 템플릿 5종
- cupang_db 전용(JSON 폴백 없음). CUPANG_DB_URL 미설정 시 안내 페이지
- 월간 달력 + 출고 묶음(헤더+라인), 박스 입수량 자동계산(서버 재계산)
- 입고센터 관리(사용중 soft delete), 박스규칙 upsert, 엑셀 내보내기
- 상품 검색은 itemcode_db 읽기 전용(미설정 시 수동 입력)
- MODULE_KEYS/메뉴/아이콘/라벨 동기화, scripts/sql/cupang_db_init.sql(멱등)
- app/data/ gitignore 추가(PII)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-29 20:47:32 +09:00
king
9c58b022e2
feat(expense): 개인경비 모듈 + ERP 좌측메뉴 셸 + expense_db 연결
...
- ERP 셸: 좌측 사이드바 + 상단 헤더 + 콘텐츠 영역(erp_base.html)
- 분기: 슈퍼관리자 → 업무모듈 카드, 일반사용자 → ERP 메인(erp_home.html)
- 신규 라우트: /modules (슈퍼관리자 모듈 카드 재진입)
- 개인경비 모듈: app/modules/expense/ (라우터/저장소/템플릿)
- JSON 저장소(ExpenseStore) + PostgreSQL 저장소(ExpenseDBStore)
- 팩토리: EXPENSE_DB_URL 있으면 DB, 없으면 JSON 폴백
- DB: scripts/sql/expense_db_init.sql (멱등 DDL, postgres-db 컨테이너)
- expense_db, 역할 expense_app, 테이블 expense_items, 인덱스/트리거
- 마이그레이션: scripts/migrate_expense_json_to_db.py (멱등, --dry-run)
- 의존성: psycopg[binary,pool]>=3.2
- 환경변수: EXPENSE_DB_URL 추가
- 문서: CLAUDE.md 작업 기준 + docs/{PROJECT_OVERVIEW,SERVER_ARCHITECTURE,DATABASES,DEPLOYMENT}.md
- main-app 배포 경로 /opt/www/main 고정 명시
- 위험 명령(DROP/TRUNCATE/rm -rf/volume 삭제) 사용자 승인 정책
2026-05-29 02:21:03 +09:00
king
98ac452e7d
feat(menu): CS 발주 업무 카드를 /corm/ 으로 연결
...
- 메뉴 카드 url 기본값을 /corm/ 로 (NPM 리버스 프록시 하위 경로)
- 헬스 배지가 가리킬 health_url 을 /corm/health/db 로 설정
- .env.example 의 CS_ORDER_URL 안내를 /corm/ 로 정리
2026-05-24 15:41:01 +09:00
king
7ddc765326
feat(sso): SESSION_SECRET_KEY 미설정 시 fail-fast + ALLOWED_EMAILS env화
...
- SESSION_SECRET_KEY 가 .env 에 없으면 컨테이너 기동 단계에서 RuntimeError.
알려진 기본값(change-this-session-secret) 폴백 제거로
운영 .env 누락 시 양쪽 secret 불일치로 SSO 가 조용히 깨지는 사고 방지.
- ALLOWED_EMAILS 를 환경변수(쉼표 구분)로 덮어쓸 수 있게 변경.
env 미설정 시 기존 4명 기본 목록 유지 → 운영 호환.
- .env.example 갱신: SESSION_SECRET_KEY 안내 강화, ALLOWED_EMAILS 항목 추가.
2026-05-24 13:25:06 +09:00
king
c274e50ee0
feat(sso): SESSION_MAX_AGE를 env로 노출 — OMS와 통일
...
- SessionMiddleware max_age 를 SESSION_MAX_AGE 환경변수에서 읽도록 변경
(기본 28800초=8h, OMS .env.example 과 일치)
- .env.example 에 SESSION_MAX_AGE 항목 추가
- run-local.ps1 을 .gitignore 에 추가 (run-local.bat 와 동일 정책 — 로컬 전용)
2026-05-24 13:04:02 +09:00
king
e33cc8686b
feat: OMS(orderlist)와 SSO 호환되도록 세션 계약 정렬
...
- 세션 쿠키 이름을 SESSION_COOKIE_NAME env 로 OMS 와 통일
- 로그인 성공 시 top-level user_email / user_name 키도 함께 저장
- get_user() 가 OMS 가 만든 SSO 세션(top-level email만 있는 경우)도 인정
- /login 에 ?next= 지원 (open redirect 방지 위해 같은 호스트 절대경로만 허용)
2026-05-24 05:38:43 +09:00
king
e8a85be36c
feat: 주문리스트를 /orderlist/ 리버스 프록시 경로로 통합
...
- 메뉴 카드 새 탭 열기 + /orderlist/health/db 헬스 배지 (온라인/오프라인) 추가
- CUSTOMER_ORDER_LIST_URL 기본값을 /orderlist/ 로 (NPM 같은 도메인 하위 경로)
- orderlist 측 compose 정리 스크립트 추가 (ports 제거, npm_default 외부 네트워크 attach)
2026-05-24 05:04:29 +09:00
king
c93e2be0a7
feat: 초기 커밋 — Pretendard 폰트 적용 및 Docker 배포 구성
...
- Pretendard Regular/Bold/Thin 폰트를 app/static/fonts/ 에 추가하고
@font-face 로 등록하여 전체 페이지에 적용
- Dockerfile(python:3.12-slim + uvicorn --proxy-headers) 작성
- docker-compose.yml: NPM 뒤 운영 서버용 (포트 80)
- docker-compose.local.yml: 로컬 테스트용 (포트 8080)
- .env.local.example: 로컬 OAuth 설정 가이드 포함
- .dockerignore: 이미지 빌드 컨텍스트 최소화
- .gitignore: .env / .env.local 제외 명시
- README: Docker 빌드·배포·업데이트 절차 문서화
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-05-21 22:43:41 +09:00