n8n_postgres_mcp_server_backend

diasm3/n8n_postgres_mcp_server_backend

3.2

If you are the rightful owner of n8n_postgres_mcp_server_backend and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The Model Context Protocol (MCP) Server is a specialized server designed to facilitate interaction between AI agents and backend systems, providing a seamless integration layer for various AI-driven functionalities.

μ‹Έλ‹€μ˜¨λΌμΈ λ°±μ—”λ“œ μ‹œμŠ€ν…œ 및 고객 λŒ€μ‘ ν”Œλ‘œμš°

πŸ“‹ ν”„λ‘œμ νŠΈ κ°œμš”

이 ν”„λ‘œμ νŠΈλŠ” μ‹Έλ‹€μ˜¨λΌμΈμ˜ λ°±μ—”λ“œ μ‹œμŠ€ν…œκ³Ό 고객 μ»΄ν”Œλ ˆμΈ λŒ€μ‘ 체계λ₯Ό κ΅¬μΆ•ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

μ£Όμš” ꡬ성 μš”μ†Œ

  • - Next.js 15 + TypeScript + Tailwind CSS
  • - NestJS + Prisma + PostgreSQL
  • - PostgreSQL 16 μŠ€ν‚€λ§ˆ 및 섀계 λ¬Έμ„œ
  • - AI μ—μ΄μ „νŠΈ 톡합 λ ˆμ΄μ–΄
  • n8n Workflow Automation - MCP μ„œλ²„ 연동
  • 고객 μ»΄ν”Œλ ˆμΈ λŒ€μ‘ μ‹œμŠ€ν…œ
  • JIRA 연동 ν‹°μΌ“ 관리

πŸ’‘ μ„œλΉ„μŠ€λ³„ 상세 λ¬Έμ„œ: 각 μ„œλΉ„μŠ€μ˜ μƒμ„Έν•œ 개발 κ°€μ΄λ“œ, API λ¬Έμ„œ, νŠΈλŸ¬λΈ”μŠˆνŒ…μ€ μœ„ 링크λ₯Ό ν΄λ¦­ν•˜μ„Έμš”.

πŸ—οΈ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          🌐 External Layer                                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                               β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚   β”‚   πŸ”’ ngrok   β”‚    β”‚  πŸ“‹ JIRA     β”‚    β”‚  πŸ€– Claude   β”‚                 β”‚
β”‚   β”‚   (HTTPS)    β”‚    β”‚   System     β”‚    β”‚     AI       β”‚                 β”‚
β”‚   β”‚  Port: 4040  β”‚    β”‚  Port: 8081  β”‚    β”‚              β”‚                 β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚          β”‚                   β”‚                    β”‚                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚                   β”‚                    β”‚
           β”‚                   β”‚                    β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          🌍 User Access Layer                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                               β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚  πŸ’» Frontend (Next.js 15)                                        β”‚       β”‚
β”‚   β”‚  http://localhost:3002                                           β”‚       β”‚
β”‚   β”‚  β”œβ”€ React Hook Form + Zod Validation                            β”‚       β”‚
β”‚   β”‚  β”œβ”€ CS 민원 μ ‘μˆ˜ 폼                                               β”‚       β”‚
β”‚   β”‚  └─ μžλ™ ID 생성 (μƒν’ˆ/μ£Όλ¬Έ)                                      β”‚       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                           β”‚ HTTP/JSON (CORS)                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    🐳 Docker Network (Backend Services)                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                               β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚  πŸš€ Backend API (NestJS)                                         β”‚       β”‚
β”‚   β”‚  Port: 3003 (External) / 3000 (Internal)                         β”‚       β”‚
β”‚   β”‚  β”œβ”€ REST API Endpoints                                           β”‚       β”‚
β”‚   β”‚  β”œβ”€ Prisma ORM                                                   β”‚       β”‚
β”‚   β”‚  β”œβ”€ CORS Configuration                                           β”‚       β”‚
β”‚   β”‚  └─ Swagger Documentation                                        β”‚       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚                   β”‚                 β”‚                                        β”‚
β”‚                   β”‚                 β”‚                                        β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚   β”‚  πŸ—„οΈ  PostgreSQL Database                                        β”‚         β”‚
β”‚   β”‚  Port: 5432                                                     β”‚         β”‚
β”‚   β”‚  β”œβ”€ 17 Tables (complaints, users, logs, etc.)                  β”‚         β”‚
β”‚   β”‚  β”œβ”€ Prisma Schema & Migrations                                 β”‚         β”‚
β”‚   β”‚  β”œβ”€ Seed Data (50+ dummy records)                              β”‚         β”‚
β”‚   β”‚  └─ pgvector Extension (AI Embeddings)                         β”‚         β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚          β”‚                          β”‚                                        β”‚
β”‚          β”‚                          β”‚                                        β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚   β”‚  πŸ”§ pgAdmin     β”‚    β”‚  πŸ”Œ Postgres MCP    β”‚    β”‚  🎯 MCP Server β”‚     β”‚
β”‚   β”‚  Port: 5050     β”‚    β”‚  Port: 8003         β”‚    β”‚  Port: 8001    β”‚     β”‚
β”‚   β”‚  └─ DB 관리 UI  β”‚    β”‚  └─ SQL via MCP     β”‚    β”‚  └─ AI Tools   β”‚     β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
β”‚                                                                β”‚              β”‚
β”‚                                                                β”‚              β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚   β”‚  βš™οΈ  n8n Workflow Automation                                       β”‚    β”‚
β”‚   β”‚  Port: 5680                                                        β”‚    β”‚
β”‚   β”‚  β”œβ”€ MCP Server Integration                                        β”‚    β”‚
β”‚   β”‚  β”œβ”€ Webhook Processing                                            β”‚    β”‚
β”‚   β”‚  β”œβ”€ Complaint Auto-Classification                                β”‚    β”‚
β”‚   β”‚  └─ JIRA Ticket Creation                                          β”‚    β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β”‚                                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          πŸ“Š Data Flow Diagram                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                               β”‚
β”‚  1️⃣  Customer Request Flow:                                                  β”‚
β”‚      Frontend β†’ Backend API β†’ PostgreSQL β†’ Response                          β”‚
β”‚                                                                               β”‚
β”‚  2️⃣  AI Agent Flow (via MCP):                                                β”‚
β”‚      Claude/n8n β†’ MCP Server β†’ Backend API β†’ PostgreSQL                      β”‚
β”‚                                                                               β”‚
β”‚  3️⃣  Automation Flow:                                                        β”‚
β”‚      Webhook β†’ ngrok β†’ n8n β†’ MCP Server β†’ Backend API β†’ JIRA                 β”‚
β”‚                                                                               β”‚
β”‚  4️⃣  Direct SQL Flow (for AI):                                               β”‚
β”‚      Claude β†’ Postgres MCP β†’ PostgreSQL (Direct SQL)                         β”‚
β”‚                                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    πŸ”„ CS 민원 처리 ν”Œλ‘œμš° 차트                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                               β”‚
β”‚                        πŸ‘€ 고객 민원 μ ‘μˆ˜                                      β”‚
β”‚                               β”‚                                               β”‚
β”‚                               β–Ό                                               β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚              β”‚  πŸ“ Frontend (Next.js)              β”‚                          β”‚
β”‚              β”‚  - CS 민원 μ ‘μˆ˜ 폼                  β”‚                          β”‚
β”‚              β”‚  - μžλ™ ID 생성                     β”‚                          β”‚
β”‚              β”‚  - Zod 검증                         β”‚                          β”‚
β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β”‚                               β”‚                                               β”‚
β”‚                               β”‚ HTTP POST                                     β”‚
β”‚                               β–Ό                                               β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚              β”‚  πŸš€ Backend API                     β”‚                          β”‚
β”‚              β”‚  POST /complaints                   β”‚                          β”‚
β”‚              β”‚  - μš°μ„ μˆœμœ„ μžλ™ νŒλ‹¨               β”‚                          β”‚
β”‚              β”‚  - 긴급도 μžλ™ νŒλ‹¨                 β”‚                          β”‚
β”‚              β”‚  - ν‹°μΌ“ 번호 생성                   β”‚                          β”‚
β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β”‚                               β”‚                                               β”‚
β”‚                               β–Ό                                               β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚              β”‚  πŸ—„οΈ  PostgreSQL                     β”‚                          β”‚
β”‚              β”‚  INSERT into complaints             β”‚                          β”‚
β”‚              β”‚  - status: "μ ‘μˆ˜"                   β”‚                          β”‚
β”‚              β”‚  - ν‹°μΌ“ 데이터 μ €μž₯                 β”‚                          β”‚
β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β”‚                               β”‚                                               β”‚
β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚          β”‚                   β”‚                   β”‚                           β”‚
β”‚          β–Ό                   β–Ό                   β–Ό                           β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”‚
β”‚   β”‚ n8n μžλ™ β”‚        β”‚ AI μ—μ΄μ „νŠΈβ”‚      β”‚  Frontend β”‚                      β”‚
β”‚   β”‚ μ›Œν¬ν”Œλ‘œμš°β”‚        β”‚  (Claude) β”‚      β”‚   응닡     β”‚                      β”‚
β”‚   β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β”‚
β”‚         β”‚                   β”‚                                                β”‚
β”‚         β–Ό                   β–Ό                                                β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                  β”‚
β”‚   β”‚  πŸ€– MCP Server    β”‚  πŸ”Œ Postgres MCP β”‚                                  β”‚
β”‚   β”‚  (Backend API)    β”‚  (Direct SQL)    β”‚                                  β”‚
β”‚   β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                  β”‚
β”‚         β”‚                    β”‚                                               β”‚
β”‚         β–Ό                    β–Ό                                               β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                       β”‚
β”‚   β”‚     민원 λΆ„λ₯˜ & λ°°μ •             β”‚                                       β”‚
β”‚   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                                       β”‚
β”‚   β”‚  β”‚  μΉ΄ν…Œκ³ λ¦¬λ³„ μžλ™ λΆ„λ₯˜:     β”‚  β”‚                                       β”‚
β”‚   β”‚  β”‚  - 가격정보    β†’ CS 1νŒ€   β”‚  β”‚                                       β”‚
β”‚   β”‚  β”‚  - μƒν’ˆμ •λ³΄    β†’ CS 2νŒ€   β”‚  β”‚                                       β”‚
β”‚   β”‚  β”‚  - 배솑ꡬ맀    β†’ λ°°μ†‘νŒ€   β”‚  β”‚                                       β”‚
β”‚   β”‚  β”‚  - μ‹œμŠ€ν…œκΈ°μˆ   β†’ κΈ°μˆ νŒ€   β”‚  β”‚                                       β”‚
β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                                       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                       β”‚
β”‚                 β”‚                                                            β”‚
β”‚                 β–Ό                                                            β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                       β”‚
β”‚   β”‚  🎯 λ‹΄λ‹Ήμž λ°°μ • (MCP Tool)       β”‚                                       β”‚
β”‚   β”‚  PUT /complaints/:id             β”‚                                       β”‚
β”‚   β”‚  - assignedTo: agent_id          β”‚                                       β”‚
β”‚   β”‚  - assignedTeam: "CS 1νŒ€"        β”‚                                       β”‚
β”‚   β”‚  - status: "μ²˜λ¦¬μ€‘"              β”‚                                       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                       β”‚
β”‚                 β”‚                                                            β”‚
β”‚                 β–Ό                                                            β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                       β”‚
β”‚   β”‚  ❓ μ§€μΉ¨μ„œ 쑴재 μ—¬λΆ€ 확인        β”‚                                       β”‚
β”‚   β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”˜                                       β”‚
β”‚      β”‚ YES                       β”‚ NO                                        β”‚
β”‚      β–Ό                           β–Ό                                           β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                           β”‚
β”‚   β”‚  πŸ“– μ§€μΉ¨μ„œ     β”‚      β”‚  πŸ“‹ JIRA ν‹°μΌ“ 생성 β”‚                           β”‚
β”‚   β”‚  따라 μ‘λŒ€     β”‚      β”‚  (MCP Tool)         β”‚                           β”‚
β”‚   β”‚                β”‚      β”‚  - update-complaint-β”‚                           β”‚
β”‚   β”‚  - ν…œν”Œλ¦Ώ μ‚¬μš© β”‚      β”‚    jira-ticket      β”‚                           β”‚
β”‚   β”‚  - λΉ λ₯Έ ν•΄κ²°   β”‚      β”‚  - κ°œλ°œνŒ€ κ²€ν†  μš”μ²­β”‚                           β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                           β”‚
β”‚           β”‚                         β”‚                                        β”‚
β”‚           β”‚                         β–Ό                                        β”‚
β”‚           β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                            β”‚
β”‚           β”‚              β”‚  πŸ”§ κ°œλ°œνŒ€ κ²€ν†      β”‚                            β”‚
β”‚           β”‚              β”‚  - μ‹ κ·œ μ§€μΉ¨ μž‘μ„±  β”‚                            β”‚
β”‚           β”‚              β”‚  - KB μ—…λ°μ΄νŠΈ      β”‚                            β”‚
β”‚           β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                            β”‚
β”‚           β”‚                        β”‚                                         β”‚
β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                         β”‚
β”‚                        β”‚                                                     β”‚
β”‚                        β–Ό                                                     β”‚
β”‚           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                   β”‚
β”‚           β”‚  πŸ’¬ 고객 μ‘λŒ€                β”‚                                   β”‚
β”‚           β”‚  - 응닡 μž‘μ„±                 β”‚                                   β”‚
β”‚           β”‚  - μƒνƒœ μ—…λ°μ΄νŠΈ             β”‚                                   β”‚
β”‚           β”‚  - λ§Œμ‘±λ„ 쑰사               β”‚                                   β”‚
β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                   β”‚
β”‚                         β”‚                                                    β”‚
β”‚                         β–Ό                                                    β”‚
β”‚           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                   β”‚
β”‚           β”‚  βœ… 민원 μ™„λ£Œ                β”‚                                   β”‚
β”‚           β”‚  - status: "ν•΄κ²°"            β”‚                                   β”‚
β”‚           β”‚  - resolvedAt 기둝           β”‚                                   β”‚
β”‚           β”‚  - 톡계 μ—…λ°μ΄νŠΈ             β”‚                                   β”‚
β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                   β”‚
β”‚                                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜


β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    🚨 μ—μŠ€μ»¬λ ˆμ΄μ…˜ ν”Œλ‘œμš° 차트                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                               β”‚
β”‚                        πŸ“ 민원 μ ‘μˆ˜                                           β”‚
β”‚                            β”‚                                                  β”‚
β”‚                            β–Ό                                                  β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                β”‚
β”‚              β”‚  🎯 μš°μ„ μˆœμœ„ & 긴급도 νŒλ‹¨   β”‚                                β”‚
β”‚              β”‚  (Backend μžλ™ νŒλ‹¨)          β”‚                                β”‚
β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                β”‚
β”‚                       β”‚                                                       β”‚
β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                         β”‚
β”‚          β”‚            β”‚            β”‚                                          β”‚
β”‚          β–Ό            β–Ό            β–Ό                                          β”‚
β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                  β”‚
β”‚     β”‚  Low    β”‚  β”‚ Medium  β”‚  β”‚  High   β”‚                                  β”‚
β”‚     β”‚ Priorityβ”‚  β”‚ Priorityβ”‚  β”‚ Priorityβ”‚                                  β”‚
β”‚     β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜                                  β”‚
β”‚          β”‚            β”‚            β”‚                                          β”‚
β”‚          β–Ό            β–Ό            β–Ό                                          β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                 β”‚
β”‚   β”‚ Level 1  β”‚  β”‚ Level 1  β”‚  β”‚ Level 2  β”‚                                 β”‚
β”‚   β”‚ μΌλ°˜μƒλ‹΄μ›β”‚  β”‚ μΌλ°˜μƒλ‹΄μ›β”‚  β”‚ μ„ μž„μƒλ‹΄μ›β”‚                                 β”‚
β”‚   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜                                 β”‚
β”‚        β”‚             β”‚             β”‚                                          β”‚
β”‚        β”‚             β”‚             β”‚                                          β”‚
β”‚        β–Ό             β–Ό             β–Ό                                          β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                   β”‚
β”‚   β”‚  ❓ 48μ‹œκ°„ λ‚΄ ν•΄κ²° κ°€λŠ₯?             β”‚                                   β”‚
β”‚   β””β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                   β”‚
β”‚      β”‚ YES                   β”‚ NO                                            β”‚
β”‚      β–Ό                       β–Ό                                                β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                 β”‚
β”‚   β”‚  ν•΄κ²°   β”‚     β”‚  πŸ”Ί Level 2 μ—μŠ€μ»¬   β”‚                                 β”‚
β”‚   β”‚  μ™„λ£Œ   β”‚     β”‚  - escalationLevel: 2 β”‚                                 β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚  - isEscalated: true  β”‚                                 β”‚
β”‚                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                 β”‚
β”‚                              β”‚                                               β”‚
β”‚                              β–Ό                                               β”‚
β”‚                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                               β”‚
β”‚                  β”‚  πŸ‘” νŒ€μž₯/λ§€λ‹ˆμ € κ²€ν†      β”‚                               β”‚
β”‚                  β”‚  - λ³΅μž‘ν•œ μΌ€μ΄μŠ€         β”‚                               β”‚
β”‚                  β”‚  - 법적 κ²€ν†  ν•„μš”        β”‚                               β”‚
β”‚                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                               β”‚
β”‚                             β”‚                                                β”‚
β”‚                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                     β”‚
β”‚                   β”‚ ν•΄κ²° κ°€λŠ₯β”‚ λΆˆκ°€λŠ₯  β”‚                                     β”‚
β”‚                   β–Ό         β–Ό         β–Ό                                      β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                β”‚
β”‚              β”‚  ν•΄κ²°   β”‚ β”‚ πŸ”Ί Level 3     β”‚                                β”‚
β”‚              β”‚  μ™„λ£Œ   β”‚ β”‚ - λ²•λ¬΄νŒ€ ν˜‘μ˜  β”‚                                β”‚
β”‚              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ - μž„μ› 보고     β”‚                                β”‚
β”‚                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                β”‚
β”‚                                   β”‚                                          β”‚
β”‚                                   β–Ό                                          β”‚
β”‚                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                               β”‚
β”‚                        β”‚  πŸ‘¨β€πŸ’Ό μž„μ› 레벨 κ²°μ •  β”‚                               β”‚
β”‚                        β”‚  Level 4           β”‚                               β”‚
β”‚                        β”‚  - μ€‘λŒ€ μ‚¬μ•ˆ       β”‚                               β”‚
β”‚                        β”‚  - μ΅œμ’… μ˜μ‚¬κ²°μ •   β”‚                               β”‚
β”‚                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                               β”‚
β”‚                                                                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ꡬ성 μš”μ†Œ μ„€λͺ…

πŸ”΅ Core Services
  • Frontend (Next.js 15): 고객 민원 μ ‘μˆ˜ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ (Port: 3002)

    • Next.js 15 with App Router
    • TypeScript + Tailwind CSS
    • React Hook Form + Zod validation
    • CS 문의 μž…λ ₯ 폼
    • μžλ™ ID 생성 (μƒν’ˆ/μ£Όλ¬Έ)
  • Backend API (NestJS): 메인 λ°±μ—”λ“œ μ„œλ²„ (Port: 3003)

    • REST API 제곡
    • CORS μ„€μ • μ™„λ£Œ
    • Prisma ORM으둜 DB 연동
    • 고객 μ»΄ν”Œλ ˆμΈ, μ‚¬μš©μž 관리 λ“±
  • PostgreSQL Database: 데이터 μ €μž₯μ†Œ (Port: 5432)

    • 17개 ν…Œμ΄λΈ” (customer_users, complaints, internal_users λ“±)
    • 더미 데이터 μžλ™ 생성
    • pgvector ν™•μž₯ (AI embedding)
🟒 Automation & AI
  • n8n Workflow: μ›Œν¬ν”Œλ‘œμš° μžλ™ν™” (Port: 5680)

    • μ»΄ν”Œλ ˆμΈ μžλ™ λΆ„λ₯˜ 및 처리
    • MCP Server 연동
    • Webhook 기반 이벀트 처리
  • MCP Server (Custom): AI μ—μ΄μ „νŠΈ 톡합 λ ˆμ΄μ–΄ (Port: 8001)

    • Tools: AIκ°€ 호좜 κ°€λŠ₯ν•œ ν•¨μˆ˜λ“€
    • Resources: 데이터 μ†ŒμŠ€ 제곡
    • Prompts: ν”„λ‘¬ν”„νŠΈ ν…œν”Œλ¦Ώ
  • Postgres MCP Server: PostgreSQL μ „μš© MCP (Port: 8003)

    • SQL 쿼리 μ‹€ν–‰
    • λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ 탐색
    • AI 기반 SQL 생성
🟑 External Integrations
  • ngrok: HTTPS 터널링 (Port: 4040)

    • 둜컬 n8n을 외뢀에 λ…ΈμΆœ
    • Webhook URL 제곡
  • JIRA: ν‹°μΌ“ 관리 μ‹œμŠ€ν…œ (Port: 8081)

    • μ»΄ν”Œλ ˆμΈ ν‹°μΌ“ μžλ™ 생성
    • 이슈 좔적
  • Claude AI: AI μ–΄μ‹œμŠ€ν„΄νŠΈ

    • MCP Server 톡해 λ°±μ—”λ“œ μ ‘κ·Ό
    • μžλ™ 응닡 생성
🟠 Management Tools
  • pgAdmin: PostgreSQL 관리 UI (Port: 5050)
    • λ°μ΄ν„°λ² μ΄μŠ€ μ‹œκ°ν™”
    • 쿼리 μ‹€ν–‰ 및 관리

데이터 흐름

  1. 고객 μš”μ²­ β†’ Frontend β†’ Backend API β†’ PostgreSQL
  2. μžλ™ν™” μ›Œν¬ν”Œλ‘œμš° β†’ n8n β†’ MCP Server β†’ Backend API
  3. AI μ–΄μ‹œμŠ€ν„΄νŠΈ β†’ Claude β†’ MCP Server β†’ PostgreSQL (via Postgres MCP)
  4. μ™ΈλΆ€ Webhook β†’ ngrok β†’ n8n β†’ μ›Œν¬ν”Œλ‘œμš° 처리

πŸš€ μ‹œμž‘ν•˜κΈ°

1. ν™˜κ²½ μ„€μ •

# ν”„λ‘œμ νŠΈ 클둠
git clone [repository-url]
cd backend-setup

# ν™˜κ²½ λ³€μˆ˜ μ„€μ •
cp backend_sarda_online/.env.example backend_sarda_online/.env

2. Docker μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰

# λͺ¨λ“  μ„œλΉ„μŠ€ μ‹œμž‘
docker-compose up -d

# κ°œλ³„ μ„œλΉ„μŠ€ μ‹œμž‘
docker-compose up -d postgres    # PostgreSQL
docker-compose up -d pgadmin     # pgAdmin
docker-compose up -d n8n         # n8n
docker-compose up -d backend     # Backend API

3. μ„œλΉ„μŠ€ 접속 정보

μ„œλΉ„μŠ€URL인증 정보
Frontendhttp://localhost:3002-
Backend APIhttp://localhost:3003-
Swagger API Docshttp://localhost:3003/api-
n8nhttp://localhost:5680admin / admin
pgAdminhttp://localhost:5050admin@sarda-online.com / admin
PostgreSQLlocalhost:5432sarda_online_user / sarda_online_password
MCP Serverhttp://localhost:8001-
Postgres MCPhttp://localhost:8003-
ngrok Dashboardhttp://localhost:4040-
Jirahttp://localhost:8081(초기 μ„€μ • ν•„μš”)

4. ngrok HTTPS 터널 μ„€μ •

ngrok을 μ‚¬μš©ν•˜μ—¬ 둜컬 n8n을 μ™ΈλΆ€μ—μ„œ HTTPS둜 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ngrok μ„€μ • 방법
  1. ν™˜κ²½ λ³€μˆ˜ μ„€μ •

    # .env νŒŒμΌμ—μ„œ ngrok authtoken μ„€μ •
    NGROK_AUTHTOKEN=your_ngrok_authtoken_here
    

    authtoken은 ngrok λŒ€μ‹œλ³΄λ“œμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

  2. Docker Compose μ‹€ν–‰

    docker-compose up -d ngrok
    
  3. HTTPS URL 확인

    ngrok이 μƒμ„±ν•œ HTTPS URL을 ν™•μΈν•˜λŠ” 방법:

    방법 1: μ›Ή μΈν„°νŽ˜μ΄μŠ€ (μΆ”μ²œ)

    방법 2: API 호좜

    curl http://localhost:4040/api/tunnels | jq '.tunnels[0].public_url'
    

    방법 3: Docker 둜그

    docker logs sarda_online_ngrok
    
  4. n8n Webhook URL μ—…λ°μ΄νŠΈ

    방법 1: μžλ™ μ—…λ°μ΄νŠΈ 슀크립트 μ‚¬μš© (μΆ”μ²œ) ✨

    # μ‹€ν–‰ κΆŒν•œ λΆ€μ—¬ (졜초 1회만)
    chmod +x update-n8n-url.sh
    
    # 슀크립트 μ‹€ν–‰ - ngrok URL μžλ™ 감지 및 .env μ—…λ°μ΄νŠΈ + n8n μž¬μ‹œμž‘
    ./update-n8n-url.sh
    

    μŠ€ν¬λ¦½νŠΈκ°€ μžλ™μœΌλ‘œ:

    • βœ… ngrok APIμ—μ„œ ν˜„μž¬ 터널 URL κ°€μ Έμ˜€κΈ°
    • βœ… .env 파일의 N8N_WEBHOOK_URLκ³Ό N8N_HOST μ—…λ°μ΄νŠΈ
    • βœ… n8n μ»¨ν…Œμ΄λ„ˆ μžλ™ μž¬μ‹œμž‘

    방법 2: μˆ˜λ™ μ—…λ°μ΄νŠΈ

    ngrok URL을 ν™•μΈν•œ ν›„ .env 파일 μˆ˜μ •:

    # .env
    N8N_WEBHOOK_URL=https://abc123.ngrok.io
    N8N_HOST=abc123.ngrok.io
    

    그리고 n8n μ»¨ν…Œμ΄λ„ˆ μž¬μ‹œμž‘:

    docker-compose restart n8n
    
ngrok μ„€μ • 파일

ngrok.yml 파일 ꡬ쑰:

version: "2"
tunnels:
  n8n:
    addr: n8n:56780 # n8n  docker λ‚΄λΆ€
    proto: http
    schemes:
      - https # HTTPS만 ν™œμ„±ν™”
μ£Όμ˜μ‚¬ν•­
  • 무료 ν”Œλžœ μ œν•œ: ngrok 무료 ν”Œλžœμ€ λ™μ‹œμ— 1개의 ν„°λ„λ§Œ μ‚¬μš© κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • URL λ³€κ²½: ngrok을 μž¬μ‹œμž‘ν•  λ•Œλ§ˆλ‹€ URL이 λ³€κ²½λ©λ‹ˆλ‹€. κ³ μ • URL이 ν•„μš”ν•œ 경우 유료 ν”Œλžœμ„ μ‚¬μš©ν•˜μ„Έμš”.
  • λ³΄μ•ˆ: authtoken은 .env νŒŒμΌμ— μ €μž₯ν•˜κ³  μ ˆλŒ€ Git에 μ»€λ°‹ν•˜μ§€ λ§ˆμ„Έμš”.
νŠΈλŸ¬λΈ”μŠˆνŒ…
  1. ERR_NGROK_105 (인증 μ‹€νŒ¨)

    • .env 파일의 NGROK_AUTHTOKEN κ°’ 확인
    • ngrok λŒ€μ‹œλ³΄λ“œμ—μ„œ μ˜¬λ°”λ₯Έ 토큰 확인
  2. 터널이 μƒμ„±λ˜μ§€ μ•ŠμŒ

    • n8n μ»¨ν…Œμ΄λ„ˆκ°€ μ‹€ν–‰ 쀑인지 확인: docker ps | grep n8n
    • ngrok 둜그 확인: docker logs sarda_online_ngrok
  3. Webhook이 μž‘λ™ν•˜μ§€ μ•ŠμŒ

    • n8n의 N8N_WEBHOOK_URL ν™˜κ²½λ³€μˆ˜κ°€ ngrok URL둜 μ„€μ •λ˜μ—ˆλŠ”μ§€ 확인
    • n8n μ›Œν¬ν”Œλ‘œμš°μ—μ„œ Webhook URL이 μ˜¬λ°”λ₯Έμ§€ 확인

πŸ“¦ μ„œλΉ„μŠ€λ³„ 상세 λ¬Έμ„œ

🌐 Frontend (Next.js 15)

고객이 CS 민원을 μ ‘μˆ˜ν•  수 μžˆλŠ” μ›Ή μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

  • 기술 μŠ€νƒ: Next.js 15, TypeScript, Tailwind CSS, React Hook Form, Zod
  • μ£Όμš” κΈ°λŠ₯: CS 민원 μ ‘μˆ˜ 폼, μžλ™ ID 생성, 폼 검증, μ ‘μˆ˜ μ™„λ£Œ 정보 ν‘œμ‹œ
  • 포트: 3002 (μ™ΈλΆ€) β†’ 3000 (λ‚΄λΆ€)

πŸš€ Backend API (NestJS)

μ‹Έλ‹€μ˜¨λΌμΈ CS 민원 관리 μ‹œμŠ€ν…œμ˜ λ°±μ—”λ“œ API μ„œλ²„μž…λ‹ˆλ‹€.

  • 기술 μŠ€νƒ: NestJS, Prisma, PostgreSQL 16, TypeScript
  • μ£Όμš” API: Customer Users, Internal Users, Complaints, User Logs
  • 포트: 3003 (μ™ΈλΆ€) β†’ 3000 (λ‚΄λΆ€)
  • API λ¬Έμ„œ: http://localhost:3003/api (Swagger)

πŸ—„οΈ Database (PostgreSQL 16)

λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ 섀계 및 관리 λ¬Έμ„œμž…λ‹ˆλ‹€.

  • DBMS: PostgreSQL 16
  • ORM: Prisma
  • ν…Œμ΄λΈ”: 9개 (고객, 직원, 민원, 응닡, 이λ ₯, ν…œν”Œλ¦Ώ, SLA, KB λ“±)
  • μ£Όμš” κΈ°λŠ₯: λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, μ‹œλ“œ 데이터, λ°±μ—…/볡원

πŸ€– MCP Server

AI μ—μ΄μ „νŠΈ(Claude, n8n λ“±)κ°€ Backend API와 μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” 톡합 λ ˆμ΄μ–΄μž…λ‹ˆλ‹€.

  • 기술 μŠ€νƒ: TypeScript, MCP Protocol, HTTP/SSE
  • μ£Όμš” Tools: 고객 관리, 직원 관리, 민원 관리 (Read/Write), μ‚¬μš©μž 둜그
  • 포트: 8001 (μ™ΈλΆ€) β†’ 3000 (λ‚΄λΆ€)


λΉ λ₯Έ μ‹œμž‘ κ°€μ΄λ“œ

각 μ„œλΉ„μŠ€λ₯Ό κ°œλ³„μ μœΌλ‘œ μ‹€ν–‰ν•˜λ €λ©΄:

# Frontend μ‹€ν–‰
docker compose up -d frontend

# Backend μ‹€ν–‰
docker compose up -d backend

# MCP Server μ‹€ν–‰
docker compose up -d mcp-server

더 μžμ„Έν•œ 개발 κ°€μ΄λ“œλŠ” 각 μ„œλΉ„μŠ€μ˜ READMEλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

πŸ—‚οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

n8n_with_mcp_server_example/
β”œβ”€β”€ πŸ“„ docker-compose.yml              # Docker Compose μ„€μ •
β”œβ”€β”€ πŸ“„ ngrok.yml                        # ngrok 터널 μ„€μ •
β”œβ”€β”€ πŸ“„ .env                             # ν™˜κ²½ λ³€μˆ˜ (Git μ œμ™Έ)
β”œβ”€β”€ πŸ“„ .env.example                     # ν™˜κ²½ λ³€μˆ˜ ν…œν”Œλ¦Ώ
β”œβ”€β”€ πŸ“„ .gitignore                       # Git μ œμ™Έ 파일 λͺ©λ‘
β”œβ”€β”€ πŸ“„ README.md                        # ν”„λ‘œμ νŠΈ λ¬Έμ„œ
β”‚
β”œβ”€β”€ πŸ“ frontend/                        # Next.js Frontend μ• ν”Œλ¦¬μΌ€μ΄μ…˜
β”‚   β”œβ”€β”€ πŸ“ app/
β”‚   β”‚   β”œβ”€β”€ πŸ“„ page.tsx                # 메인 νŽ˜μ΄μ§€ (CS 폼)
β”‚   β”‚   β”œβ”€β”€ πŸ“„ layout.tsx              # 루트 λ ˆμ΄μ•„μ›ƒ
β”‚   β”‚   └── πŸ“„ globals.css             # μ „μ—­ μŠ€νƒ€μΌ
β”‚   β”œβ”€β”€ πŸ“ components/
β”‚   β”‚   └── πŸ“„ ComplaintForm.tsx       # CS 민원 μ ‘μˆ˜ 폼
β”‚   β”œβ”€β”€ πŸ“ lib/
β”‚   β”‚   └── πŸ“„ api.ts                  # API ν΄λΌμ΄μ–ΈνŠΈ
β”‚   β”œβ”€β”€ πŸ“ types/
β”‚   β”‚   └── πŸ“„ complaint.ts            # νƒ€μž… μ •μ˜
β”‚   β”œβ”€β”€ πŸ“„ Dockerfile                   # Frontend 도컀 이미지
β”‚   β”œβ”€β”€ πŸ“„ .dockerignore                # Docker λΉŒλ“œ μ œμ™Έ
β”‚   β”œβ”€β”€ πŸ“„ .env.local                   # 둜컬 ν™˜κ²½λ³€μˆ˜
β”‚   β”œβ”€β”€ πŸ“„ next.config.ts               # Next.js μ„€μ •
β”‚   β”œβ”€β”€ πŸ“„ tailwind.config.ts           # Tailwind μ„€μ •
β”‚   β”œβ”€β”€ πŸ“„ package.json                 # μ˜μ‘΄μ„± 관리
β”‚   └── πŸ“„ tsconfig.json                # TypeScript μ„€μ •
β”‚
β”œβ”€β”€ πŸ“ backend_sarda_online/                  # NestJS Backend μ• ν”Œλ¦¬μΌ€μ΄μ…˜
β”‚   β”œβ”€β”€ πŸ“ src/
β”‚   β”‚   β”œβ”€β”€ πŸ“ users/                  # 고객 μ‚¬μš©μž 관리 λͺ¨λ“ˆ (customer-users API)
β”‚   β”‚   β”œβ”€β”€ πŸ“ user-logs/              # 고객 μ‚¬μš©μž 둜그 λͺ¨λ“ˆ (customer-user-logs API)
β”‚   β”‚   β”œβ”€β”€ πŸ“ prisma/                 # Prisma μ„œλΉ„μŠ€
β”‚   β”‚   β”œβ”€β”€ πŸ“„ main.ts                 # μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ—”νŠΈλ¦¬
β”‚   β”‚   β”œβ”€β”€ πŸ“„ app.module.ts           # 루트 λͺ¨λ“ˆ
β”‚   β”‚   └── πŸ“„ app.controller.ts       # 루트 컨트둀러
β”‚   β”œβ”€β”€ πŸ“ prisma/
β”‚   β”‚   β”œβ”€β”€ πŸ“ migrations/             # Prisma λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
β”‚   β”‚   β”œβ”€β”€ πŸ“„ schema.prisma           # λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ
β”‚   β”‚   └── πŸ“„ seed.ts                 # μ‹œλ“œ 데이터
β”‚   β”œβ”€β”€ πŸ“ test/                       # E2E ν…ŒμŠ€νŠΈ
β”‚   β”œβ”€β”€ πŸ“„ Dockerfile                   # Backend 도컀 이미지
β”‚   β”œβ”€β”€ πŸ“„ package.json                 # μ˜μ‘΄μ„± 관리
β”‚   β”œβ”€β”€ πŸ“„ tsconfig.json                # TypeScript μ„€μ •
β”‚   └── πŸ“„ .env.example                 # Backend ν™˜κ²½λ³€μˆ˜ ν…œν”Œλ¦Ώ
β”‚
β”œβ”€β”€ πŸ“ database/                        # λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ ¨ 파일
β”‚   β”œβ”€β”€ πŸ“ scripts/
β”‚   β”‚   β”œβ”€β”€ πŸ“ init/                   # μ΄ˆκΈ°ν™” 슀크립트
β”‚   β”‚   β”‚   └── πŸ“„ 01-init-databases.sql
β”‚   β”‚   β”œβ”€β”€ πŸ“ migrations/             # λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 슀크립트
β”‚   β”‚   β”‚   └── πŸ“„ 02-create-cs-tables.sql
β”‚   β”‚   └── πŸ“ seeds/                  # μ‹œλ“œ 데이터 슀크립트
β”‚   β”‚       └── πŸ“„ 03-seed-dummy-data.sql
β”‚   β”œβ”€β”€ πŸ“ backups/                    # λ°μ΄ν„°λ² μ΄μŠ€ λ°±μ—…
β”‚   β”‚   └── πŸ“„ full-dump.sql           # 전체 데이터 덀프 (310MB)
β”‚   └── πŸ“„ README.md                    # λ°μ΄ν„°λ² μ΄μŠ€ λ¬Έμ„œ
β”‚
β”œβ”€β”€ πŸ“ mcp_server_practice/             # MCP μ„œλ²„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜
β”‚   β”œβ”€β”€ πŸ“ src/
β”‚   β”‚   β”œβ”€β”€ πŸ“ tools/                  # MCP 도ꡬ
β”‚   β”‚   └── πŸ“„ index.ts                # MCP μ„œλ²„ μ—”νŠΈλ¦¬
β”‚   β”œβ”€β”€ πŸ“„ Dockerfile                   # MCP μ„œλ²„ 도컀 이미지
β”‚   β”œβ”€β”€ πŸ“„ docker-compose.yml           # MCP μ„œλ²„ μ „μš© Compose
β”‚   β”œβ”€β”€ πŸ“„ package.json                 # μ˜μ‘΄μ„± 관리
β”‚   β”œβ”€β”€ πŸ“„ tsconfig.json                # TypeScript μ„€μ •
β”‚   └── πŸ“„ readme.md                    # MCP μ„œλ²„ λ¬Έμ„œ
β”‚
└── πŸ“ documents/                       # ν”„λ‘œμ νŠΈ λ¬Έμ„œ
    β”œβ”€β”€ πŸ“„ customer-complaint-guideline.md   # 고객 λŒ€μ‘ μ§€μΉ¨μ„œ
    β”œβ”€β”€ πŸ“„ complaint-response-templates.md   # μ‘λŒ€ ν…œν”Œλ¦Ώ
    └── πŸ“„ n8n-workflow-guide.md             # n8n μ›Œν¬ν”Œλ‘œμš° κ°€μ΄λ“œ

μ£Όμš” 디렉토리 μ„€λͺ…

  • frontend/: Next.js 15 기반 고객 CS 민원 μ ‘μˆ˜ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜
  • backend_sarda_online/: NestJS 기반 Backend API μ„œλ²„
  • database/: PostgreSQL μ΄ˆκΈ°ν™”, λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, λ°±μ—… 관리
  • mcp_server_practice/: Model Context Protocol μ„œλ²„ (AI 연동)
  • documents/: 고객 λŒ€μ‘ κ°€μ΄λ“œ 및 μ›Œν¬ν”Œλ‘œμš° λ¬Έμ„œ

πŸ”„ n8n μ›Œν¬ν”Œλ‘œμš° μ‹œλ‚˜λ¦¬μ˜€

1. 고객 문의 μžλ™ λΆ„λ₯˜

  • 문의 λ‚΄μš© ν‚€μ›Œλ“œ 뢄석
  • μΉ΄ν…Œκ³ λ¦¬ μžλ™ λΆ„λ₯˜
  • λ‹΄λ‹Ήμž μžλ™ λ°°μ •

2. JIRA ν‹°μΌ“ μžλ™ 생성

  • μ§€μΉ¨μ„œ μ—†λŠ” μΌ€μ΄μŠ€ 감지
  • JIRA API 연동
  • μš°μ„ μˆœμœ„ μžλ™ μ„€μ •

3. 고객 μ‘λŒ€ μžλ™ν™”

  • ν…œν”Œλ¦Ώ 기반 초기 응닡
  • μƒνƒœ μ—…λ°μ΄νŠΈ μ•Œλ¦Ό
  • λ§Œμ‘±λ„ 쑰사 λ°œμ†‘

πŸ› οΈ μœ μ§€λ³΄μˆ˜

둜그 확인

# Backend 둜그
docker logs sarda_online_backend -f

# n8n 둜그
docker logs sarda_online_n8n -f

# PostgreSQL 둜그
docker logs sarda_online_postgres -f

λ°μ΄ν„°λ² μ΄μŠ€ λ°±μ—…

# λ°±μ—…
docker exec sarda_online_postgres pg_dump -U sarda_online_user sarda_online_db > backup.sql

# 볡원
docker exec -i sarda_online_postgres psql -U sarda_online_user sarda_online_db < backup.sql

🚨 νŠΈλŸ¬λΈ”μŠˆνŒ…

1. μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘ μ‹€νŒ¨

# λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆ 쀑지 및 제거
docker-compose down

# λ³Όλ₯¨ μ‚­μ œ (주의: 데이터 손싀)
docker-compose down -v

# μž¬μ‹œμž‘
docker-compose up -d

2. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° 였λ₯˜

  • PostgreSQL μ»¨ν…Œμ΄λ„ˆ μƒνƒœ 확인
  • λ„€νŠΈμ›Œν¬ μ„€μ • 확인
  • ν™˜κ²½ λ³€μˆ˜ 확인

3. n8n μ›Œν¬ν”Œλ‘œμš° 였λ₯˜

  • 자격 증λͺ… 확인
  • API μ—”λ“œν¬μΈνŠΈ 확인
  • 둜그 뢄석

πŸ“ˆ ν–₯ν›„ κ³„νš

Phase 1 (ν˜„μž¬)

  • Backend API ꡬ좕
  • μ‚¬μš©μž 관리 μ‹œμŠ€ν…œ
  • 둜그 μ‹œμŠ€ν…œ
  • 고객 λŒ€μ‘ μ§€μΉ¨μ„œ

Phase 2

  • n8n μ›Œν¬ν”Œλ‘œμš° κ΅¬ν˜„
  • JIRA 연동
  • μžλ™ 응닡 μ‹œμŠ€ν…œ

Phase 3

  • AI 기반 문의 λΆ„λ₯˜
  • μ‹€μ‹œκ°„ λŒ€μ‹œλ³΄λ“œ
  • μ„±κ³Ό 뢄석 μ‹œμŠ€ν…œ

πŸ—„οΈ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ

Customer Users ν…Œμ΄λΈ”

  • κΈ°λ³Έ 정보: id, email, password, firstName, lastName
  • μΆ”κ°€ 정보: phoneNumber, birthDate, role, profileImageUrl
  • μ„€μ •: preferences (μ•Œλ¦Ό μ„€μ •, 관심 μΉ΄ν…Œκ³ λ¦¬, μ–Έμ–΄)
  • μ£Όμ†Œ: address (λ„λ‘œλͺ…, λ„μ‹œ, μ§€μ—­, 우편번호)
  • 둜그인 정보: loginCount, lastLoginAt, lastLoginIp
  • 메타데이터: metadata (μΆ”κ°€ 정보 μ €μž₯용)

Customer User Logs ν…Œμ΄λΈ”

  • 이벀트 정보: eventType, eventCategory, eventData
  • κΈ°κΈ° 정보: ipAddress, userAgent, deviceInfo
  • μœ„μΉ˜ 정보: location (κ΅­κ°€, λ„μ‹œ, μ’Œν‘œ)
  • μ„Έμ…˜ 정보: sessionId, referrer, currentUrl
  • μ„±λŠ₯ 정보: responseTime, httpMethod, statusCode
  • λΆ„λ₯˜: tags, level (debug, info, warning, error, critical)

InternalUsers ν…Œμ΄λΈ” (λ‚΄λΆ€ 직원)

  • κΈ°λ³Έ 정보: id, email, firstName, lastName, password, phoneNumber
  • 직무 정보: department, position, employeeId, role
  • κΆŒν•œ 및 레벨: accessLevel, permissions
  • CS μ „λ¬Έμ„±: specialties, maxConcurrentTickets
  • 근무 정보: workSchedule, isAvailable, currentWorkload
  • μ„±κ³Ό μ§€ν‘œ: totalTicketsHandled, avgResolutionTime, satisfactionRating
  • μƒνƒœ 정보: status, lastActiveAt
  • 메타데이터: metadata, createdAt, updatedAt

CustomerComplaints ν…Œμ΄λΈ” (고객 μ»΄ν”Œλ ˆμΈ)

  • ν‹°μΌ“ 정보: id, ticketNumber
  • 고객 정보: userId, customerName, customerEmail, customerPhone
  • 문의 λΆ„λ₯˜: category, subCategory, priority, urgency
  • λ‚΄μš©: subject, description, attachments
  • μƒνƒœ 관리: status, escalationLevel, isEscalated
  • 처리 정보: assignedTo, assignedTeam, firstResponseAt, resolvedAt, responseTime, resolutionTime
  • κ΄€λ ¨ 정보: relatedProductId, relatedOrderId, relatedSellerId, jiraTicketKey
  • 보상/쑰치: compensationType, compensationAmount, compensationNote
  • 고객 λ§Œμ‘±λ„: satisfactionScore, feedbackComment
  • 메타데이터: tags, metadata, createdAt, updatedAt

ComplaintResponses ν…Œμ΄λΈ” (μ»΄ν”Œλ ˆμΈ 응닡)

  • κΈ°λ³Έ 정보: id, complaintId, responderId, responderType
  • 응닡 λ‚΄μš©: responseType, content, attachments
  • ν”Œλž˜κ·Έ: isInternal, isAutoResponse
  • νƒ€μž„μŠ€νƒ¬ν”„: createdAt

ComplaintHistory ν…Œμ΄λΈ” (μ»΄ν”Œλ ˆμΈ 이λ ₯)

  • κΈ°λ³Έ 정보: id, complaintId, actorId
  • λ³€κ²½ λ‚΄μ—­: action, fromValue, toValue, note
  • 메타데이터: metadata, createdAt

ComplaintTemplates ν…Œμ΄λΈ” (응닡 ν…œν”Œλ¦Ώ)

  • κΈ°λ³Έ 정보: id, category, subCategory, templateName
  • ν…œν”Œλ¦Ώ λ‚΄μš©: templateContent, variables
  • μƒνƒœ 정보: isActive, usageCount
  • 생성 정보: createdBy, createdAt, updatedAt

ComplaintSlaRules ν…Œμ΄λΈ” (SLA κ·œμΉ™)

  • κΈ°λ³Έ 정보: id, category, priority
  • μ‹œκ°„ κ·œμΉ™: firstResponseTime, resolutionTime, escalationTime
  • μƒνƒœ 정보: isActive, createdAt, updatedAt

ComplaintKnowledgeBase ν…Œμ΄λΈ” (지식 베이슀)

  • κΈ°λ³Έ 정보: id, category, subCategory
  • μ½˜ν…μΈ : question, answer, keywords, relatedArticles
  • 톡계: viewCount, helpfulCount, notHelpfulCount
  • μƒνƒœ 정보: isPublished, createdBy, createdAt, updatedAt

πŸ‘₯ νŒ€ ꡬ성

  • λ°±μ—”λ“œ 개발: Backend API, Database
  • μ›Œν¬ν”Œλ‘œμš° 개발: n8n, MCP Server
  • CS νŒ€: 고객 λŒ€μ‘, μ§€μΉ¨μ„œ 관리
  • QA νŒ€: ν…ŒμŠ€νŠΈ, ν’ˆμ§ˆ 관리

Last Updated: 2025-06-30