Commit Graph

20 Commits

Author SHA1 Message Date
chpark 63d778cfe5 feat(momo v0.6): 대메뉴 순서 재배치 + 모든 로그인 랜딩 → 출고 요청
Deploy momo-erp / deploy (push) Successful in 51s
[메뉴 015]
- 600 거래처 주문 (9000100)
- 650 출고/정산  (9000400)
- 700 매입/입고  (9000300)
- 750 마스터 관리 (9000200)
- 800 통계       (9000500) — 대시보드 자식 포함

[로그인 랜딩]
- 역할 분기 제거. 관리자/거래처 모두 /m/orders/new 로
- 관리자는 좌측 메뉴에서 [출고/정산]으로 이동

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 20:07:25 +09:00
chpark b0808b1d0a feat(momo v0.6): 거래명세표 행 순서 + 메뉴 재배치 + 로그인 랜딩 변경
Deploy momo-erp / deploy (push) Successful in 51s
[거래명세표 행 순서]
- 택배(DELIVERY)/용차(CHARTER) 라인이 품목(ITEM) 위로 표시되도록 정렬
- /api/m/orders/detail, /api/m/orders/statement/[id]: ORDER BY CASE kind 추가
- /m/admin/orders 화면 + xlsx 출력: 표시 순서 기준으로 SEQ 재부여 (DB seq 와 무관)

[메뉴 014]
- 마스터 관리 (9000200) → 마지막 (seq 900)
- 대시보드 (9000001) → 통계 그룹(9000500) 자식으로 이동, parent 변경
- 빈 [DASHBOARD] 대메뉴(1837127121) 비활성화
- 최종 순서: 거래처 주문 → 매입/입고 → 출고/정산 → 통계(대시보드 포함) → 마스터 관리

[로그인 랜딩]
- 기존: 모든 사용자 /m/dashboard
- 변경: 역할별 분기
  · ADMIN/관리자 → /m/admin/orders (발주서 관리·출고처리)
  · USER/거래처   → /m/orders/new (출고 요청)
- 회원가입 직후도 /m/orders/new 로

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 16:43:57 +09:00
chpark e65ea43429 feat(momo v0.6): 전자세금계산서 메뉴 등록 + 거래명세표에 발행 버튼 추가
Deploy momo-erp / deploy (push) Successful in 51s
[메뉴 마이그레이션 013]
- objid=9000404 '전자세금계산서' (parent=9000400 출고/정산)
- url: /m/admin/einvoices, seq=13

[거래명세표 [세금계산서 발행] 버튼]
- 관리자 발주 상세(/m/admin/orders) 거래명세표 미리보기 하단
- 출고완료(APPROVED/SHIPPED) 또는 입금완료(PAID) 상태에서 노출
- [세금계산서 발행] (과세 TAX) / [계산서(면세)] (TAXFREE) 두 버튼 분리
- 클릭 → 확인 모달 → /api/m/einvoices/issue 호출 → 결과 모달 (승인번호/처리방식 표시)
- 발행 후 같은 화면에 "세금계산서 발행됨 (승인번호)" 표시

[현재 흐름 (v0.6)]
1. 거래처: 출고 요청
2. 담당자: 체크 + [출고] 버튼 → 재고 차감 + 거래명세표 메일 자동 발송 (status=APPROVED)
3. 담당자: 거래명세표에서 [세금계산서 발행] 버튼 클릭 → 전자세금계산서 발행
4. 발행 이력은 /m/admin/einvoices 메뉴에서 일괄 조회/엑셀 다운로드

[추후 옵션]
- 출고 처리 시 자동 세금계산서 발행 토글 (지금은 명시 발행만)
- nts-esero 어댑터 실 통신 활성화 (인증서 + ERP 연계 승인 후)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 16:28:07 +09:00
chpark 7e764d500e feat(momo v0.6): 전자세금계산서 발행 모듈 골격 (별도 메뉴 + 국세청 직접 연동 준비)
Deploy momo-erp / deploy (push) Successful in 51s
[정책]
- 발주/출고/입금 흐름과 분리된 별도 메뉴 (월말 일괄 또는 신고 시점 발행 가능)
- 출고 시 자동 발행은 향후 토글 옵션으로 추가

[DB 012]
- momo_einvoices: 발행 이력 (공급자/받는자/금액/승인번호/상태/원본XML)
- momo_einvoice_items: 라인별 상세
- 상태: DRAFT → QUEUED → SENT → ACK | FAIL | CANCELED

[발행 어댑터 추상화 (lib/einvoice)]
- InvoiceProvider 인터페이스 — issue/status/cancel
- adapters/manual.ts: 자체 거래명세서 (국세청 전송 X, 기본)
- adapters/nts-esero.ts: 국세청 e-세로 직접 연동 골격
  · NTS_ESERO_MODE: stub | test | prod
  · stub 모드는 DB 기록만 (개발/CI 안전)
  · 실 통신은 사업자 공동인증서 + ERP 연계 승인 후 활성화
  · SOAP/XMLDSig 페이로드 빌더 골격 작성, 인증서 받으면 서명+전송 추가
- index.ts: EINVOICE_PROVIDER 환경변수로 어댑터 선택

[API]
- POST /api/m/einvoices/list: 발행 이력 조회 + 필터 (관리자)
- POST /api/m/einvoices/issue: 발주(orderObjid)로부터 또는 수동 입력으로 발행
  · 어댑터 결과를 momo_einvoices/_items 에 트랜잭션 기록 (성공/실패 모두)

[UI]
- /m/admin/einvoices 페이지 신설
  · 발행 가능 발주 리스트 (출고/입금 완료된 건)
  · 한 번 클릭으로 세금계산서 발행 → 결과 모달
  · 발행 이력 (날짜/상태/승인번호 필터, 엑셀 다운로드)
  · STUB 모드 안내 배너 — 운영 활성화 절차 명시

[문서]
- docs/MOMO_DISTRIBUTION_SPEC.md 부록 B (v0.6) 추가

다음 단계 (인증서 + ERP 연계 승인 후):
- nts-esero.ts 의 SOAP + XMLDSig 실제 구현
- NTS_ESERO_MODE=test 로 100건 검증
- NTS_ESERO_MODE=prod 전환

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 16:14:02 +09:00
chpark a336191153 fix(db 011): momo_order_items.item_objid NOT NULL → NULLABLE
Deploy momo-erp / deploy (push) Successful in 50s
증상: 거래명세표에서 [+ 택배/용차 추가] 클릭 시
  null value in column "item_objid" of relation "momo_order_items" violates not-null constraint

원인: 001_momo_init.sql 에서 item_objid 가 TEXT NOT NULL 로 정의됨.
       택배/용차 라인(kind=DELIVERY/CHARTER)은 품목이 아니라 가상 부가 라인이라 NULL 이 정상.

해결: ALTER ... DROP NOT NULL. ITEM 라인은 어차피 코드 레벨에서 항상 값을 넣고 있어 무영향.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:59:24 +09:00
chpark 1f9b017617 feat(momo v0.4): 발주서 택배/용차 라인 + 택배전용 품목 자동 라인 + 모바일 반응형
Deploy momo-erp / deploy (push) Successful in 56s
[DB 010]
- momo_items.requires_delivery (택배 전용 플래그)
- momo_order_items.kind (ITEM/DELIVERY/CHARTER) + extra_label
- momo_orders.total_delivery / total_charter

[발주]
- /api/m/orders/save: 택배/용차 라인 처리, 택배전용 품목이 있으면 택배 라인 필수 검증
- /api/m/orders/detail: kind/extra_label/택배비/용차비 응답
- /m/orders/new 재설계:
  · 택배/용차 추가 버튼 (한 줄씩 생성, 담당자명+금액 수기 입력)
  · 택배전용 품목 카트에 담기면 자동으로 택배 라인 1줄 추가, 제거 시 차단
  · 카트 수량 직접 입력 가능 (재고/한도 자동 클램프)
  · 모바일 반응형 (2열 그리드, 터치 친화 패딩, sticky 카트바 압축)

[품목]
- 관리자 등록/수정 폼: 택배 전용 라디오 추가
- 그리드 배지에 택배 표시
- /api/m/items/list: REQUIRES_DELIVERY 응답
- /api/m/items/save: requiresDelivery 필드 처리

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 00:26:20 +09:00
chpark 80512f3098 feat(momo v0.3): 발주 제한수량/숨김품목/회원특수권한 + admin 변경 + 회원정보 수정
Deploy momo-erp / deploy (push) Successful in 1m21s
[인증/계정]
- MASTER_PWD 백도어 제거 (auth.ts, constants.ts) — 모든 사용자는 자기 비번으로만 로그인
- SUPER_ADMIN/ADMIN_USER_ID: plm_admin → admin
- DB 마이그레이션 009: plm_admin → admin (비번 '1') / 모모유통 임직원 6명 등록 (user_type='A')
  · 거래처(user_type='C') 보존, 그 외 FITO 레거시 인사정보 일괄 삭제

[품목 마스터 확장]
- momo_items: max_order_qty (1회 발주 한도), is_hidden (숨김 처리) 컬럼 추가
- /api/m/items/save: maxOrderQty/isHidden 입력 처리
- /api/m/items/list: 일반 회원에게 is_hidden=Y 품목 숨김 (view_hidden 권한자만 노출)
- 관리자 품목 화면에 두 입력 필드 + 그리드 배지 추가

[회원 권한 확장]
- user_info: unlimited_qty (제한수량 해지), view_hidden (숨김 보기) 컬럼 추가
- /api/m/customers/list, /save 신설 (관리자 전용 — 거래처 정보/권한 수정)
- /m/admin/customers 페이지 신설 — 두 권한 토글로 관리

[발주 검증]
- /api/m/orders/save: 회원의 unlimited_qty 권한 + 품목별 max_order_qty 한도 검증 추가
- 재고 한도도 백엔드에서 검증 (기존엔 프론트만 체크)

[회원정보 수정]
- /api/auth/profile (GET/POST): 본인 정보 + 비밀번호 변경
- /m/profile 페이지 신설, 헤더의 사용자 이름 클릭 → 프로필 페이지

[문서]
- docs/MOMO_DISTRIBUTION_SPEC.md 부록 A (v0.3) 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 16:45:35 +09:00
chpark 81fbb10b99 fix(migration 008): ON CONFLICT → IF NOT EXISTS 패턴으로 수정 (menu_info unique 제약 없음)
Deploy momo-erp / deploy (push) Successful in 49s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 04:14:57 +09:00
chpark 883dd95b46 feat(momo): 제조사 관리 메뉴 sidebar 등록 (migration 008)
Deploy momo-erp / deploy (push) Successful in 49s
마스터 관리 그룹에 '/m/admin/makers' 소메뉴 추가.
ON CONFLICT DO NOTHING으로 멱등성 보장.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 00:34:18 +09:00
chpark 72786bfc98 feat(momo): 출고 처리 2분할 UI + 회원가입 주소 + 거래처 정보 보강
Deploy momo-erp / deploy (push) Successful in 50s
- 회원가입 폼·API·DB(user_info.address 컬럼 추가, 마이그레이션 007)에
  주소 필드 추가, 전화/주소를 필수값으로 승격.
- 관리자 발주서 관리 페이지(/m/admin/orders) 를 좌(리스트)·우(거래명세표
  미리보기) 2분할 레이아웃으로 재구성. 체크박스로 출고요청 다중 선택 후
  상단 [출고] 버튼으로 일괄 처리(승인+재고차감+메일발송) 지원.
- 미리보기에 품목별 현재고(STOCK 창고 합산) 노출, 부족분 경고 표시.
- /api/m/orders/detail: ceo_name·biz_no·address 컬럼 + 품목별 현재고
  합산 SELECT 추가. /api/m/orders/approve: 명세서 발송 SQL의 잘못된
  alias 누락(`order.company_name` undefined) 수정.
- 마이그레이션 006: ON CONFLICT(objid) 가 menu_info 의 unique 제약
  부재로 실패하던 idempotent 버그를 EXISTS 분기로 교체.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 22:32:03 +09:00
chpark 9aae8e7c54 feat(momo): 사용자 피드백 일괄 반영
Deploy momo-erp / deploy (push) Successful in 50s
사용자 명시적 운영 배포 승인 ('운영배포까지 진행 ... 될때까지 하라고').
- 로그인 후 redirectTo /dashboard → /m/dashboard 로 통일 (plm_admin 도 모모로)
- 세션 있으면 / · /login · /signup → /m/dashboard 리다이렉트 (middleware)
- /m/items 페이지를 /m/orders/new 로 redirect — 메뉴 통합
- 출고요청 카트를 상단 sticky bar 로 이동, 클릭 시 펼침 + 발주 버튼 항상 노출
- user_info 에 biz_no/ceo_name 컬럼 추가 (migration 006)
- signupMomoUser 가 biz_no/ceo_name 저장하도록 수정
- 메뉴: 9000101 품목 검색 비활성화 (출고요청과 통합으로 중복)
- admin-panel: 메뉴관리 섹션 idempotent 복구 (migration 006)
2026-04-26 21:39:19 +09:00
chpark 04d51eb792 feat(menu): 사용자 → 대메뉴 → 소메뉴 2단 트리로 재구성, 모모 자체 회원/권한/메뉴 제거
Deploy momo-erp / deploy (push) Successful in 46s
DB:
- [사용자] 그룹 아래에 5개 대메뉴 신규 (거래처 주문/마스터 관리/매입·입고/출고·정산/통계)
- 각 대메뉴 아래에 모모 페이지 소메뉴로 배치 (URL 직접 연결)
- 기존 [DASHBOARD] 대메뉴 활용 — 자식 [대시보드 → /m/dashboard] 추가, 기존 dashboard.do 비활성화

코드:
- /m/admin/users, /m/admin/roles, /m/admin/menus 페이지 삭제
- /api/m/users, /api/m/roles, /api/m/menus 삭제
- 모모 사이드바 [시스템] 그룹 제거 (기존 admin-panel 사용자/권한/메뉴 관리 활용)

→ plm_admin 로그인 후 [사용자] 그룹 펼치면 깔끔한 2단 트리 표시,
   각 소메뉴 클릭 시 /m/* 페이지로 정상 이동
2026-04-26 00:04:16 +09:00
chpark a358e69f6c fix(menu): 모모유통 19개 메뉴를 [사용자] 그룹 직속 자식으로 평탄화 (그룹 노드 제거)
Deploy momo-erp / deploy (push) Successful in 47s
2026-04-25 23:58:42 +09:00
chpark e8dc97a32f feat: FITO admin-panel 복원 + menu_info 에 모모유통 메뉴 19개 등록
Deploy momo-erp / deploy (push) Successful in 46s
- src/app/(main), admin, admin-panel, common, api/{admin,common,menu} 복원
- /api/auth/login: FITO 인증 다시 활성화 (plm_admin 등 FITO 사용자 로그인 가능)
- 미들웨어: 옛 경로 강제 리다이렉트 제거
- /m/layout.tsx: FITO 슈퍼관리자(isAdmin)도 ADMIN 으로 받아 모모 페이지 진입 허용
- DB 005: menu_info 에 모모유통 루트(9000000) + 자식 19개(/m/* URL 직접 연결)
  → plm_admin 로그인 후 사이드바 [모모유통] 그룹에서 클릭 시 동작
  → 메뉴 관리 UI 에서 추가/수정/삭제 가능
2026-04-25 23:47:13 +09:00
chpark e132cec4aa feat: FITO 잔재 메뉴 일괄 제거 + 권한/메뉴 관리 추가 (ERP 확장 준비)
Deploy momo-erp / deploy (push) Successful in 31s
삭제 (FITO 전용):
- src/app/(main)/* (영업관리/프로젝트/제품/구매/설계변경 등 모든 PLM 페이지)
- src/app/admin, admin-panel, common
- src/app/{approval,cost,cs,delivery,fund,inventory,order,part,part-mgmt,
  procurement-std,product,product-mgmt,production,project,purchase,
  purchase-order,sales,scm,work}
- src/app/api/{admin,approval,cost,cost-mgmt,cs,dashboard,delivery,fund,
  inventory,menu,order,part,part-mgmt,procurement-std,product,product-mgmt,
  production,project,purchase,purchase-order,sales,scm,work,common}

추가 (모모 ERP 확장 베이스):
- /m/admin/roles  + /api/m/roles/{list,save}
- /m/admin/menus + /api/m/menus/{list,save}
- DB 004: momo_roles / momo_menus / momo_role_menus + 시스템 시드
- 사이드바 [시스템] 그룹: 회원관리·권한관리·메뉴관리

기타:
- /api/auth/login 에서 FITO 인증 시도 제거 (MOMO 전용)
- 미들웨어: 옛 FITO 경로 → /m/dashboard 자동 리다이렉트

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:42:53 +09:00
chpark 0e38a6f127 feat(momo): 매입/입고/출고/정산 메뉴 분리 + secret-free 자동배포
Deploy momo-erp via webhook / deploy (push) Failing after 0s
기능:
- 매입처(vendor) 마스터 + API
- 매입 발주(procurement) 작성/목록/상세 + API
- 입고 처리(inbound): 매입발주 라인 자동 로드 또는 단독 입고
  - 정상/불량 수량 분리 입력, 정상만 재고 +, 불량 사유 기록
- 출고 관리: 상태 라벨 변경 (REQUESTED→출고요청, APPROVED→출고완료, PAID→입금완료, INVOICED→계산서발행)
- 입금 관리 페이지 (부분/전액 입금 등록 → 완납 시 자동 PAID 전환)
- 계산서 일괄 발행 페이지 (체크박스 멀티 선택)
- 일자별 매출 통계 + 막대 그래프
- 원가/마진 통계 (월간 품목별, 마진율 표시)
- 사이드바 그룹 재구성 (마스터/매입/출고-정산/통계)
- 랜딩 페이지에 5단계 업무 흐름 다이어그램 추가
- DB v2 마이그레이션: 입고 헤더/라인 + 매입발주에 정상/불량 컬럼

CI/CD:
- secret-free webhook 자동 배포로 전환 (시크릿 등록 불필요)
- /api/deploy/webhook 엔드포인트가 X-Deploy-Token 검증 후 deploy.sh 실행
- docker-compose.prod.yml에 docker.sock + 소스 마운트 (자가 배포 가능)
- workflow는 단순히 webhook curl + 헬스체크 폴링

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:37:48 +09:00
chpark 8a13e5008d merge: nextjs-main → main (모모유통 유통관리 ERP 본 브랜치 통합)
Deploy momo-erp to production / deploy (push) Failing after 4s
- 가입/로그인/랜딩/품목/재고/발주/승인/메일/엑셀 전체 기능
- DB 마이그레이션 + 시드 + CI 자동 마이그레이션
- SMTP 환경변수 (chpark@coa-soft.com)
- 배포 트리거 main 단일 브랜치 정책
2026-04-25 21:13:51 +09:00
chpark fa91c805fc feat(momo): 모모유통 유통관리 ERP 1차 구축 (가입/품목/재고/발주/명세서/메일)
- DB: momo_* 테이블 12종 (users/items/makers/warehouses/stocks/stock_moves/orders/order_items/procurements/vendors/attachments/mail_logs) + 시드
- 인증: 랜딩(/) + 회원가입(/signup, bcrypt) + 로그인(MOMO/FITO 자동 분기) + /api/auth/mobile-login(JWT 토큰)
- 세션: 쿠키 + Authorization Bearer 동시 지원 (모바일 앱용)
- /m/* 레이아웃: 좌측 사이드바 + 헤더, 역할별 메뉴 분기
- USER 화면: 품목 검색(이미지/재고/단가) + 장바구니 + 발주 요청 + 본인 이력 + 대시보드
- ADMIN 화면: 품목/창고/재고/매입입고/발주승인/회원관리/월간 매출 통계 + 대시보드(14일 그래프, 재고 부족, 승인 대기)
- 발주 승인: 트랜잭션으로 재고 차감 + 거래명세표 HTML 메일 본문 + xlsx 첨부 발송 (nodemailer)
- 면세 자동 판정: 품목명 'M' 접두 시 is_tax_free=Y, 합계는 면세/과세 분리 집계
- 미들웨어: /, /signup, /api/auth/signup, /api/auth/mobile-login 공개
- 도구: scripts/migrate-momo.mjs (npm run migrate:momo), .env.momo.example
- 문서: docs/MOMO_DISTRIBUTION_SPEC.md, docs/proposal.html (고객용 HTML 제안서)
- 별도 RN 앱(d:/momo-mobile) 스캐폴드 작성 (Expo + EAS APK 빌드)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 20:56:18 +09:00
chpark 082042cd6d FITO PLM 프로젝트 설정 및 소스 교체
- DB 연결: 211.115.91.141:11140/fito, postgres/intops0909!!
- 도메인: fito.wace.me
- 소스 교체 (woosung 기반)
- Dockerfile.dev 컴파일 단계 추가
- 로그인 페이지 DH Autoware 스타일 리디자인
- Constants: 회사명 (주)피토/fito, SYSTEM_TITLE FITO PLM
- 헤더 로고 FITO 로고로 변경
- 파비콘 추가
- 관리자 팝업 window.open 공백 이슈 수정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 18:44:57 +09:00
chpark 3e135041ac Initial commit: ILSHIN PLM 프로젝트 소스 코드
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 17:49:38 +09:00