Commit Graph

33 Commits

Author SHA1 Message Date
king d9ea7550b0 feat(cupang): 출고방식 파렛트, 상태/문서번호 폼 제거, 폼·상세 레이아웃 개편
- 출고방식 선택지에 "파렛트" 추가
- 신규/수정 폼에서 상태·문서번호 입력 제거 (status는 작성중 기본 + 취소처리로만 변경)
- document_no DB 컬럼 제거: init.sql 반영 + 기존 DB용 002 드롭 마이그레이션(승인 후 실행)
- 폼: 공통 헤더(좌) / 품목 라인(우) 2열 배치
- 상세: 엑셀·상태변경 버튼 삭제, ◀◀ 달력(검정) 좌측, 수정 우측 정렬, 문서번호 표시 제거

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 05:07:21 +09:00
king 4113a034f4 ui(cupang): 입고센터 페이지 좌우 배치 + 목록 가나다순/900px 스크롤
- 추가 폼에서 정렬순서 입력란 제거(좌측), 센터 목록 우측
- 센터 목록 이름 오름차순, 프레임 900px 고정 내부 스크롤, 1열 행
- 행 편집은 이름 저장 + 활성/비활성 + 삭제 (정렬 입력 제거)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 04:39:47 +09:00
king f9c1dc140b ui: 입고센터 드롭다운 가나다순, 사이드바 hover 개선, 달력 버튼 강조
- 출고 폼 입고센터 드롭다운 이름 오름차순 정렬
- 사이드바: is-active 메뉴는 hover 무변화, 그 외 진한 회색(#d9d9d9)
- 설정/센터/박스 페이지 "← 달력" → "◀◀ 달력", 검정 배경 흰 글씨(primary)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 04:35:35 +09:00
king 17dfd23cfc ui(cupang): 설정 프레임 높이 950->900 (Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>) 2026-05-30 04:24:24 +09:00
king 867bc510da ui(cupang): 박스입수량 라벨/겹침, 입고센터 컴팩트 재디자인, 출고 완전삭제
- 박스 입수량 폼: 제품명(스냅샷)→제품명, 헤더그리드로 교체해 입력란 겹침 해소
- 입고센터: 추가 폼 슬림화 + 센터 목록 2열 그리드(한 줄/센터)로 압축
- 출고 상세: 완전삭제 버튼 추가(/{id}/hard-delete, 라인 CASCADE). 취소 처리는 outline 로

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 04:16:24 +09:00
king 69b84db4bb ui(cupang): 설정 프레임 크기 고정 + 라벨 변경 + 코드 우측 타입 제거
- "itemcode_db 상품" → "미라네 주방 상품"
- 미라네 주방 상품 500x950, 등록된 제품명 600x950 고정, 내부 스크롤
- 좌측 리스트 코드 옆 type(낱개/세트) 표기 제거

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 03:57:32 +09:00
king 1d33761003 feat(cupang): 설정 화면 2열 개편 — itemcode 다중선택 등록 + 활성/삭제
- 수동 등록 카드 제거
- 왼쪽: itemcode_db 전체 목록(낱개+세트) 다중선택, 등록된 항목 진회색+흰글씨
  /cupang/api/products/all + /cupang/products/bulk(JSON 일괄 upsert)
- 오른쪽: 등록 제품명 목록 — 제품명/코드/상태 + 활성·비활성 토글 + 완전삭제
  /products/{id}/active (토글), /products/{id}/delete (hard delete)
- ItemcodeReader.list_all 추가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 03:46:35 +09:00
king 34c7e2f964 feat(cupang): 제품명 카탈로그 설정 + 달력 공휴일 색상 + 폼 UI 개선
- 설정 화면 추가: /cupang/products — itemcode_db 검색 등록 + 수동 등록.
  제품명 드롭다운 소스. cupang_products 테이블 신규(init.sql 멱등 재실행 필요)
- 폼 품목라인: 제품명 드롭다운 선택 → 제품코드 자동 입력
- 라인 컬럼 순서 제품명·제품코드·수량·입수량·박스계산·메모
- 제품코드 140px, 수량·입수량 60px 폭 고정
- 공통 헤더 입력란 겹침 수정(min-width:0, width:100%, box-sizing)
- 달력: 일/공휴일 빨강, 토 파랑, 글자 크기 확대. 한국 공휴일 모듈(holidays.py)
- document_no null → "None" 출력 버그 수정

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 03:24:05 +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 6918426264 feat(expense): 첨부 뷰어 패닝/엑셀 + 체크박스 일괄작업 + 정렬
[첨부 뷰어]
- 펜 주석 기능 제거 (요구사항 정정).
- 이미지: 마우스 드래그로 패닝, 축소/확대/100%/맞춤 줌 도구.
- 엑셀 (xlsx/xls/xlsm/csv/ods): SheetJS lazy load(CDN) 후 시트 탭으로 표시.
- 기타 파일: 다운로드/새 창 링크.

[경비 내역 / 승인 대기 공통]
- 행 단위 첫 컬럼 체크박스 + thead 전체선택 체크박스.
- 표 제목 상단에 일괄 동작 버튼 (선택 0이면 disabled).
- 카드 헤더와 행 모두 vertical-align: middle 로 일직선 정렬.

[경비 내역]
- 첨부 추가 버튼의 📎 아이콘 제거. "기타" → "기타 파일".
- 행 단위 "제출" 버튼 제거 → 상단 "선택 항목 제출" 단일화.
- 행 단위 첨부 보기 아이콘(📎) 추가 — 클릭 시 ErpAttachViewer 호출.

[승인 대기]
- 일괄 승인 (체크 후 상단 버튼).
- 반려는 항목별 유지 (사유 필수라 일괄 부적합).

[CSS]
- erp-table tbody td vertical-align top → middle (admin 포함 일관).
2026-05-29 03:57:18 +09:00
king 151de492ad feat(expense): 첨부 뷰어 모달 — 이미지 미리보기 + 펜 주석
승인 대기 페이지의 "첨부" 텍스트 링크를 클립 아이콘 버튼으로 교체.
클릭 시 모달 팝업으로 이미지 미리보기 + 마우스 펜 주석 + 다운로드.

뷰어 컴포넌트 (전역, 다른 페이지에서도 재사용 가능):
- 좌측: 첨부 목록 (썸네일/메타)
- 우측: 캔버스 스택 (img + 투명 canvas)
- 도구: 펜/지우개, 색상 4종, 굵기 3종, 전체 지우기, 합성 PNG 저장, 원본 열기
- 이미지 외 파일은 다운로드 링크만 표시
- ESC/배경 클릭으로 닫기, pointer events 지원

전역 노출: window.ErpAttachViewer.{open, openFor, close}
2026-05-29 03:40:03 +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 d7b6c7d029 chore: add DESIGN.md, brand logo, caveman code rules
- DESIGN.md: 모노크롬 블루프린트 UI 스타일 레퍼런스
- app/static/[Originals]/dbx-logo.png: 브랜드 로고 원본
- skills/code.rules.md: 코드 작성 규칙
2026-05-29 02:20:40 +09:00
king 316e3fe8d1 feat(erp): ERP 대시보드 + 관리자 권한 시스템 도입
- 로그인: dbxcorp.co.kr 도메인 화이트리스트만 사용. ALLOWED_EMAILS 게이트 제거
- king@dbxcorp.co.kr 슈퍼관리자 자동 부여 (강등/삭제 불가)
- 신규 로그인 사용자는 JSON 저장소에 자동 등록 (기본 모듈 권한 0)
- 관리자 페이지(/admin): 역할/모듈별 토글로 직원 권한 수정
- 메인 대시보드를 ERP 시스템(monochromatic shadcn)으로 재설계
  · 모듈: CORM, Order, 개인경비(준비중), 휴가(준비중)
  · 권한 없는 모듈은 '권한 없음' 배지 + 클릭 불가
- DESIGN.md 토큰 기반 styles → app/static/erp.css
- docker-compose: dbx-main-data 볼륨 마운트 (DATA_DIR=/data)
  으로 권한 JSON 영구 보관

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 23:36:51 +09:00
king 927990c002 style(ui): brand-divider 애니메이션 10px→50%→10px 24s 주기로 변경
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 02:00:26 +09:00
king dcecc1476e style(ui): brand-divider 애니메이션 속도 10s로 조정
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 01:58:24 +09:00
king 9a8dace7ec feat(ui): 로그인 페이지 brand-divider 호흡 애니메이션 추가
5초 주기 ease-in-out으로 48px → 100% → 48px 너비가 반복되는
divider-breathe 키프레임 애니메이션을 적용.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 01:43:51 +09:00
king c16bc905ed feat(ui): 메인 포털 홈 화면 카드명 수정 및 로그인/메인 화면 로고/헤더 레이아웃 스타일 개선
- 메인 홈 화면 카드 수정: 'CS 발주 업무' -> 'CS, 발주, 반품, 코드관리' (설명 문구도 이에 맞춤) / '고객 주문리스트 프로그램' -> '고객 주문 데이터베이스' (설명 문구도 이에 맞춤)

- 디자인 레이아웃 스타일 개선: 로그인 화면의 좌측 상단 로고 이미지를 원본 이미지 크기로 정상 출력되도록 수정 (styles.css 내 brand-logo-img 수정) / 메인 대시보드 상단 헤더 높이를 기존 110px에서 55px로 단축하여 공간 효율화 / 메인 대시보드 내 로고 높이를 55px로 고정하고 가로 비율이 유지되도록 수정 / 로고 옆의 '업무 포털' 브랜드 텍스트 폰트 크기를 24px로 확대 및 볼드 처리하여 시인성 극대화
2026-05-25 21:12:49 +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 0c007e6432 fix: 로고 크기 페이지별 분리 (denied 284px, 나머지 100px)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 01:26:37 +09:00
king b070fabb96 fix: 메인 헤더 로고 284x284 원본 크기로 표시
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 01:23:20 +09:00
king bad5d04d8b fix: 메인 헤더 텍스트로 변경/높이 축소, 로그인 로고 44px 복원
- main.html 헤더: 로고 제거 → "DBX 업무포털" 흰색 텍스트, 높이 64px→44px
- login/denied 브랜드 패널 로고: 44px 복원

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 01:18:38 +09:00
king 6c82415e02 fix: 메인 헤더 로고 크게(48px), 로그인/접근거부 로고 작게(30px)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 01:13:43 +09:00
king cd545d723e fix: 메인 헤더 원복 및 로그인 로고 크기 조정 (28px → 36px)
- main.html 헤더: SVG 아이콘+텍스트 방식으로 원복
- 로그인/접근거부 브랜드 패널 로고: 36px로 조정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 01:09:07 +09:00
king a52b66868d fix: 로그인 브랜드 패널 로고 크기 축소 (44px → 28px)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 01:02:24 +09:00
king f93eac9ce5 design: DBX 로고 이미지 적용 (로그인·접근거부·메인 헤더)
- dbx-logo.png를 app/static에 추가
- login.html / denied.html 브랜드 패널 SVG 아이콘 → 로고 이미지로 교체
- main.html 헤더 SVG 아이콘 → 로고 이미지로 교체
- styles.css에 .brand-logo-img / .header-logo-img 스타일 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 23:36:11 +09:00
king c4ae1ab3e6 UI: King 텍스트 움직임 범위 확장, 별 도형 제거, 도형 밝기 조정
- 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>
2026-05-22 02:04:54 +09:00
king 672a99ef80 design: shape-8 삭제, 별 위치 우측 이동, King 반짝 텍스트 추가 2026-05-22 01:19:19 +09:00
king d2b145576b design: 브랜드 패널 도형 강화 — 세모·별 추가, 두께·밝기 증가, 모션 가속 2026-05-22 01:15:23 +09:00
king e1af7285a1 design: DBX Corporation 명칭 수정, 폰트 확대, 브랜드 패널 애니메이션 도형 추가
- 모든 페이지 'DBX Corp' → 'DBX Corporation' 통일
- 브랜드 패널 좌측에 천천히 움직이는 도형 5개 추가 (CSS 애니메이션)
- 전체 기본 폰트 15px → 16px, 제목/카드 크기 확대
- 'Google Workspace 계정...' 문장 한 줄 표시 처리
2026-05-22 01:05:47 +09:00
king 6993ab9397 chore: Pretendard 폰트를 로컬 TTF에서 jsDelivr CDN으로 교체 (저장소 -8MB) 2026-05-22 00:51:00 +09:00
king 60a1426a23 design: 기업용 UI 리디자인 및 로컬 실행 스크립트 추가
- 로그인/접근거부 페이지: 좌우 분할 레이아웃(다크 네이비 브랜드 패널 + 흰색 폼),
  실제 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>
2026-05-21 23:38:32 +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