본문으로 건너뛰기

Agent Board 도메인 요구사항

1. 기능 요구사항

1.1 Message Persistence & Delivery

Agent Board는 Agent Treatment Flow로부터 완성된 Board 데이터를 받아 영구 저장하고, 적절한 클라이언트에게 실시간으로 전달하는 Message Delivery & Tracking Layer 역할을 수행한다. 또한 MAO에서 오는 비규제(dha 제품) 알림/CTA 메시지도 동일한 BoardMessage 계약으로 수신하며, 제품 구분에 따라 저장/전달 정책을 분리한다.

백엔드 요구사항

  • AGB-FR-BE-001: Board 영구 저장 시스템을 구현해야 한다.
    • Agent Treatment Flow로부터 완성된 Board 데이터(제목, 내용, 액션 등)를 받아 PostgreSQL에 저장
    • Board 상태 관리 (PENDING → DELIVERED → VIEWED → INTERACTED → ARCHIVED)
    • TTL 기반 자동 만료 처리
    • 30일 경과 Board 자동 아카이빙
    • 템플릿 렌더링이나 메시지 생성은 수행하지 않음
  • AGB-FR-BE-002: 실시간 메시지 전달 시스템을 구현해야 한다.
    • SSE(Server-Sent Events)를 통한 메시지 스트리밍
    • 사용자별 미전달/미확인 메시지 조회
    • 우선순위(priority) 기반 메시지 정렬
    • 메시지 큐잉 (연결 끊김 시 사용자당 최대 1000개)
    • product/sourceDomain 기준으로 허용된 메시지만 전달 (예: product='dta'는 ATF, product='dha'는 MAO)
  • AGB-FR-BE-003: 연결 상태 관리 시스템을 구현해야 한다.
    • 하트비트 메커니즘 (30초 간격)
    • Redis 기반 연결 상태 저장
    • 자동 타임아웃 처리 (60초)
    • 플랫폼별 단일 연결 보장
  • AGB-FR-BE-003a: Board 액션에는 MAO/Agent Treatment Flow가 전달한 actionTypechatContext를 저장해야 하며, actionType='chat_launch'일 경우 Chat 도메인 호출에 필요한 페이로드를 준비해야 한다.
    • 규제 제품(DTA) 액션과 비규제 제품(DHA) 액션을 product/sourceDomain으로 구분해 저장·처리한다.

프론트엔드 요구사항

  • AGB-FR-FE-001: Board 카드는 actionType에 따라 버튼을 렌더링하고, chat_launch일 경우 Chat 도메인(Agent Chat UI)을 호출해 CTA 컨텍스트를 전달해야 한다.

1.2 Interaction Tracking & Analytics

사용자와 메시지 간의 모든 상호작용을 저장하고, Agent Treatment Flow의 분석 요구에 응답해야 한다.

백엔드 요구사항

  • AGB-FR-BE-004: 상호작용 영구 저장 시스템을 구현해야 한다.
    • PostgreSQL에 모든 상호작용 저장
    • 타입별 상호작용 추적 (delivered, viewed, clicked, dismissed, action)
    • 정확한 타임스탬프 기록
    • 세션 및 플랫폼 정보 저장
  • AGB-FR-BE-005: 상호작용 집계 시스템을 구현해야 한다.
    • 일별 사용자별 상호작용 통계 자동 생성
    • 메시지 타입별 반응률 계산
    • 평균 응답 시간 분석 (전달→조회, 조회→클릭)
    • 원본 데이터 90일, 집계 데이터 영구 보관
  • AGB-FR-BE-006: 실시간 분석 API를 제공해야 한다.
    • 사용자 참여도 메트릭 조회
    • 기간별 상호작용 이력 제공
    • 과제 수행 완료율 계산
    • 조회 응답 시간 < 100ms 보장

프론트엔드 요구사항

TBD

1.3 Real-time Communication

백엔드와 실시간으로 통신하여 메시지를 즉시 수신하고 표시해야 한다.

백엔드 요구사항

  • AGB-FR-BE-007: SSE Server를 구현해야 한다.
    • 사용자별 단일 연결 관리
    • 비동기 메시지 스트리밍
    • 연결 복구 메커니즘
  • AGB-FR-BE-008: 메시지 동기화를 구현해야 한다.
    • 놓친 메시지 재전송
    • 중복 메시지 방지
    • 순서 보장

프론트엔드 요구사항

TBD

1.4 Data Management

효율적인 데이터 저장 및 조회를 위한 최적화가 필요하다.

백엔드 요구사항

  • AGB-FR-BE-009: 데이터베이스 최적화를 구현해야 한다.
    • 효율적인 인덱스 전략 (userId + status, userId + createdAt 등)
    • 테이블 파티셔닝 (월별)
    • 읽기 전용 복제본 활용
  • AGB-FR-BE-010: 캐싱 전략을 구현해야 한다.
    • Redis 기반 캐시 레이어
    • 활성 메시지 5분 캐싱
    • 집계 데이터 1시간 캐싱
    • 캐시 무효화 정책
  • AGB-FR-BE-011: 데이터 정합성을 보장해야 한다.
    • 트랜잭션 기반 데이터 변경
    • 중복 데이터 방지
    • 정기적인 정합성 검증

1.5 Platform Optimization

다양한 플랫폼에서 최적의 성능을 제공해야 한다.

프론트엔드 요구사항

  • TBD

1.6 Error Handling & Recovery

시스템 장애 시에도 데이터 유실 없이 서비스를 제공해야 한다.

백엔드 요구사항

  • AGB-FR-BE-012: 장애 복구 메커니즘을 구현해야 한다.
    • DB 저장 실패 시 재시도
    • Dead Letter Queue 구현
    • 자동 백업 및 복구
  • AGB-FR-BE-013: 모니터링 시스템을 구현해야 한다.
    • 실시간 메트릭 수집
    • 알림 시스템 연동
    • 성능 이상 감지

1.7 운영 품질 속성(Platform 연계)

1.8 규제 준수(감사 추적)

프론트엔드 요구사항

  • TBD

2. 비기능 요구사항

2.1 성능

  • AGB-NFR-001: DB 쿼리 응답시간
    • 조회: < 100ms
    • 저장: < 50ms
    • 집계: < 500ms
  • AGB-NFR-002: 렌더링 성능
    • 렌더링 지연시간: < 100ms
    • 애니메이션: 60 FPS 유지
    • 상호작용 응답시간: < 16ms
  • AGB-NFR-003: 시스템 처리량
    • 초당 메시지 처리: > 1,000개
    • 초당 상호작용 처리: > 10,000개
  • AGB-NFR-004: 메모리 사용량
    • 백엔드: 인스턴스당 < 4GB
    • 프론트엔드: < 200MB

2.2 가용성

  • (공통 정책 참조) 가용성/복구/백업/무중단 배포는 Platform 도메인 기준을 따른다: PLT-NFR-004, PLT-NFR-005, PLT-NFR-006, PLT-NFR-007
  • AGB-NFR-005: 서비스 가용성 99.9% 이상
  • AGB-NFR-006: 데이터 내구성 99.999% 이상
  • AGB-NFR-007: SSE 연결 안정성 99.9% 이상
  • AGB-NFR-008: 재연결 시간 < 5초

2.3 확장성

  • AGB-NFR-009: 동시 SSE 연결 10,000개 이상 지원
  • AGB-NFR-010: 일일 메시지 처리량 > 1억 건
  • AGB-NFR-011: 수평적 확장 가능
  • AGB-NFR-012: 데이터베이스 샤딩 지원

2.4 보안

  • AGB-NFR-013: 데이터 암호화
    • 전송 중: TLS 1.3
    • 저장 시: AES-256
  • AGB-NFR-014: 접근 제어
    • JWT 기반 인증
    • 사용자별 데이터 격리
    • Rate Limiting 적용
  • AGB-NFR-015: 개인정보 보호
    • GDPR 준수
    • 데이터 익명화
    • 삭제 요청 처리

2.5 사용성

  • AGB-NFR-016: 부드러운 애니메이션 전환
  • AGB-NFR-017: 즉각적인 터치 반응
  • AGB-NFR-018: 직관적인 제스처 지원
  • AGB-NFR-019: 시각적 피드백 제공

3. 제약사항

3.1 기술적 제약

  • AGB-CR-001: Backend: NestJS 프레임워크 사용
  • AGB-CR-002: Frontend: React Native 프레임워크 사용
  • AGB-CR-003: Database: PostgreSQL (private 스키마) 사용
  • AGB-CR-004: Cache: Redis 사용
  • AGB-CR-005: 최소 지원 OS: iOS 13+, Android 8+

3.2 아키텍처 제약

  • AGB-CR-006: Agent Board는 Auth 도메인에만 의존
  • AGB-CR-007: 메시지 내용의 비즈니스 의미를 해석하지 않음
  • AGB-CR-008: 모든 데이터는 영구 저장되어야 함
  • AGB-CR-009: 개인정보는 private 스키마에 저장

3.3 데이터 제약

  • AGB-CR-010: 메시지 보관 기간: 최소 30일
  • AGB-CR-011: 상호작용 원본: 90일 보관
  • AGB-CR-012: 집계 데이터: 영구 보관
  • AGB-CR-013: 사용자당 활성 메시지: 최대 1000개

4. 가정사항

4.1 시스템 환경

  • AGB-AR-001: PostgreSQL은 고가용성 구성으로 운영된다
  • AGB-AR-002: Redis는 클러스터 모드로 운영된다
  • AGB-AR-003: 네트워크는 안정적이며 대역폭이 충분하다
  • AGB-AR-004: 디바이스는 충분한 메모리를 가지고 있다 (>2GB RAM)

4.2 데이터 특성

  • AGB-AR-005: 메시지 크기는 평균 1KB 이하다
  • AGB-AR-006: 사용자당 일일 메시지는 100개 이하다
  • AGB-AR-007: 상호작용 이벤트는 메시지당 평균 5개다
  • AGB-AR-008: 동시 접속 사용자는 전체의 10% 이하다

4.3 메시지 형식

  • AGB-AR-009: 모든 메시지는 BoardMessage 인터페이스를 준수한다
  • AGB-AR-010: displayRules는 항상 유효한 값을 포함한다
  • AGB-AR-011: 레이아웃 타입은 사전 정의된 값 중 하나다

5. 의존성

5.1 내부 의존성

  • AGB-DR-001: Auth 도메인: JWT 토큰 검증을 위해 사용

5.2 외부 의존성

  • AGB-DR-002: PostgreSQL: 메시지 및 상호작용 영구 저장
  • AGB-DR-003: Redis: 연결 상태 및 캐시 관리
  • AGB-DR-004: Mobile 플랫폼: iOS/Android 네이티브 렌더링
  • AGB-DR-005: Network Layer: HTTP/SSE 통신

6. GDPR 컴플라이언스 (개인정보 보호)

6.1 에이전트 메시지 개인정보 보호

백엔드 요구사항

  • AGB-FR-BE-045: 시스템은 에이전트 메시지 내 개인정보를 보호해야 한다.
    • 메시지 내 개인 식별 정보 마스킹
    • 민감 건강 정보 암호화
    • 메시지 템플릿 개인정보 분리
    • 동적 메시지 생성 시 개인정보 최소화
  • AGB-FR-BE-046: 시스템은 메시지 보관 기간을 관리해야 한다.
    • 시스템 메시지: 서비스 기간 중 유지
    • 개인화 메시지: 치료 종료 후 1년
    • 삭제된 메시지 복구 불가 처리
    • 메시지 이력 익명화

6.2 사용자 상호작용 데이터

백엔드 요구사항

  • AGB-FR-BE-047: 시스템은 사용자 상호작용 데이터를 보호해야 한다.
    • 메시지 읽음 상태 암호화
    • 사용자 피드백 익명화 옵션
    • 상호작용 패턴 분석 시 개인정보 제거
    • 행동 데이터 집계 처리

7. ISO27001 정보보호 관리

7.1 메시지 보안

백엔드 요구사항

  • AGB-FR-BE-048: 시스템은 메시지 무결성을 보장해야 한다.
    • 메시지 변조 방지
    • 메시지 버전 관리
    • 전송 중 암호화
    • 메시지 서명 검증
  • AGB-FR-BE-049: 시스템은 메시지 접근을 통제해야 한다.
    • 역할 기반 메시지 접근
    • 메시지 카테고리별 권한
    • 임시 메시지 자동 삭제
    • 중요 메시지 보호

7.2 실시간 통신 보안

백엔드 요구사항

  • AGB-FR-BE-050: 시스템은 실시간 통신 채널을 보호해야 한다.
    • SSE 연결 암호화
    • 연결 상태 모니터링
    • 비정상 연결 차단
    • 세션 하이재킹 방지

변경 이력

버전날짜작성자변경 내용
0.1.02025-06-27bok@weltcorp.com초기 작성
0.2.02025-08-07bok@weltcorp.com요구사항 ID 체계 적용 - 백엔드/프론트엔드 구분 ID 부여 (AGB-FR-BE/FE, AGB-NFR, AGB-CR, AGB-AR, AGB-DR, AGB-IR)
0.3.02025-08-12bok@weltcorp.comGDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 메시지 개인정보 보호, 메시지 보안