본문으로 건너뛰기

Agent Treatment Flow Flowise 구현 전략

1. 개요

Agent Treatment Flow 도메인의 P1-P5 프로세스와 10가지 핵심 Agent 메시지를 dta-wide-agent-flow(Flowise fork)로 구현하는 단계별 전략을 정의합니다.

Flowise를 "플로우 오케스트레이션"의 핵심으로 활용하면서, 부족한 기능은 별도 지원 시스템으로 보완하는 하이브리드 접근 방식을 채택합니다.

📁 구현 가이드: 각 프로세스의 상세 구현 방법은 별도 문서를 참고하세요.

2. 아키텍처 구조

┌─────────────────────────────────────────────────┐
│ Agent Board │
│ (Presentation) │
└──────────────────────┬──────────────────────────┘
│ (Messages/Feedback)
┌──────────────────────┴──────────────────────────┐
│ dta-wide-agent-flow (Flowise) │
│ (Orchestration & LLM Integration) │
├─────────────────────────────────────────────────┤
│ - P1-P5 Process Flows │
│ - LLM Chain Management │
│ - Decision Logic │
│ - Content Generation │
│ - Custom MCP Node Integration │
└──────────────┬───────────────┬─────────────────┘
│ │
┌─────────┴──────┐ ┌──────┴─────────┐
│ dta-wide-mcp │ │ Agent Data │
│ (MCP Server) │ │ (Data Hub) │
│ │ │ │
│ Current: │ │ - LLM Transform │
│ - Time Tools │ │ - Event Process │
│ - Log Query │ │ - Pattern Analyze│
│ - Error Analysis│ │ - Task Queue │
│ │ │ - Correlation │
│ Extended: │ │ │
│ - Sleep Tools │ │ API Endpoints: │
│ - User Tools │ │ - Context API │
│ - Q'naire Tools│ │ - Insights API │
│ - Learning Tools│ │ - Tasks API │
│ - Agent Tools │ │ │
└────────┬───────┘ └───────┬─────────┘
│ │
┌────────┴─────────────────┴─────────┐
│ dta-wide-api │
│ (Domain APIs & Events) │
└────────────────────────────────────┘

2.1 핵심 컴포넌트 역할

  • dta-wide-agent-flow (Flowise): 워크플로우 오케스트레이션, LLM 통합, 시각적 플로우 관리
  • dta-wide-mcp: MCP Server로 LLM에게 필요한 도구와 데이터 접근 제공, Agent Data API와 연동하여 인사이트 생성
  • Agent Data: LLM 친화적 데이터 변환, 크로스 도메인 이벤트 처리, 패턴 분석, Task 큐잉, 복합 데이터 API 제공
  • dta-wide-api: 각 도메인(Sleep, Learning, Questionnaire 등)의 원본 데이터와 비즈니스 로직 제공

2.2 MCP 기반 아키텍처 장점

  1. LLM 네이티브 통합: LLM이 MCP 프로토콜로 직접 도구 호출
  2. 표준화된 인터페이스: Model Context Protocol 표준 준수
  3. 컨텍스트 유지: LLM 세션 내에서 일관된 컨텍스트 관리
  4. 도구 중심 설계: Sleep, User, Questionnaire 등을 도구로 추상화
  5. 실시간 데이터 접근: LLM이 필요한 시점에 즉시 데이터 조회
  6. API 추상화: MCP가 dta-wide-api 호출을 캡슐화하여 복잡성 감소
  7. 타입 안전성: TypeScript 기반 도구 스키마로 안전한 도구 호출

3. 10가지 메시지 구현 가능성 분석

3.1 dta-wide-agent-flow로 직접 구현 가능 (5개)

메시지 유형구현 방식필요 노드
치료적 Task 메시지P4 플로우에서 직접 생성LLM Chain, Decision Node, Template Node
나의 치료 현황MCP 데이터 집계 후 LLM 생성Custom MCP Node, LLM Chain, Aggregation Node
최종 설문 분석 결과설문 데이터 분석 플로우Analysis Chain, LLM Summary, Report Template
오늘의 치료 프로그램수면기록 트리거 플로우Event Trigger, Content Generator, Personalization
수면기록 작성하기조건 기반 메시지 생성Condition Check, Simple Template

3.2 Flowise + 외부 시스템 연동 필요 (5개)

메시지 유형필요한 외부 시스템구현 복잡도
슬립큐 소개State Management SystemMedium
권장 취침시간 처방Message Queue (자정 처리)High
기상 시각 안내Push Notification Service + SchedulerHigh
취침 준비 안내Dynamic Scheduler + Push ServiceHigh
서비스 만료 안내Queue System + State ManagerMedium

4. 단계별 구현 전략

Phase 1: 핵심 플로우 구현 및 MCP 도구 확장

목표: 핵심 기능 구현 및 필요한 MCP 도구 개발
기간: 4주

구현 대상

MCP 도구 확장
  1. Sleep Tools 개발

    // dta-wide-mcp에 추가될 Sleep 관련 도구들

    // 수면 기록 관련
    - getSleepRecords: 수면기록 조회
    - 입력: userId, startDayIndex, endDayIndex
    - 출력: 수면기록 배열 (취침/기상 시각, 수면의 질, TST)

    - analyzeSleepPattern: 수면 패턴 분석
    - 입력: userId, period (주간/월간)
    - 출력: 평균 수면 시간, 수면 효율, 패턴 분석 결과

    - getSleepStats: 수면 통계 조회
    - 입력: userId, startDayIndex, endDayIndex
    - 출력: 총 수면 시간, 수면 효율, SOL, WASO 등 통계

    // 수면 목표 달성 관련
    - getSleepGoals: 수면 목표(취침/기상 시각) 조회
    - 입력: userId, targetDate 또는 dayIndex
    - 출력: 목표 취침 시각(targetLOT), 목표 기상 시각(targetAET), rTIB

    - getSleepGoalAdherence: 수면 목표 달성 여부 조회
    - 입력: userId, targetDate 또는 dayIndex
    - 출력: 취침 목표 달성 여부(lotSuccess), 기상 목표 달성 여부(aetSuccess)
    - 목표 달성 기준: ±30분 이내

    - getWeeklyGoalAdherence: 주간 목표 달성 통계 조회
    - 입력: userId, startDayIndex
    - 출력:
    * 취침 목표 달성 횟수 (N/7)
    * 기상 목표 달성 횟수 (N/7)
    * 일차별 상세 달성 여부
  2. User Tools 개발

    // 사용자 프로필 및 설정 관련 도구들
    - getUserProfile: 사용자 프로필 조회
    - getUserPreferences: 사용자 선호도 조회
    - getTreatmentHistory: 치료 이력 조회
    - getCurrentDayIndex: 현재 치료 일차 조회
  3. Learning Tools 개발

    // Learning 도메인 데이터 조회 도구들

    // 학습 진도 관련
    - getLearningProgress: 학습 진행률 조회
    - 입력: userId, userCycleId
    - 출력: completedLessons, progressPercentage, lastActivityAt

    - getLessonStatus: 레슨별 상태 조회
    - 입력: userId, lessonId
    - 출력: status (LOCKED/UNLOCKED/IN_PROGRESS/COMPLETED), completedAt

    // 학습 이력 및 패턴 관련
    - getLearningHistory: 상세 학습 이력 조회
    - 입력: userId, startDate, endDate
    - 출력: 레슨별 시작/종료 시간, 소요 시간, 완료 여부

    - getLearningPattern: 학습 패턴 분석
    - 입력: userId
    - 출력: preferredTimeOfDay, averageSessionDuration, frequencyPerWeek

    - getLearningMetrics: 학습 메트릭 조회
    - 입력: userId, period
    - 출력: averageDuration, completionRate, totalSessions

    // 퀴즈 관련
    - getQuizResponses: 퀴즈 응답 이력 조회
    - 입력: userId, startDate, endDate
    - 출력: 퀴즈별 응답, 정답률, 응답 시간

    - getQuizAccuracy: 퀴즈 정답률 통계
    - 입력: userId
    - 출력: 전체 정답률, 주제별 정답률
  4. Agent Data Tools 개발

    // Agent Data 도메인 통합 도구들

    // 종합 컨텍스트 조회
    - getComprehensiveUserContext: 전체 치료 컨텍스트 조회
    - 입력: userId, dateRange, includeOptions
    - 출력: {
    sleepPatterns: LLM 친화적 수면 패턴,
    psychologicalState: 심리 상태 해석,
    learningEngagement: 학습 참여도,
    treatmentProgress: 치료 진행 상황,
    pendingTasks: 대기 중 Task,
    riskFactors: 위험 요인 분석
    }

    // 치료 인사이트 생성
    - getTreatmentInsights: 여러 도메인 데이터 종합 인사이트
    - 입력: userId, insightType ('weekly'|'daily'|'critical')
    - 출력: {
    patterns: 식별된 패턴들,
    correlations: 도메인 간 상관관계,
    recommendations: 개인화된 권장사항,
    llmContext: LLM 최적화 컨텍스트
    }

    // Task 관리
    - getPendingTherapeuticTasks: 대기 중 치료 Task 조회
    - 입력: userId, priority, dateRange
    - 출력: 우선순위별 Task 목록과 컨텍스트

    - optimizeTaskPriorities: Task 우선순위 동적 최적화
    - 입력: userId, currentContext
    - 출력: 최적화된 Task 순서와 근거

    // 패턴 예측
    - predictTreatmentOutcome: 치료 결과 예측
    - 입력: userId, predictionWindow
    - 출력: {
    prediction: 예상 결과,
    confidence: 신뢰도,
    factors: 주요 영향 요인,
    recommendations: 사전 대응 권장사항
    }

    // 실시간 위험 감지
    - detectRiskSignals: 실시간 위험 신호 감지
    - 입력: userId, sensitivityLevel
    - 출력: {
    riskLevel: 'none'|'low'|'medium'|'high'|'critical',
    triggers: 위험 트리거 요인들,
    immediateActions: 즉시 필요한 조치
    }

    // LLM 친화적 데이터 변환
    - transformToLLMFriendly: 도메인 데이터를 LLM용으로 변환
    - 입력: domainData, dataType
    - 출력: 자연어 해석과 컨텍스트가 포함된 데이터
  5. Questionnaire Tools 개발

    // Questionnaire 도메인 데이터 조회 도구들

    // 설문 응답 조회
    - getQuestionnaireResponses: 설문 응답 조회
    - 입력: userId, roundNumber, questionnaireType
    - 출력: 응답 데이터, 점수, 점수 구간

    - getQuestionnaireScores: 설문별 점수 조회
    - 입력: userId, questionnaireTypes[]
    - 출력: { ISI: 15, PHQ9: 8, GAD7: 7, PSS: 20, DBAS16: 5.2 }

    // 설문 결과 분석
    - analyzeISIScore: ISI (불면증 심각도) 분석
    - 입력: userId, roundNumber
    - 출력: score (0-28), severity (없음/가벼움/중간/심함), feedback

    - analyzePHQ9Score: PHQ-9 (우울) 분석
    - 입력: userId, roundNumber
    - 출력: score (0-27), level, riskLevel, recommendation

    - analyzeGAD7Score: GAD-7 (불안) 분석
    - 입력: userId, roundNumber
    - 출력: score (0-21), anxietyLevel, clinicalSignificance

    - analyzePSSScore: PSS (스트레스) 분석
    - 입력: userId, roundNumber
    - 출력: score (0-40), stressLevel (low/moderate/high)

    - analyzeDBAS16Score: DBAS-16 (수면 신념) 분석
    - 입력: userId, roundNumber
    - 출력: averageScore (0-10), dysfunctionalBeliefs[]

    // 설문 추이 분석
    - getQuestionnaireTrajectory: 회차별 점수 변화 추이
    - 입력: userId, questionnaireType
    - 출력: rounds[], scores[], trends (improving/stable/worsening)

    - getCumulativeResults: 누적 설문 결과
    - 입력: userId, upToRound
    - 출력: 모든 회차의 설문 결과 및 차트 데이터

    // 설문 회차 관리
    - getCurrentQuestionnaireRound: 현재 진행해야 할 설문 회차
    - 입력: userId, currentDayIndex
    - 출력: roundNumber, status, questionnaires[]

    - getSkippedQuestionnaires: 연기된 설문 조회
    - 입력: userId
    - 출력: skippedRounds[], validUntil
Flowise 플로우 구현
  1. P1: 초기 평가 플로우

    • Day 7 트리거 설정
    • 1주일 데이터 종합 분석 (Sleep, Learning, Questionnaire)
    • LLM 기반 맞춤형 질문 3개 생성
    • 상세 구현: P1 초기 평가 가이드
  2. P2: 가설 정교화 플로우

    • P1 응답 완료 트리거
    • 불면증 원인 가설 수립 (Trigger, Reinforcer, Contextual)
    • 가설 검증 및 우선순위 설정
    • 상세 구현: P2 가설 정교화 가이드
  3. P3: 치료 로드맵 플로우

  4. P4: 일일 코칭 플로우 (치료적 Task 메시지)

    • 매일 오전 8시 트리거
    • 4가지 Task 유형별 템플릿 및 LLM 프롬프트 설정
    • 난이도 조절 로직 구현
    • 상세 구현: P4 일일 코칭 가이드
  5. P5: 주간 재평가 플로우

    • 매주 일요일 트리거
    • 4가지 경로 결정 (SUCCESS/MISMATCH/BARRIER/CRITICAL)
    • 치료 계획 동적 조정
    • 상세 구현: P5 주간 재평가 가이드
  6. 나의 치료 현황 (통합 대시보드)

    • Agent Data Tools를 통한 종합적 데이터 집계
      • getComprehensiveUserContext: 전체 치료 컨텍스트 한 번에 조회
      • getTreatmentInsights: 도메인 간 상관관계 분석된 인사이트
    • 개별 도메인 MCP Tools로 상세 데이터 보강
      • getSleepStats: 수면 통계 (평균 수면 시간, 수면 효율 등)
      • getWeeklyGoalAdherence: 목표 달성률 (취침/기상 목표 준수 횟수)
      • analyzeSleepPattern: 수면 패턴 변화 추이
      • getLearningProgress: 학습 진도와 참여도
      • getQuestionnaireTrajectory: 설문 점수 변화 추이
    • LLM 기반 통합 인사이트 생성
      • 도메인 간 연관성 분석 (예: 학습 참여도↓ → 수면 효율↓)
      • 목표 달성률 기반 격려/조언
      • 수면 패턴 개선 포인트 제시
      • 심리 상태와 수면의 상관관계 설명
    • 시각화 데이터 준비
  7. 오늘의 치료 프로그램 안내

    • 수면기록 이벤트 트리거 설정
    • 개인화된 프로그램 추천 로직
    • Agent Board 연동
  8. 최종 설문 분석 결과

    • 설문 완료 이벤트 트리거
    • 회차별 점수 비교 분석
    • LLM 기반 종합 피드백 생성
  9. 수면기록 작성하기 리마인더

    • 조건 기반 트리거 (당일 미작성 + 슬립큐 완료)
    • 동적 메시지 생성
    • 우선순위 관리

📖 Flowise 사용 방법 이해하기

Flowise는 No-Code 비주얼 플로우 빌더입니다:

  • 🖱️ 드래그 앤 드롭: 노드를 캔버스에 끌어다 놓기
  • 🔗 연결: 노드 간 화살표로 데이터 흐름 연결
  • ⚙️ 설정: 각 노드의 속성을 GUI에서 설정
  • 🚫 코드 작성 불필요: 모든 로직은 노드 설정으로 구현

📌 P1-P5 프로세스 개요

  • P1 (초기 평가): 사용자의 불면증 상태를 파악하고 맞춤형 질문 생성
  • P2 (가설 정교화): 불면증 원인에 대한 가설을 세우고 검증
  • P3 (치료 로드맵): 개인화된 12주 치료 계획 수립
  • P4 (일일 코칭): 매일 제공되는 치료적 과제와 메시지
  • P5 (주간 재평가): 주간 진행 상황 평가 및 경로 조정

각 프로세스의 상세 구현 방법은 아래 개별 가이드를 참고하세요:

P1-P5 프로세스 요약

각 프로세스의 상세한 구현 방법은 별도의 가이드 문서를 참고하세요:

P1: 초기 평가 및 질문 생성

  • 트리거: Day 7, 오전 9시
  • 목적: 1주일 데이터 분석 후 맞춤형 질문 3개 생성
  • 핵심 도구: getComprehensiveUserContext, getLearningProgress, analyzeISIScore 등
  • 상세 가이드: P1 구현 가이드

P2: 가설 정교화

  • 트리거: P1 질문 답변 완료 후
  • 목적: 불면증 원인 가설 수립 및 검증
  • 핵심 도구: getLearningHistory, analyzePatterns, getQuestionnaireScores
  • 상세 가이드: P2 구현 가이드

P3: 치료 로드맵 설계

  • 트리거: P2 가설 검증 완료 후
  • 목적: 12주 개인화 치료 계획 수립
  • 핵심 도구: determineIntensity, selectModules, configureRoadmap
  • 상세 가이드: P3 구현 가이드

P4: 일일 코칭

  • 트리거: 매일 오전 8시
  • 목적: 4가지 유형 중 적절한 치료적 Task 생성
  • 핵심 도구: getDailyLesson, getCurrentContext, generateTask
  • 상세 가이드: P4 구현 가이드

P5: 주간 재평가

  • 트리거: 매주 일요일 오후 6시
  • 목적: 4가지 경로(SUCCESS/MISMATCH/BARRIER/CRITICAL) 중 선택
  • 핵심 도구: getWeeklyStats, analyzeTrajectory, determinePathway
  • 상세 가이드: P5 구현 가이드

이벤트 기반 통합 처리

도메인 이벤트 구독

Agent Treatment Flow는 다양한 도메인 이벤트를 구독하여 실시간으로 치료 전략을 조정합니다:

  • Learning 이벤트: LessonCompleted, QuizAnswered, PatternChanged
  • Questionnaire 이벤트: RoundCompleted, ScoreCalculated, CriticalScoreDetected
  • Sleep 이벤트: RecordCreated, PatternIdentified, EfficiencyDropped
  • Agent Data 이벤트: RiskDetected, PatternIdentified, TaskQueued, InsightGenerated

Agent Data의 중심 역할

Agent Data는 모든 크로스 도메인 이벤트를 수신하여:

  1. LLM 친화적 데이터로 변환
  2. 도메인 간 상관관계 분석
  3. 치료적 Task 생성 및 큐잉
  4. 2차 이벤트 발행 (위험 감지, 패턴 식별 등)

상세한 이벤트 처리 전략은 각 프로세스별 구현 가이드를 참고하세요.

Agent Data 도메인의 핵심 역할

Agent Data는 LLM을 위한 데이터 변환 허브이자 이벤트 기반 복합 데이터 처리 엔진입니다:

  1. LLM 친화적 데이터 변환: 도메인별 전문 용어를 자연어로 변환
  2. 이벤트 기반 복합 처리: 크로스 도메인 이벤트를 실시간 분석
  3. Task Queueing: 우선순위 기반 치료적 Task 관리
  4. API Endpoints: 실시간 조회 및 복합 쿼리 지원
MCP 도구의 진화된 역할

MCP는 단순 데이터 전달이 아닌 추가적인 인사이트를 제공합니다:

  • getComprehensiveUserContext: 전체 치료 컨텍스트 조회 및 인사이트 생성
  • predictTreatmentOutcome: 패턴 기반 치료 결과 예측
  • optimizeTaskPriorities: Task 우선순위 동적 최적화

상세한 구현은 Agent Data 도메인 문서를 참고하세요.

기술 스택

flowise_nodes:
- LLM Chain Node (GPT-4)
- Custom MCP Node (dta-wide-mcp 연동)
- Conditional Logic Node
- Template Engine Node
- Webhook Node (Agent Board 연동)

agent_data_infrastructure:
- Event Processing: NestJS EventEmitter2
- Storage: Firestore (LLM 친화적 문서)
- Queue: Redis Priority Queue
- Correlation Engine: Custom TypeScript
- API: RESTful + GraphQL (복합 쿼리용)

Phase 2: 기본 지원 시스템 구축

목표: 시간 기반 메시지 처리를 위한 인프라 구축
기간: 3주

구현 대상

  1. Message Queue System

    // Redis 기반 Queue 구현
    interface QueuedMessage {
    id: string;
    userId: string;
    messageType: string;
    scheduledFor: Date;
    payload: any;
    }
  2. 권장 취침시간 처방 안내

    • 자정 처방 → Queue 저장 플로우
    • 아침 배치 처리 시스템
    • Flowise 트리거 연동
  3. 서비스 사용 만료 안내

    • 만료 감지 스케줄러
    • Queue 기반 지연 전송
    • 우선순위 처리 로직

아키텍처 추가

Flowise ← → Redis Queue ← → Batch Processor

Agent Board

Phase 3: 고급 기능 구현

목표: 상태 관리 및 복잡한 비즈니스 로직 처리
기간: 4주

구현 대상

  1. State Manager 구현

    // 메시지 상태 추적 시스템
    interface MessageState {
    messageId: string;
    userId: string;
    status: 'pending' | 'displayed' | 'confirmed' | 'expired';
    displayCount: number;
    lastDisplayedAt?: Date;
    }
  2. 슬립큐 소개

    • 온보딩 상태 관리
    • 재노출 로직 구현
    • 다른 메시지와의 우선순위 조정
  3. 수면기록 작성하기

    • 복잡한 조건 체크 (슬립큐 완료 + 당일 미작성)
    • 동적 메시지 생성
    • 행동 추적 연동

Flowise Custom Node 개발

📋 Flowise 플로우 구성 예시 (P1 초기 평가)

실제 Flowise UI에서 P1 플로우를 구성하는 단계:

1단계: 노드 배치

Flowise 캔버스에 다음 노드들을 드래그:
- Start Node (트리거)
- Custom MCP Node × 3개 (데이터 조회용)
- Aggregator Node (데이터 통합)
- LLM Chain Node (GPT-4)
- Template Node (결과 포맷팅)
- Output Node (Agent Board 전송)

2단계: 노드 연결

Start → MCP Nodes → Aggregator → LLM → Template → Output
├─ Sleep Data
├─ Learning Data
└─ Questionnaire Data

3단계: 각 노드 설정

MCP Node 1 (Sleep Data):

  • Name: "Get Sleep Context"
  • Tool: getComprehensiveUserContext
  • Settings:
    User ID: {{trigger.userId}}
    Date Range: 7days
    Include: ✅ Sleep Patterns

MCP Node 2 (Learning Data):

  • Name: "Get Learning Progress"
  • Tool: getLearningProgress
  • Settings:
    User ID: {{trigger.userId}}

LLM Chain Node:

  • Model: GPT-4
  • Temperature: 0.7
  • System Prompt:
    당신은 불면증 치료 전문가입니다.
    다음 데이터를 분석하여:
    1. 사람 검토용 보고서
    2. 시스템 처리용 데이터
    3. 환자용 추가 질문
    을 생성하세요.
  • Input: {{aggregator.output}}

💻 Custom Node 개발이 필요한 경우

대부분의 경우 Flowise 기본 노드로 충분하지만, 특별한 로직이 필요한 경우 Custom Node를 개발할 수 있습니다:

  1. Custom MCP Node
// Custom MCP Node for Flowise
class MCPNode extends BaseNode {
constructor() {
super();
this.mcpClient = new MCPClient('dta-wide-mcp');
}

async execute(input) {
const { toolName, params } = input;

// MCP 도구 호출
const result = await this.mcpClient.callTool(toolName, params);

// LLM 컨텍스트에 결과 추가
return {
output: result,
metadata: {
tool: toolName,
timestamp: new Date(),
}
};
}
}
  1. State Check Node with MCP
// State Check Node using MCP
class StateCheckNode extends BaseNode {
async execute(input) {
const mcpNode = new MCPNode();

// MCP를 통해 사용자 상태 조회
const userState = await mcpNode.execute({
toolName: 'getUserState',
params: { userId: input.userId }
});

return this.evaluateConditions(userState.output, input.conditions);
}
}

Phase 4: 외부 시스템 연동

목표: 푸시 알림 및 실시간 알림 기능 완성
기간: 3주

구현 대상

  1. Push Notification Service 연동

    • FCM/APNS 통합
    • 사용자별 시간대 처리
    • 알림 설정 관리
  2. 기상 시각 안내

    • 동적 스케줄러 구현
    • 푸시 알림 + Agent Board 동시 처리
    • 실패 시 재시도 로직
  3. 취침 준비 안내

    • 취침 1시간 전 계산 로직
    • 개인화된 준비 메시지
    • 다중 채널 전송
  4. Support Systems 구축

    • Message Queue: Redis 기반 우선순위 큐
    • State Manager: 메시지 상태 추적 시스템
    • Scheduler Service: Cron 기반 정기 작업 관리
    • Notification Hub: 푸시/인앱/이메일 통합 알림

최종 아키텍처

┌─────────────────────────────────────────┐
│ Flowise Flows │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ P1 │ │ P2 │ │ P3 │ │ P4 │ ... │
│ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ │
│ └───────┴───────┴───────┘ │
└─────────────────┬───────────────────────┘

┌────────────┴────────────┐
│ Integration Layer │
├─────────┬───────────────┤
│ Queue │ State Manager │
│ System │ (Redis) │
└────┬────┴───────┬───────┘
│ │
┌────┴────┐ ┌────┴─────┐
│Scheduler│ │Push │
│Service │ │Service │
└─────────┘ └──────────┘

5. 구현 시 주요 고려사항

5.1 Flowise 플로우 설계 원칙

  1. 모듈화: 각 P1-P5를 독립적인 플로우로 구성
  2. 재사용성: 공통 로직은 서브플로우로 분리
  3. 테스트 가능성: 각 노드별 단위 테스트 지원
  4. 버전 관리: 플로우 변경 이력 추적
  5. MCP 통합: 데이터 액세스는 MCP Server의 도구를 통해 수행

5.2 성능 최적화

optimization_strategies:
- LLM 호출 최소화 (캐싱, 템플릿 활용)
- 병렬 처리 가능한 작업 식별
- 배치 처리로 대량 메시지 효율화
- Redis 캐싱으로 반복 계산 방지

5.3 에러 처리 및 복구

// Flowise 에러 처리 패턴
const errorHandlingFlow = {
llmFailure: 'fallback_to_template',
dbTimeout: 'retry_with_backoff',
externalApiError: 'queue_for_later',
criticalError: 'alert_and_manual_intervention'
};

6. 예상 일정 및 리소스

6.1 전체 일정 (14주)

  • Phase 1: 4주 (핵심 기능)
  • Phase 2: 3주 (기본 인프라)
  • Phase 3: 4주 (고급 기능)
  • Phase 4: 3주 (외부 연동)

6.2 필요 리소스

  • 개발팀: Flowise 전문가 1명, Backend 개발자 2명
  • 인프라: Redis 클러스터, Message Queue, Scheduler Service
  • 외부 서비스: OpenAI API, FCM/APNS

7. 리스크 및 대응 방안

리스크영향도대응 방안
LLM API 응답 지연High비동기 처리 + 템플릿 폴백
Flowise 확장성 한계Medium핵심 로직을 NestJS로 분리
복잡한 상태 관리HighRedis 기반 중앙화된 State Manager
실시간 요구사항 충돌Medium우선순위 큐 + 지능적 스케줄링

8. 성공 지표

8.1 기술적 지표

  • 메시지 생성 성공률 > 99.5%
  • 평균 응답 시간 < 5초
  • 시스템 가용성 > 99.9%

8.2 비즈니스 지표

  • 사용자 메시지 확인율 > 80%
  • Task 완료율 > 60%
  • 치료 프로세스 완주율 > 70%

9. 결론

Flowise 기반 구현은 다음과 같은 장점을 제공합니다:

  1. 빠른 프로토타이핑: 시각적 플로우로 빠른 iteration
  2. LLM 통합 용이성: 다양한 LLM 모델 쉽게 교체
  3. 비즈니스 로직 가시성: 비개발자도 플로우 이해 가능
  4. 점진적 확장: 단계별로 기능 추가 가능

핵심은 Flowise를 "오케스트레이션 레이어"로 활용하면서, 복잡한 비즈니스 로직과 인프라 요구사항은 전문 시스템으로 보완하는 것입니다. 이를 통해 10가지 Agent 메시지 모두를 효과적으로 구현할 수 있습니다.

10. 변경 이력

버전날짜작성자변경 내용
0.1.02025-06-22bok@weltcorp.com최초 작성 - Flowise 기반 구현 전략 수립
1.0.02025-01-04bok@weltcorp.comTreatmentProcess로 용어 통일, P3 가이드 반영