전체 글
-
ADR: LangGraph Channel Separation이코에코(Eco²) Context/Plans 2026. 1. 18. 16:42
Status: ReadyCreated: 2026-01-18Author: Opus 4.5, mangowhoiscloudRelated (Internal): langgraph-native-streaming-adr, chat-worker-production-architecture-adr문제 상황StateGraph(dict) + Send API 병렬 실행 시 InvalidUpdateError 발생langgraph.errors.InvalidUpdateError: At key '__root__': Can receive only one value per step.Use an Annotated key with a reducer.Root Cause현재: graph = StateGraph(dict) (untyped)각 노드..
-
이코에코(Eco²) Agent Chat Worker E2E LangGraph 트러블슈팅이코에코(Eco²) Context/Troubleshooting 2026. 1. 18. 16:40
기간: 2026-01-17 ~ 2026-01-18관련 PR: #400 ~ #414목적: Chat Worker E2E 테스트 중 발생한 인프라 레벨 오류 해결개요Chat Worker E2E 테스트 진행 중 발생한 LangGraph 및 인프라 정합성 이슈들을 순차적으로 해결한 기록.테스트 플로우:POST /api/v1/chat (세션 생성) → POST /api/v1/chat/{session_id} (메시지 전송) → GET /api/v1/chat/{job_id}/events (SSE 스트림) → chat-worker 처리 → SSE 이벤트 수신Issue #1: SSE 라우팅 오류PR #400증상GET /api/v1/chat/{job_id}/e..
-
Code Review: Chat Queuing & Event Bus Consistency Report이코에코(Eco²)/Agent 2026. 1. 18. 03:39
Date: 2026-01-18Scope: chat-api (Producer) + chat-worker (Consumer) + RabbitMQ Topology + Event Router + SSE GatewayAuthor: Opus 4.5, mangowhoiscloudStatus: ReadyExecutive SummaryEco² Chat 서비스의 큐잉 전략과 이벤트 버스를 분석한 결과:실행 경로 (RabbitMQ): 코드베이스 설계는 일관성 있으나, Topology CR과 실제 클러스터 설정 불일치이벤트 경로 (Redis): A안 패턴 구현 완료 - 실행과 이벤트 경로가 명확히 분리됨Event Router: Redis Streams → Pub/Sub 변환, Lua 기반 idempotent 처리SSE Gat..
-
Info News 피드 페이지 구현, 배포 리포트 (FE)이코에코(Eco²) 2026. 1. 17. 11:57
작성일: 2026-01-17작성자: Claude Code + mangowhoiscloud1. 개요기존 정적 Info 페이지를 동적 뉴스 피드 UI로 리뉴얼했습니다. 백엔드 /api/v1/info/news API와 연동하여 환경/에너지/AI 관련 뉴스를 실시간으로 제공합니다.1.1 AS-IS vs TO-BE콘텐츠정적 분리배출 팁 (하드코딩)동적 뉴스 피드 (API 연동)데이터 소스없음네이버 뉴스 + NewsData.io페이지네이션없음무한 스크롤 (cursor 기반)카테고리없음전체/환경/에너지/AI2. 구현 내용2.1 프론트엔드 (React + TypeScript)파일 구조src/├── api/services/info/│ ├── info.type.ts # 타입 정의│ ├── info.serv..
-
Info News Service 구현, 배포 리포트 (BE)이코에코(Eco²) 2026. 1. 17. 10:09
작성일: 2026-01-17브랜치: feat/info-worker-topology (PR #386), fix/info-worker-beat (PR #391-#394)상태: Production Ready ✅요약목적환경/에너지 뉴스 자동 수집 및 캐시 기반 API 제공아키텍처CQRS (info_worker: Write, info API: Read) + Cache Aside핵심 패턴Beat Sidecar, Topology CR, Postgres FallbackPod 구성3 컨테이너 (worker + beat + istio-proxy)현재 상태129건 캐시, 5분 주기 수집 정상 동작1. 구현 목표뉴스 수집 워커를 Clean Architecture 기반으로 구현하고, Celery Beat를 통한 주기적 데이터 ..
-
이코에코(Eco²) Agent #24: Multi-Agent Image Generation이코에코(Eco²)/Agent 2026. 1. 17. 04:10
캐릭터 에셋 참조 기반 이미지 생성 파이프라인 관련 커밋:2bddb87e feat(chat_worker): add multi-model image generation with character reference89c79c57 feat(chat_worker): add character reference support to OpenAI image generator배경#17: Image Generation에서 이미지 생성용 서브에이전트를 구현했습니다. 그러나 사용자가 "페트리랑 같이 분리배출하는 그림 그려줘"처럼 Eco² 내부 캐릭터를 언급하면, 모델은 해당 캐릭터를 인식할 방안이 없었습니다. 문제 상황: 캐릭터 스타일 일관성 부재사용자: "페트리가 페트병 재활용하는 모습 그려줘"기존 동작: 모델이 임의의 캐..
-
ADR: Info Service 3-Tier Memory Architecture이코에코(Eco²) Context/Plans 2026. 1. 17. 02:39
상태: In-Progress일자: 2026-01-17관련 ADR: info-service-adr.md 리뷰 히스토리: Info Service ADR 초안 작성 - Redis-Only의 한계 분석 및 3-Tier 제안 1. OverviewInfo 서비스의 뉴스 수집 → 저장 → 캐싱 파이프라인(Redis-Only) 초안으로는 API Call Limits 내 무한 스크롤을 구현 및 운영하기엔 한계가 명확하다고 판단, Persist Layer(Postgres) 추가 및 Read/Write 저장소 분리를 거치며 메모리 계층을 고도화 했습니다.1.1 핵심 설계 원칙Write/Read 분리Worker가 수집/저장, API가 조회만 담당Eventual Consistency5분 주기 갱신으로 최신성과 안정성 균형G..
-
ADR: Info Service - News 피드 API Draft이코에코(Eco²) 2026. 1. 17. 02:37
환경/에너지/AI 관련 뉴스를 Perplexity 스타일로 제공하는 서비스작성일: 2026-01-16최종 수정: 2026-01-17상태: Approved (Infrastructure Provisioned)1. 개요1.1 목적Eco² 앱에서 환경, 에너지, AI 관련 뉴스/시사 정보를 무한스크롤 피드로 제공.1.2 우선순위뉴스 피드 APIP0무한스크롤 지원한국 뉴스P0네이버 검색 API해외 뉴스P1NewsData.io API카테고리 필터P1환경, 에너지, AI, 전체실시간 갱신P2캐시 TTL 기반1.3 비목표 (Non-Goals)뉴스 영구 저장 (PostgreSQL) - 시의성 있는 데이터, 캐시로 충분사용자별 개인화 - MVP 이후 고려뉴스 요약/분석 (LLM) - MVP 이후 고려푸시 알림 - MVP ..