Files
exAichatbot_agent/chatbotApi-chatbot2.0-agent/README.md
T
Macbook 4b86b2a660 Agent 2.0 exdev 서버 배포 스택
- server-dev start/stop/deploy 및 Gitea push 자동 배포
- local-dev 로컬 개발 환경

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 22:57:30 +09:00

3.8 KiB

chatbotApi 설명서

해당 문서는 md(Markdown) 방식으로 작성되었기 때문에 마크다운 뷰어 기능이있는 편집기(vscode 등)에서 보는것을 추천드립니다.(vscode 사용 시 문서 열고 Ctrl + Shift + V)

1. 개요

챗봇에서 데이터 조회를 위한 api 서비스(backend, was). intent 정책(SSOT intent-definitions.yml)·검증·정규화와 도메인 데이터 조회(Oracle Handler / WEB 위임)를 담당합니다.

1.1 시스템 구성 흐름 (WAS 역할)

flowchart TD
    RAG[exAiChatBot AgentService] --> TE[AgentToolController /api/v1/tools/*]

    POL[intent-definitions.yml + validator/normalizer]
    TE --> POL
    POL --> OWN{fetchOwner}
    OWN -->|WAS| ORA[IntentHandler → Oracle/TROAD]
    OWN -->|WEB| SKI[KakaoSkillToolClient → Skill /internal/tools/data-portal]
    ORA --> FMT[LlmDomainDataFormatter]
    SKI --> FMT
    FMT --> OUT([domainData + uiType])
진입 사용 모드 설명
GET /api/v1/tools/definitions Agent YAML → OpenAI function schema (RAG tool 목록)
POST /api/v1/tools/execute Agent domain tool 실행 (fetchOwner 분기: WAS Oracle / WEB Skill 역호출)

2. 프로그램 관련 정보

서비스 기동 서버 : 172.16.180.130(통합정산개발#1)

  • Java version : 8(JDK 1.8)
  • 서비스 기동 시점 : 상시
  • 연계DB : TROAD(교통정보, Oracle), chatbot(MongoDB)
  • 사용 계정 : song
  • 서비스 홈 디렉토리 : /home/song/bin/chatbotApi
  • 서비스 파일 : chatbotApi-0.0.1-SNAPSHOT.jar
  • 서비스 설정 파일(config) : application.yml, logback-spring.xml
  • 서비스 로그 파일(logs) : chatbotApi.log
  • 서비스 시작 명령어(서비스 홈 디렉토리에서 수행해야한다.)
./start.sh start   ## 백그라운드(실운영) 기동 명령어, 평시에는 해당 명령어를 사용한다.
./start.sh starta  ## 포그라운드 기동 명령어, 에러 탐색 및 모니터링시 활용

3. 기타 주의 사항

해당 서비스에는 교통정보 관련 API만 개발 되어있다. 향후에는 미납 조회 등 모든 서비스를 구현하면 좋을듯. (현재는 DMZ존에 위치한 챗봇 WEB서버(128.200.100.61)에 대부분의 조회 서비스가 운영되고있다. 별로 좋지않은 구조라 생각된다.)

[ASIS] WEB ↔ DB, [TOBE] WEB ↔ WAS ↔ DB)

※ API 일별 사용 건수 조회 Mongo쿼리

db.api_use_log.aggregate([
  {
    $group: {
      _id: {
        $substr: ["$request_time", 0, 10]  // 'yyyy-MM-dd' 부분만 추출
      },
      count: { $sum: 1 } // 각 날짜별로 문서 수를 계산
    }
  },
  {
    $sort: { "_id": 1 } // 날짜별로 정렬
  }
]);

※ API apikey 및 일별 사용 건수 조회 Mongo쿼리

db.api_use_log.aggregate([
  {
    $addFields: {
      // 'yyyy-MM-dd' 형식으로 날짜 부분만 추출하여 새 필드에 저장
      "dateOnly": {
        $substr: ["$request_time", 0, 10] // '2023-11-11' 부분만 추출
      }
    }
  },
  {
    $group: {
      // api_key와 추출된 날짜를 기준으로 그룹화
      _id: {
        api_key: "$api_key",
        date: "$dateOnly"
      },
      count: { $sum: 1 } // 각 api_key와 날짜별로 문서 수를 계산
    }
  },
  {
    $sort: {
      "_id.date": 1, // 날짜별로 정렬
      "_id.api_key": 1 // api_key별로 정렬
    }
  }
]);