Commit Graph

36 Commits

Author SHA1 Message Date
chpark 0ba97294eb chore: 시스템 구동에 불필요한 잔재 파일 일괄 삭제
Deploy momo-erp / deploy (push) Successful in 49s
삭제 (FITO 잔재 / 미사용 스크립트):
- dev_git_only.{bat,sh}, run-windows.bat, stop-windows.bat
- start-{debug,dev,dev-full,dev-full-win,devlocal-full,docker-linux,prod-full}.sh, start.sh
- setup.sh, smart-logs.sh, verify-build.sh, quick-rebuild.sh, quick-update-jsp.sh
- build-mac.sh, build-windows.bat, compile_only.sh
- docker-compose.{debug,localdev,win}.yml, Dockerfile.win, dockerfilelocal.dev
- hin, pace_ilshinplm-ilshin (정체불명)
- AGENTS.md, BOM_SEQ_DRAG_DROP.md (FITO 잔재 문서)
- test_contract_*.{html,md} (FITO 계약 테스트)
- cookies.txt (테스트 쿠키 — 보안)
- env.{development,production}.example, .env.example (.env.production.example 와 중복)
- tsconfig.tsbuildinfo (빌드 산출물)

남은 핵심 파일:
- 빌드/런: package.json, tsconfig.json, next.config.ts, postcss.config.mjs, eslint.config.mjs
- 도커: Dockerfile, Dockerfile.dev, docker-compose.{prod,dev}.yml
- 환경: .env.production.example, .env.momo.example
- 가이드: README.md, DOCKER_SETUP.md, SETTING_GUIDE.txt, CICD_SETUP.md, CLAUDE.md
2026-04-26 01:14:57 +09:00
chpark 95129cf606 fix(momo): user_info/supply_mng 통합 + JOIN 타입 캐스팅 + ADMIN 가드 보강
Deploy momo-erp / deploy (push) Successful in 48s
- momo-auth: user_info(AES) 기반으로 전환 (momo_users 폐기)
- /api/auth/signup: user_info INSERT (user_type=C 거래처)
- /api/m/vendors: supply_mng 재사용 (charge_user_name/supply_tel_no/reg_no 등 매핑)
- /api/m/{orders,dashboard,statistics,inbounds,procurements}:
  momo_users → user_info LEFT JOIN, momo_vendors/makers → supply_mng (objid::text 캐스팅)
- /api/m/{users,makers} 라우트 삭제 (admin-panel 사용)
- requireMomoAdmin: FITO isAdmin / userType=A / admin@momo.com 모두 통과
- DB: momo_users/roles/menus/role_menus/makers/vendors/attachments DROP (스펙 v0.2)
2026-04-26 00:41:02 +09:00
chpark 3f97e4eac6 fix(guard): plm_admin(FITO isAdmin)도 모모 ADMIN으로 인정 — 403 해소
Deploy momo-erp / deploy (push) Successful in 49s
2026-04-26 00:26:57 +09:00
chpark 9d042862f8 fix: admin-panel 사이드바 동적화 + 사용자/부서 진짜 삭제 기능 + 스펙 v0.2
Deploy momo-erp / deploy (push) Successful in 50s
admin-panel 좌측 메뉴:
- 정적 ADMIN_MENUS 배열 → menu_info [관리자] 트리 동적 로딩
- /api/admin/sidebar-menus: status='active' 자식만 반환
- 메뉴 관리에서 비활성화/삭제하면 사이드바에서 즉시 빠짐
- LABEL_TO_TAB 매핑으로 기존 탭 동작 유지

사용자/부서 삭제:
- /api/admin/users/delete: 진짜 DELETE FROM user_info (+ authority_sub_user 정리, 본인 보호)
- /api/admin/users/deactivate: status=inActive 비활성화 별도
- /api/admin/dept/delete: 진짜 DELETE (자식 부서/소속 사용자 검사)
- /api/admin/dept/deactivate: 비활성화 별도

문서:
- docs/MOMO_DISTRIBUTION_SPEC.md v0.2: 기존 user_info/dept_info/supply_mng/menu_info/comm_code 재사용 정책 명시
- 신규 momo_* 는 모모 비즈니스 도메인(품목/창고/재고/출고/매입) 만 한정
- TODO: momo_users 등 → 기존 테이블로 이전 마이그레이션
2026-04-26 00:25:04 +09:00
chpark bd20680ba2 fix: FITO API 복원 + 사용자/부서/메뉴 삭제 정상화
Deploy momo-erp / deploy (push) Successful in 48s
- src/app/api/* (FITO 백엔드 API 약 70개) 복원 — (main) 페이지들이
  /api/product/bom, /api/sales/* 등을 호출하므로 복원 필요
- /api/admin/menus/delete: rel_menu_auth 컬럼명 오타 수정 (menu_obj_id → menu_objid)
- /api/admin/menus/delete: cascade 옵션 — 하위 메뉴까지 재귀 일괄 삭제
- /api/admin/users/delete 신규 (soft delete: status=inActive)
- /api/admin/dept/delete 신규 (자식 부서/소속 사용자 검사 후 soft delete)
- admin-panel 사용자 관리: handleDelete 빈 껍데기였음 → 실제 API 호출 + 체크박스 선택 연결
- admin-panel 부서 관리 모달: 삭제 버튼 추가
2026-04-26 00:16:30 +09:00
chpark c131f513db fix(layout): 모모 페이지를 (main)/m/* 로 이동 — 기존 레이아웃 그대로 사용
Deploy momo-erp / deploy (push) Successful in 46s
문제: /m/* 별도 레이아웃 때문에 메뉴 클릭 시 사이드바·헤더·디자인이 통째로
바뀜. 사용자가 원한 건 기존 (main) 레이아웃 안에서 같은 디자인으로 동작.

조치:
- src/app/m/* 전체를 src/app/(main)/m/* 로 이동
- src/app/m/layout.tsx + src/components/momo/{sidebar,header} 삭제
- (main)/layout.tsx 가 자동으로 모든 모모 페이지를 감싸 → Sidebar + Header
  + Content 일관 표시
- URL은 그대로 (/m/dashboard 등) — menu_info DB 변경 불필요

→ plm_admin 로그인 후 [사용자] 그룹의 모모 메뉴 클릭 시 동일한 (main)
   사이드바/헤더 유지하면서 콘텐츠만 교체. 디자인 일관 + 작동 정상.
2026-04-26 00:07:47 +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 dca5675009 feat: 모모유통 메뉴를 [사용자] 그룹 아래로 이동 + 메뉴 삭제 cascade 지원
Deploy momo-erp / deploy (push) Successful in 46s
- DB: menu_info(9000000) parent_obj_id를 0 → -395553955 (사용자) 로 변경
  → 상단 [사용자] 탭 안에 '모모유통' 그룹으로 표시
- /api/admin/menus/delete: cascade=true 시 자손까지 재귀 삭제 (rel_menu_auth 동시 정리)
- admin-panel 메뉴 관리: 하위 메뉴가 있으면 사용자에게 confirm 후 일괄 삭제
2026-04-25 23:51:30 +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 5594c79afe feat(landing): 거래처 관점 4단계 프로세스로 정리 (매입/입고는 어드민 전용)
Deploy momo-erp / deploy (push) Successful in 52s
랜딩 페이지에서 매입/입고 단계를 제외하고 거래처 관점만 표시:
1. 품목 검색 + 출고 요청 (재고 0은 비활성)  → 상태: 출고 요청
2. 출고 처리 (담당자 승인 + 메일+엑셀 발송)  → 상태: 출고 완료
3. 입금 확인 (담당자 등록)                     → 상태: 입금 완료
4. 월말 계산서 발행 (일괄)                     → 상태: 계산서 발행 완료 (최종)

- 각 단계 카드에 담당자(거래처/모모) 명시
- 상태 전이 라벨을 카드 하단에 highlight 박스로 표기
- 사이드바는 이미 정상 (USER에 매입/입고 메뉴 미노출)
2026-04-25 23:25:42 +09:00
chpark ab53a8de63 ci: 헬스체크가 신버전 키워드까지 검증 (set +e 로 비치명 오류 무시)
Deploy momo-erp / deploy (push) Successful in 53s
2026-04-25 23:12:42 +09:00
chpark 7b11eade05 ci: gitea runner가 sshpass로 직접 ssh 배포 (git push만으로 자동반영)
Deploy momo-erp / deploy (push) Failing after 1m10s
2026-04-25 23:09:22 +09:00
chpark edcaefd1ec ci: workflow에서 secrets 참조 완전 제거 (0초 fail 회피)
Deploy momo-erp via webhook / deploy (push) Successful in 5m0s
2026-04-25 22:51:35 +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 b97e7b63a4 ci: secret-free webhook 자동 배포로 전환
Deploy momo-erp via webhook / deploy (push) Failing after 0s
- /api/deploy/webhook: X-Deploy-Token 검증 후 백그라운드로 deploy.sh spawn
- scripts/deploy.sh: git pull + docker compose up --build + migrate
- docker-compose.prod.yml: docker.sock + 소스 디렉토리 마운트
- deploy.yml: webhook 호출 + 헬스체크 폴링 (시크릿 의존성 제거)
- 미들웨어 공개 경로에 /api/deploy/webhook 추가

서버 1회 셋업 (docker-compose.prod.yml 갱신본을 한 번 배포하기만 하면
이후 push 시 자동 재배포 영구 동작)
2026-04-25 21:30:48 +09:00
chpark 0b6def8cda ci: deploy.yml 원본 복원 + SMTP/마이그레이션만 추가
Deploy momo-erp to production / deploy (push) Failing after 4s
2026-04-25 21:24:42 +09:00
chpark c9a806583a ci: trigger redeploy
Deploy momo-erp to production / deploy (push) Failing after 0s
2026-04-25 21:22:20 +09:00
chpark 142617f455 ci: remove test-runner.yml (runner 정상 확인됨)
Deploy momo-erp to production / deploy (push) Failing after 0s
2026-04-25 21:19:05 +09:00
chpark d29490e46f ci: minimal runner sanity check
Deploy momo-erp to production / deploy (push) Failing after 0s
Test runner alive / hello (push) Successful in 0s
2026-04-25 21:17:39 +09:00
chpark b46ec3c1a6 fix(ci): actions/checkout 제거 + secret 검증 단계 추가
Deploy momo-erp to production / deploy (push) Failing after 0s
이전 실패 원인: Gitea Actions runner 가 actions/checkout@v4 를 가져오지
못해 4초만에 즉사. 어차피 원격 서버에서 git clone 하므로 checkout 단계
자체가 불필요. 첫 단계에서 필수 secret 부재 여부를 명시적으로 검사.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:16:45 +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 4f023fc8bf ci(deploy): trigger 브랜치 main 으로 통일 + SMTP/MOMO 환경변수 + 마이그레이션 자동화
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:13:11 +09:00
chpark d7cc711b93 feat(landing): 거래처 사용법 6단계 + 화면 미리보기 섹션 추가
- 가입→검색→장바구니→승인→메일→정산까지 단계별 카드
- 장바구니 미리보기 + 자동발송 메일 미리보기 추가
- 우측 상단 회원가입/로그인 버튼은 기존 유지

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:09:45 +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 b925af0a90 feat(login): 스플릿 레이아웃 + 로고 리디자인 (좌 브랜드 히어로 / 우 폼) 2026-04-25 03:06:41 +09:00
chpark 4f55f36bcd fix(middleware): 정적 자산(.svg 등)을 인증 리다이렉트에서 제외 2026-04-25 02:58:25 +09:00
chpark 070d7f149f fix(login): SVG render via img tag + logo redesign 2026-04-25 02:56:58 +09:00
chpark 0a460d8bd5 fix(deploy): 183.99.177.40 + traefik-net, add CI/CD workflow
- 배포 대상 서버를 183.99.177.40로 확정 (DNS가 가리키는 서버, DB도 같은 곳)
- docker-compose.prod.yml: external network를 traefik-net으로 변경
  (toktork_server_default는 211 서버용이라 DNS와 불일치)
- traefik.docker.network=traefik-net 라벨 추가
- .gitea/workflows/deploy.yml: main push 시 자동 배포
- CICD_SETUP.md: 시크릿 등록 및 Runner 설정 가이드
2026-04-25 02:50:19 +09:00
chpark 6af863199f feat: 모모유통 유통관리 ERP (Next.js 16) — MOMO 브랜딩 + distribution DB + momo.junggomoa.com
- fito-nextjs 기반으로 재구성
- 로그인: MOMO 로고 + 모모유통 + 유통관리 ERP, 하단에 본사/지사 주소 표시
- 사이드바 상단: MOMO 아이콘 + 모모유통 + 유통관리 ERP
- 파비콘: /src/app/icon.svg (MOMO 그린 배지)
- layout.tsx title: 모모유통 | 유통관리 ERP
- DB: 183.99.177.40:5432/distribution (fito 스키마 import 완료)
- Traefik: Host(momo.junggomoa.com), 컨테이너 momo-erp
2026-04-25 02:44:40 +09:00
chpark 80ddde87b2 feat: 모모유통 유통관리 ERP로 브랜딩/설정 전환
- 로그인 화면: 모모유통 + 유통관리 ERP 로고/테마(그린), 본사·지사 주소 및 연락처 표시
- MOMO 로고/파비콘 SVG 추가
- Constants.SYSTEM_TITLE을 "유통관리 ERP", COMPANY_NAME을 "모모유통"으로 변경
- docker-compose 모든 환경(prod/dev/localdev/debug/win) DB 연결을 env 변수로 외부화하고 .env/.env.production에서 로드
- Traefik 라우팅을 momo.junggomoa.com 으로 변경, 컨테이너명 momo-erp로 통일
- .gitignore에 .env.* 패턴 추가(.env.example 제외) — 실제 크리덴셜은 git에 포함하지 않음

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 01:46:23 +09:00
chpark bf4ce3b751 fix: CATALINA_OPTS DB 연결 정보 직접 지정
env_file 변수 치환 타이밍 이슈로 CATALINA_OPTS에 DB 값이 비어있던 문제 수정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 18:57:13 +09:00
chpark d05def3dd6 docker-compose.prod.yml FITO 전용으로 변경
- 컨테이너명 plm-fito, Traefik 라우터 plm-fito
- 외부 DB 사용 (DB 서비스 제거)
- 볼륨 경로 /home/plm-fito/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 18:54:04 +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