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가 전달한
actionType과chatContext를 저장해야 하며,actionType='chat_launch'일 경우 Chat 도메인 호출에 필요한 페이로드를 준비해야 한다.- 규제 제품(DTA) 액션과 비규제 제품(DHA) 액션을
product/sourceDomain으로 구분해 저장·처리한다.
- 규제 제품(DTA) 액션과 비규제 제품(DHA) 액션을
프론트엔드 요구사항
- 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 연계)
- (공통 정책 참조) 가용성/복구/백업/무중단 배포는
Platform기준을 따른다: PLT-NFR-004, PLT-NFR-005, PLT-NFR-006, PLT-NFR-007 - (공통 정책 참조) 관찰 가능성 표준(메트릭/로깅/트레이싱)은
Platform기준을 따른다: PLT-NFR-008, PLT-NFR-009, PLT-NFR-010
1.8 규제 준수(감사 추적)
- (교차참조) 도메인 데이터 및 설정의 중요 변경은 Audit 기준을 준수한다: AUD-NFR-023, AUD-NFR-024, AUD-NFR-026
프론트엔드 요구사항
- 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.0 | 2025-06-27 | bok@weltcorp.com | 초기 작성 |
| 0.2.0 | 2025-08-07 | bok@weltcorp.com | 요구사항 ID 체계 적용 - 백엔드/프론트엔드 구분 ID 부여 (AGB-FR-BE/FE, AGB-NFR, AGB-CR, AGB-AR, AGB-DR, AGB-IR) |
| 0.3.0 | 2025-08-12 | bok@weltcorp.com | GDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 메시지 개인정보 보호, 메시지 보안 |