프로젝트 배경
1) 문제점 - NestJS CQRS 견적 상태 전환 시 커맨드 버스와 이벤트 버스의 트랜잭션 경계를 TypeORM QueryRunner로 일관성 있게 처리하면서 이벤트 사이드이펙트(알림 발송)를 트랜잭션 외부에서 실행하는 구조 설계 필요 - PostgreSQL 파티션 테이블로 분리된 월별 딜러 거래 이력에서 전체 누적 집계 시 파티션 프루닝이 적용되지 않는 문제를 월간 배치 집계 테이블로 보완하는 이중
프로젝트 성과
NestJS CQRS 기반 견적 4단계 승인 워크플로우 설계
CreateQuote/ReviewQuote/ApproveQuote/RejectQuote 커맨드를 CQRS 핸들러로 분리하고
딜러 등급 자동 산정 스케줄러 + Redis 캐시 구현
NestJS @Cron 데코레이터로 월간 거래 실적 집계 후 등급 기준 매트릭스에 따라 자동 등급을 산정하고, Redis Hash에 할인율을 캐싱하여 견적 계산 시 DB 조회 없이 즉시 반환하는 구조 구현
PostgreSQL ltree 문서 버전 트리 및 Diff 비교 설계
ltree 확장으로 문서 버전 계층 트리(1.0→1.1→1.2)를 관리하고, ancestor/descendant 조회로 버전 간 Diff를 효율적으로 비교하는 쿼리 구조 구축
ResizeObserver 마스터-디테일 분할 워크스페이스 구현
React CSS Grid + ResizeObserver로 사용자가 드래그로 분할 비율을 조정하는 마스터-디테일 패널 구현, 각 패널이 독립 React Query 캐시 키를 갖는 구조로 불필요한 리패치 방지
NestJS Guard + CASL 4단계 역할 기반 접근 제어 구축
관리자/편집자/뷰어/딜러 4단계 역할별 API·라우트·UI 요소에 대한 접근 권한을 CASL ability 정의로 선언적으로 관리하고, NestJS Guard로 엔드포인트 레벨 검증을 수행하는 구조 설계
핵심 기능
진행 단계
B2B 도메인 모델링 및 NestJS 모듈 아키텍처 설계
2025.09.
딜러 포털·견적 워크플로우·기술 문서 3개 도메인을 NestJS 독립 모듈로 분리, TypeORM 엔티티 14개 테이블 및 PostgreSQL ltree/파티션 확장 설계
프로젝트 상세
1) 포트폴리오 소개 제조업 B2B 기업을 위한 제품 카탈로그·견적 요청/승인·딜러 포털·기술 문서 버전 관리를 통합한 B2B 플랫폼을 설계·구현했습니다. 마스터-디테일 분할 워크스페이스 레이아웃, NestJS CQRS 기반 견적 승인 워크플로우, 딜러 등급 자동 산정·할인 정책 관리, 다국어 기술 문서 버전 Diff 비교를 포함한 풀스택 시스템을 Node.js + NestJS + PostgreSQL + R







