Add new idea documents: FastAPI concepts, automation agents, Slack emoji reactions
This commit is contained in:
parent
cdc61f01c4
commit
9ea40568a0
@ -1,104 +1,112 @@
|
||||
# 네이버웍스 캘린더 API 연동 가이드
|
||||
# 네이버웍스 API 연동 가이드
|
||||
|
||||
## 핵심 요약
|
||||
|
||||
> 네이버웍스 캘린더는 별도의 '에이전트' 개념보다는 **API(Application Programming Interface)**를 통해 외부 애플리케이션이나 봇이 캘린더 데이터를 읽고 수정하도록 허용합니다. 즉, 에이전트 역할을 하는 프로그램이 이 API를 호출하여 기능을 수행하게 됩니다.
|
||||
|
||||
**[현재 프로젝트 상태]** 네이버웍스 캘린더 API 연동 미구현 (OAuth2 토큰 관리 로직 없음, skill-calendar 서비스 미존재, auth-server에 Works API 인증 미탑재).
|
||||
**[현재 프로젝트 상태]** 네이버웍스 API 연동 미구현 (OAuth2 토큰 관리 로직 없음, 관련 skill 서비스 미존재, auth-server에 Works API 인증 미탑재).
|
||||
|
||||
---
|
||||
|
||||
## 1. 네이버웍스 캘린더 API 개요
|
||||
## 1. 로빙(RO-BEING) 앱 설정 현황
|
||||
|
||||
네이버웍스(NAVER WORKS)는 개발자가 자사의 다양한 기능과 리소스에 접근할 수 있도록 **NAVER WORKS API**를 제공합니다. 캘린더 기능 역시 이 API에 포함되어 있으며, 다음 기능을 수행할 수 있습니다.
|
||||
- **앱 이름**: Ro-being
|
||||
- **소속**: company-x.partners (155032)
|
||||
|
||||
* **일정 조회 (View):** 특정 사용자의 기본 캘린더나 공유 캘린더의 일정을 조회합니다.
|
||||
* **일정 생성 (Create):** 새로운 일정을 생성하고 참석자, 시간, 장소 등을 설정합니다.
|
||||
* **일정 수정 (Modify):** 기존 일정의 정보를 업데이트합니다.
|
||||
* **일정 삭제 (Delete):** 일정을 삭제합니다.
|
||||
* **캘린더 관리 (Manage):** 캘린더 자체를 생성, 수정, 삭제하고 공유 속성을 관리합니다.
|
||||
### 1.1. 인증 정보
|
||||
|
||||
## 2. 에이전트(봇) 구현을 위한 필수 절차
|
||||
- **Client ID**: `kFJu_ajl6tb8pBiPEEnS`
|
||||
- **Client Secret**: `xIz5G0v4wn`
|
||||
- > **⚠️ 경고: 이 값은 외부에 노출되어서는 안 되며, Git 등 버전 관리 시스템에 포함하지 마십시오. Vault 또는 암호화된 환경 변수를 통해 안전하게 관리해야 합니다.**
|
||||
- **Service Account**: `86rye.serviceaccount@company-x.partners`
|
||||
|
||||
에이전트(봇)가 캘린더 API를 사용하려면 다음 절차를 따라야 합니다.
|
||||
### 1.2. 토큰 설정
|
||||
|
||||
1. **개발자 콘솔에서 앱 생성:** [네이버웍스 개발자 콘솔](https://dev.worksmobile.com)에 관리자 계정으로 로그인하여 캘린더 API를 사용할 앱을 생성해야 합니다.
|
||||
2. **Access Token 발급:** API 호출을 위해서는 인증(Authentication) 절차를 거쳐 `Access Token`을 발급받아야 합니다. 이 토큰은 API 요청에 대한 권한을 부여하는 역할을 합니다.
|
||||
3. **API 스코프(Scope) 설정:** 앱이 캘린더에 접근할 수 있도록 API 권한 관리에서 `calendar` 또는 `calendar.read`와 같은 스코프를 설정해야 합니다.
|
||||
* `calendar.read`: 읽기 전용 권한
|
||||
* `calendar`: 읽기, 쓰기, 수정, 삭제 등 모든 권한
|
||||
4. **API 호출:** 발급받은 `Access Token`을 사용하여 HTTP 요청을 보냅니다. API 호출 방식은 일반적으로 RESTful API 형태로 제공되며, `GET`, `POST`, `PUT`, `DELETE` 등의 HTTP 메서드를 사용합니다.
|
||||
- **Access Token 유효기간**: 1시간
|
||||
- **Refresh Token Rotation**: On (보안 강화)
|
||||
|
||||
## 3. API 사용 예시 (영문 문서 기반)
|
||||
### 1.3. OAuth 설정
|
||||
|
||||
네이버웍스 개발자 문서는 영어로도 제공되며, 다음은 주요 API 호출 예시입니다.
|
||||
- **Redirect URL**: `https://auth.robeing.com/oauth/naverworks/callback`
|
||||
- **활성화된 Scopes**:
|
||||
- `openid`, `profile`, `email` (OIDC 사용자 식별용)
|
||||
- `calendar` (캘린더 읽기/쓰기)
|
||||
- `contact` (주소록 읽기/쓰기)
|
||||
- `file` (드라이브 파일 접근)
|
||||
- `mail` (메일 읽기/보내기)
|
||||
- `task` (업무 관리)
|
||||
- `user` (조직 내 사용자 정보 조회)
|
||||
|
||||
### A. 일정 목록 조회 (GET)
|
||||
---
|
||||
|
||||
특정 사용자의 기본 캘린더 일정을 조회하는 API입니다.
|
||||
## 2. 인증 방식
|
||||
|
||||
* **HTTP Request:** `GET /users/{userId}/calendar/events`
|
||||
* **Description:** Retrieves a list of events from the default calendar of the target user.
|
||||
* **Authorization:** `Bearer {token}` (요청 헤더에 Access Token 포함)
|
||||
네이버웍스 API를 사용하기 위해서는 먼저 **Access Token**을 발급받아야 합니다. 현재 앱 설정에 따라 아래 두 가지 방식 모두 사용 가능합니다.
|
||||
|
||||
### B. 일정 생성 (POST)
|
||||
1. **구성원 계정으로 인증 (OAuth 2.0 / OIDC)**: 사용자가 직접 로그인하여 자신의 데이터에 대한 접근을 허용하는 방식입니다. (예: "내 캘린더 일정 조회")
|
||||
2. **서비스 계정으로 인증 (JWT)**: 사용자 로그인 없이, 시스템(로빙)이 조직 전체의 데이터에 접근할 때 사용합니다. (예: 주기적인 데이터 동기화)
|
||||
|
||||
사용자의 기본 캘린더에 새로운 일정을 생성하는 API입니다.
|
||||
## 3. API 사용 예시 및 주요 엔드포인트
|
||||
|
||||
* **HTTP Request:** `POST /users/{userId}/calendar/events`
|
||||
* **Description:** Creates a new event in the target user's default calendar.
|
||||
* **Request Body (JSON):** 일정의 제목, 시작/종료 시간, 참석자 등 상세 정보를 JSON 형식으로 담아 보냅니다.
|
||||
### 3.1. 캘린더 (Calendar API)
|
||||
|
||||
**Request URL:**
|
||||
`POST https://www.worksapis.com/v1.0/users/{userId}/calendar/events`
|
||||
- **스코프**: `calendar`
|
||||
- **주요 엔드포인트**:
|
||||
- `GET /v1.0/users/{userId}/calendar/events`: 특정 사용자의 일정 목록 조회
|
||||
- `POST /v1.0/users/{userId}/calendar/events`: 새 일정 생성
|
||||
- `PUT /v1.0/users/{userId}/calendar/events/{eventId}`: 기존 일정 수정
|
||||
|
||||
**JSON Example:**
|
||||
```json
|
||||
{
|
||||
"subject": "Team Meeting",
|
||||
"start": {
|
||||
"date": "2025-09-12",
|
||||
"time": "10:00:00"
|
||||
},
|
||||
"end": {
|
||||
"date": "2025-09-12",
|
||||
"time": "11:00:00"
|
||||
},
|
||||
"attendees": [
|
||||
- **요청 예시: 새 일정 생성**
|
||||
`POST https://www.worksapis.com/v1.0/users/{userId}/calendar/events`
|
||||
```json
|
||||
{
|
||||
"email": "member1@example.com",
|
||||
"isOptional": false
|
||||
"subject": "Team Meeting",
|
||||
"start": {
|
||||
"date": "2025-09-18",
|
||||
"time": "10:00:00"
|
||||
},
|
||||
"end": {
|
||||
"date": "2025-09-18",
|
||||
"time": "11:00:00"
|
||||
},
|
||||
"attendees": [
|
||||
{
|
||||
"email": "member1@example.com",
|
||||
"isOptional": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
### C. 일정 수정 (PUT)
|
||||
### 3.2. 주소록 (Contact API)
|
||||
|
||||
기존 일정의 내용을 수정하는 API입니다.
|
||||
- **스코프**: `contact`, `user`
|
||||
- **주요 엔드포인트**:
|
||||
- `GET /v1.0/contacts`: 고객/거래처 연락처 목록 조회
|
||||
- `POST /v1.0/contacts`: 새 연락처 생성
|
||||
- `GET /v1.0/users/{userId}`: 조직 내 사용자 정보 조회
|
||||
|
||||
* **HTTP Request:** `PUT /users/{userId}/calendar/events/{eventId}`
|
||||
* **Description:** Updates an event in the target user's default calendar.
|
||||
* **Authorization:** `Bearer {token}`
|
||||
* **Request Body (JSON):** 수정할 내용이 포함된 JSON 데이터를 보냅니다.
|
||||
### 3.3. 메일 (Mail API)
|
||||
|
||||
## 4. 에이전트 구현 시 고려사항
|
||||
- **스코프**: `mail`
|
||||
- **주요 엔드포인트**:
|
||||
- `POST /v1.0/users/{userId}/mail`: 메일 발송
|
||||
- `GET /v1.0/users/{userId}/mail/messages/{messageId}`: 특정 메일 상세 조회
|
||||
|
||||
* **인증 (OAuth 2.0):** 네이버웍스 API는 OAuth 2.0 기반 인증을 사용합니다. 에이전트는 이 인증 흐름을 이해하고 Access Token을 관리해야 합니다.
|
||||
* **권한 (Scope):** 에이전트의 역할에 따라 필요한 최소한의 권한(예: 읽기 전용)을 설정하여 보안을 강화하는 것이 중요합니다.
|
||||
* **사용자 관리:** 봇이 특정 사용자의 캘린더에 접근하려면 해당 사용자의 `userId`를 알아야 합니다.
|
||||
* **오류 처리:** API 호출 시 발생할 수 있는 오류(예: `403 Forbidden`, `404 Not Found`)를 적절히 처리하도록 로직을 구현해야 합니다.
|
||||
## 4. 로빙 연동 아키텍처
|
||||
|
||||
## 5. 참고 자료 및 결론
|
||||
### 4.1. 시크릿 관리 (온프레미스 2서버 환경)
|
||||
|
||||
네이버웍스 캘린더 API는 주로 기업 내부 시스템 통합이나 업무 자동화 봇 개발에 사용되므로, 일반 네이버 캘린더 API와 달리 대외적으로 공개된 영상이나 블로그 튜토리얼이 많지 않습니다.
|
||||
- **원칙**: 영구 시크릿(Client Secret, Private Key)은 **게이트웨이 서버**에만 중앙 집중식으로 보관합니다.
|
||||
- **구현**: 게이트웨이 서버에서 HashiCorp Vault 또는 암호화된 파일 시스템(`600` 권한)을 사용하여 Client ID/Secret을 관리하고, 컨테이너에는 읽기 전용(`:ro`)으로 마운트합니다.
|
||||
- **로빙/스킬 서버**: 게이트웨이를 통해 발급된 단기 Access Token만 받아 사용하며, 영구 시크릿을 보관하지 않습니다.
|
||||
|
||||
따라서 캘린더 제어 프로그램을 만들고자 한다면, 아래 공식 개발자 문서를 중심으로 학습하는 것이 가장 정확하고 효율적인 방법입니다.
|
||||
### 4.2. 인증 흐름 및 토큰 관리
|
||||
|
||||
* **네이버웍스 개발자 센터 (공식 문서):** [developers.worksmobile.com](https://developers.worksmobile.com)
|
||||
* [한국어 캘린더 API 문서](https://developers.worksmobile.com/kr/document/10070?lang=ko)
|
||||
* [영문 캘린더 API 문서](https://developers.worksmobile.com/document/10070?lang=en)
|
||||
* **네이버 개발자 포럼:** API 관련 실제 질의응답을 참고할 수 있습니다.
|
||||
* **유튜브 튜토리얼:** "네이버웍스 봇 개발"로 검색하면 API 사용의 기본적인 흐름과 인증 절차에 대한 이해를 돕는 영상을 찾을 수 있습니다.
|
||||
- **JWT 키 관리 (JWKS)**: 게이트웨이는 JWT 서명에 사용하는 공개키 목록을 `/.well-known/jwks.json` 엔드포인트를 통해 노출하여, 다른 서비스들이 토큰을 안전하게 검증하고 키 교체에 대응할 수 있도록 합니다.
|
||||
- **토큰 흐름**: 로빙/스킬 서버는 외부 API를 직접 호출하는 대신, 게이트웨이에 API 호출을 위임하고 필요한 단기 토큰을 받아 사용합니다.
|
||||
|
||||
> **결론:** 공식 문서의 예제 코드를 기반으로 직접 코드를 작성하며 기능을 구현하는 것을 추천합니다.
|
||||
## 5. 참고 자료
|
||||
|
||||
- **네이버웍스 개발자 센터 (공식 문서):** [developers.worksmobile.com](https://developers.worksmobile.com)
|
||||
- [인증 가이드](https://developers.worksmobile.com/kr/docs/auth)
|
||||
- [캘린더 API](https://developers.worksmobile.com/kr/document/10070?lang=ko)
|
||||
- [주소록 API](https://developers.worksmobile.com/kr/docs/contact)
|
||||
- [메일 API](https://developers.worksmobile.com/kr/docs/mail)
|
||||
- **네이버 개발자 포럼:** API 관련 실제 질의응답을 참고할 수 있습니다.
|
||||
|
||||
97
ideas/250917_FastAPI_구조와_객체지향_개념_정리.md
Normal file
97
ideas/250917_FastAPI_구조와_객체지향_개념_정리.md
Normal file
@ -0,0 +1,97 @@
|
||||
---
|
||||
tags: [FastAPI, Architecture, OOP, Python, Analogy]
|
||||
date: 2025-09-17
|
||||
modified: 2025-09-17
|
||||
---
|
||||
|
||||
# FastAPI 프로젝트 구조와 객체지향 개념 정리 (식당 비유)
|
||||
|
||||
이 문서는 FastAPI의 계층형 아키텍처와 객체지향 프로그래밍의 핵심 용어들을 '식당/푸드코트' 비유를 통해 정리한 내용입니다.
|
||||
|
||||
## 1. FastAPI 프로젝트 구조: 푸드코트와 개별 식당
|
||||
|
||||
마이크로서비스 아키텍처는 하나의 큰 식당이 아닌, 여러 전문 식당이 모인 '푸드코트'와 같습니다.
|
||||
|
||||
- **API 게이트웨이**: 푸드코트 정문 안내 데스크. 모든 손님은 여기로만 들어오며, 공통 인증, 경로 안내 등을 담당.
|
||||
- **개별 서비스**: 푸드코트 내의 각 식당 (한식 코너, 중식 코너 등). 각자 독립된 주방과 창고를 가짐.
|
||||
- **메시지 버스**: 푸드코트 전체에 울리는 호출 벨. 가게 간 직접 통신이 아닌, 이벤트(주문 완료 등)를 알리는 역할.
|
||||
|
||||
### 1.1. 개별 식당(서비스)의 내부 구조
|
||||
|
||||
| 파일/폴더 | 역할 (간단 설명) | 식당 비유 |
|
||||
|---|---|---|
|
||||
| `main.py` | 앱 실행, 라우터 등록 | 가게 정문 스위치, 메뉴판 거는 곳 |
|
||||
| `api/routers/*.py` | HTTP 요청 처리, 서비스 호출 | 홀 서빙 직원 |
|
||||
| `services/*.py` | 비즈니스 로직 구현 | 주방장 |
|
||||
| `repositories/*.py` | 데이터베이스 접근 로직 | 창고 관리 직원 |
|
||||
| `db/session.py` | DB 연결 및 세션 관리 | 창고 관리인, 창고 출입문 |
|
||||
| `models/*.py` | DB 테이블 구조 정의 (ORM) | 창고 선반 설계도 (내부용) |
|
||||
| `schemas/*.py` | 데이터 입출력 형식 정의 (Pydantic) | 손님 주문서 양식 (외부용) |
|
||||
| `core/*.py` | 설정, 보안, 로깅 등 공통 규칙 | 가게 사장, 운영 규칙 책자 |
|
||||
| `tests/*.py` | 코드 기능 자동 검증 | 시식 코너, 품질 검사 |
|
||||
| `.env` | 민감 정보 보관 (비밀번호 등) | 금고 속 비밀 문서 |
|
||||
|
||||
### 1.2. 올바른 작업 흐름 (주문 프로세스)
|
||||
|
||||
> **원칙: 작업 지시서(API 요청) 없이 작업하지 않는다.**
|
||||
|
||||
1. **손님**, 메뉴판을 보고 **주문(API 요청)**을 한다.
|
||||
2. **홀 서빙 직원(라우터)**이 **주문서 양식(스키마)**에 맞는지 확인하고 주방에 전달한다.
|
||||
3. **주방장(서비스)**은 레시피(비즈니스 로직)에 따라 요리를 시작한다.
|
||||
4. **창고 직원(리포지토리)**에게 **창고 설계도(모델)**를 보고 재료를 가져오라고 시킨다.
|
||||
5. 요리가 완성되면 다시 홀 서빙 직원을 통해 손님에게 전달된다.
|
||||
|
||||
> **핵심**: 홀 서빙 직원이 직접 요리하거나, 주방장이 창고를 뒤지는 등 역할을 섞으면 가게가 엉망이 된다. 각자의 역할 분리가 중요하다.
|
||||
|
||||
## 2. 핵심 용어: 스키마, 모델, 객체, 인스턴스
|
||||
|
||||
이 용어들은 헷갈리기 쉽지만, 본질과 표현의 관계로 이해할 수 있습니다.
|
||||
|
||||
### 2.1. 스키마 (Schema) - 본질, 실체의 구조
|
||||
|
||||
- **의미**: 데이터가 어떤 모양과 규칙을 가져야 하는지에 대한 본질적인 틀, 설계.
|
||||
- **비유**:
|
||||
- **DB 스키마**: 아마존 창고의 실제 선반 구조, 구역 구분, 물리적 규칙. (실체)
|
||||
- **API 스키마**: 테이블 오더 시스템의 전자 주문서 양식. (규칙)
|
||||
- **역할**: 데이터가 제멋대로 존재하지 못하도록 형식을 강제한다.
|
||||
|
||||
### 2.2. 모델 (Model) - 사영(投影), 껍데기
|
||||
|
||||
- **의미**: 스키마라는 본질을 코드 세계에서 다루기 쉽게 표현한 것.
|
||||
- **비유**:
|
||||
- **DB 모델(ORM 모델)**: 아마존 창고 구조를 원격으로 보여주는 대시보드 화면.
|
||||
- **API 모델(Pydantic 모델)**: 전자 주문서 양식을 코드로 표현한 클래스(틀).
|
||||
- **역할**: 개발자가 코드를 통해 실체(스키마)를 다룰 수 있게 해주는 인터페이스.
|
||||
|
||||
> **결론**: 스키마는 본질, 모델은 그 본질을 다루기 위한 코드 상의 표현(껍데기)이다. 현업에서는 둘을 섞어 쓰기도 하지만, 이 개념을 구분하면 구조를 더 깊이 이해할 수 있다.
|
||||
|
||||
### 2.3. 객체(Object)와 인스턴스(Instance)
|
||||
|
||||
- **의미**: 클래스(설계도)를 바탕으로 메모리에 실제로 만들어진 개별 실체.
|
||||
- **어원**: `Instance`는 '무리 속에 함께 서 있는 하나(one of them)', 즉 '구체적 사례'라는 뜻.
|
||||
- **비유**:
|
||||
- **클래스**: 김밥 레시피.
|
||||
- **객체/인스턴스**: 그 레시피로 실제로 만든 김밥 한 줄.
|
||||
- **차이**: 거의 동의어지만, **객체**는 존재 자체를, **인스턴스**는 '어떤 클래스의 사례'라는 관계를 강조한다.
|
||||
|
||||
## 3. 파이썬 클래스와 객체지향의 핵심
|
||||
|
||||
### 3.1. `self` - "나 자신(객체)"
|
||||
|
||||
- **역할**: 클래스 메서드 안에서, "현재 이 코드를 실행하고 있는 객체 자신"을 가리킨다.
|
||||
- **필요성**: `self`가 없다면, 같은 클래스로 만든 여러 객체(김밥 100줄) 중 어느 객체(어떤 김밥)의 속성을 바꿔야 할지 구분할 수 없다. 객체의 '개별성'을 보장하기 위해 필수적이다.
|
||||
- **동작**: `u.greet()`처럼 호출하면, 파이썬이 자동으로 `User.greet(u)`처럼 `u`를 `self` 자리에 넣어준다.
|
||||
|
||||
### 3.2. `cls` - "우리 가게(클래스)"
|
||||
|
||||
- **역할**: `@classmethod` 데코레이터가 붙은 메서드 안에서, "클래스 자신"을 가리킨다.
|
||||
- **비유**: 개별 김밥(`self`)이 아닌, 김밥 가게(`cls`) 전체의 정보(e.g., 오늘 판 김밥 총개수)를 다룰 때 사용한다.
|
||||
|
||||
### 3.3. 클래스와 메타클래스
|
||||
|
||||
- **클래스도 객체다**: 파이썬에서는 `class User:` 자체도 하나의 객체(`type` 클래스의 인스턴스)이다.
|
||||
- **메타클래스(Metaclass)**: '클래스를 만드는 클래스'. 파이썬의 기본 메타클래스는 `type`이다.
|
||||
- **비유**:
|
||||
- **인스턴스**: 김밥 한 줄
|
||||
- **클래스**: 김밥 레시피
|
||||
- **메타클래스**: 그 레시피를 찍어내는 공장
|
||||
50
ideas/250917_로빙_슬랙_이모티콘_반응_기능_구현.md
Normal file
50
ideas/250917_로빙_슬랙_이모티콘_반응_기능_구현.md
Normal file
@ -0,0 +1,50 @@
|
||||
---
|
||||
tags: [Slack, API, Emoji, Reaction, Bot]
|
||||
date: 2025-09-17
|
||||
modified: 2025-09-17
|
||||
---
|
||||
|
||||
# 로빙(RO-BEING)의 슬랙 이모티콘 반응 기능 구현 방안
|
||||
|
||||
이 문서는 로빙 에이전트가 슬랙 채널의 특정 메시지에 이모티콘 반응을 추가하거나 제거하는 기능의 구현 방법을 정리한 것입니다.
|
||||
|
||||
## 1. 핵심 요약
|
||||
|
||||
결론적으로, 로빙은 슬랙 웹 API(Slack Web API)를 통해 특정 메시지에 이모티콘 반응을 다는 것이 **가능합니다.**
|
||||
|
||||
## 2. 필수 API 및 권한
|
||||
|
||||
### 2.1. 주요 API 메서드
|
||||
|
||||
- **`reactions.add`**: 특정 메시지에 이모티콘 반응을 추가합니다.
|
||||
- **필수 파라미터**: `channel` (채널 ID), `timestamp` (메시지의 타임스탬프), `name` (이모티콘 이름, 예: `thumbsup`)
|
||||
|
||||
- **`reactions.remove`**: 로빙이 추가했던 이모티콘 반응을 제거합니다.
|
||||
- **필수 파라미터**: `channel`, `timestamp`, `name`
|
||||
|
||||
> **참고**: 과거에 사용되던 `file`, `file_comment` 기반의 반응 추가 방식은 현재 권장되지 않습니다.
|
||||
|
||||
### 2.2. 필요 권한 (Bot Token Scopes)
|
||||
|
||||
- **`reactions:write`**: 이모티콘 반응을 추가하거나 제거하기 위한 필수 권한입니다.
|
||||
- **`reactions:read`**: 특정 메시지에 달린 반응 현황을 조회하거나, 반응 관련 이벤트를 수신할 때 필요합니다.
|
||||
|
||||
## 3. 주요 구현 시나리오
|
||||
|
||||
자동화 시나리오는 크게 두 가지 방식으로 구현할 수 있습니다.
|
||||
|
||||
### 시나리오 1: 직접 트리거 방식 (Direct Trigger)
|
||||
|
||||
- **동작 방식**: 사용자가 특정 슬래시(`/`) 명령을 입력하거나 메시지에 첨부된 버튼을 클릭하면, 로빙이 해당 메시지의 `channel`과 `timestamp`를 즉시 파악하여 `reactions.add` API를 호출합니다.
|
||||
- **장점**: 사용자의 명시적인 요청에 따라 즉각적으로 반응하므로 직관적입니다.
|
||||
- **예시**: `/done` 명령을 입력하면 해당 메시지에 `:white_check_mark:` 이모티콘을 추가합니다.
|
||||
|
||||
### 시나리오 2: 이벤트 구독 방식 (Event-based Trigger)
|
||||
|
||||
- **동작 방식**: 슬랙의 Events API에서 `reaction_added` 이벤트를 구독합니다. 사용자가 특정 메시지에 정해진 이모티콘(예: `:robot_face:`)을 달면, 로빙이 이벤트를 수신하여 후속 동작(예: 다른 이모티콘 추가, 스레드에 답변 등)을 수행합니다.
|
||||
- **장점**: 사용자의 자연스러운 이모티콘 반응을 감지하여 능동적으로 동작을 개시할 수 있습니다.
|
||||
- **예시**: 사용자가 어떤 메시지에 `:question:` 이모티콘을 달면, 로빙이 해당 스레드에 "무엇을 도와드릴까요?"라고 답변을 남깁니다.
|
||||
|
||||
## 4. 다음 단계
|
||||
|
||||
구체적인 구현에 앞서, 어떤 시나리오(규칙 기반 자동 반응 vs. 사용자 수동 트리거)를 우선적으로 개발할지 결정해야 합니다. 이 결정에 따라 필요한 세부 구현 지침이 달라집니다.
|
||||
62
ideas/250917_적응형_자동화와_AI_에이전트_고찰.md
Normal file
62
ideas/250917_적응형_자동화와_AI_에이전트_고찰.md
Normal file
@ -0,0 +1,62 @@
|
||||
---
|
||||
tags: [AI, Agent, Automation, AdaptiveAutomation, CognitiveAutomation, NLP]
|
||||
date: 2025-09-17
|
||||
modified: 2025-09-17
|
||||
---
|
||||
|
||||
# AI 에이전트, 적응형 자동화, 그리고 비즈니스 모델에 대한 고찰
|
||||
|
||||
이 문서는 AI 에이전트의 지시문, 코드의 역할 변화, 그리고 새로운 프로그래밍 패러다임인 '적응형 자동화'에 대한 대화 내용을 정리한 것입니다.
|
||||
|
||||
## 1. 문서, 코드, 그리고 존재의 확장
|
||||
|
||||
- **문서의 근본적 목적**: 인간이 문서를 만드는 이유는 자신의 생각, 지식, 감정, 경험을 공유하고, 시간과 공간을 넘어 다른 이들과 소통하기 위함입니다. 이는 자신의 존재를 다른 존재에게 영향을 미침으로써 확장하려는 근본적인 욕구에서 비롯됩니다.
|
||||
- **설명문**: 정보 전달, 지식 공유 (예: 교과서, 백과사전)
|
||||
- **논설문**: 주장, 설득 (예: 사설, 칼럼)
|
||||
- **서사문**: 이야기, 경험 전달 (예: 소설, 일기)
|
||||
- **창작문**: 예술적 표현 (예: 시, 희곡)
|
||||
|
||||
- **코드의 본질**: 코드는 '컴퓨터에게 절차를 설명하는 매우 명확하고 엄격한 설명문'입니다.
|
||||
- 자연어의 모호성을 제거하고, 기계가 의도대로 정확하게 동작하도록 보장하는 데 목적이 있습니다.
|
||||
- 요리 레시피, 공정 매뉴얼, 조립 설명서처럼, 명확한 결과를 위해 구체적인 절차를 명시하는 문서와 유사한 목적을 가집니다.
|
||||
|
||||
## 2. AI 에이전트와 코드의 진화: 적응형 자동화
|
||||
|
||||
- **지시문의 변화**: 기존 프로그래밍이 '엄격한 코드'를 요구했다면, AI 에이전트에게는 '모호한 자연어'로 지시를 내립니다. 이는 마치 유능한 직원에게 지시하는 것과 유사합니다.
|
||||
|
||||
- **에이전트의 역할**: 에이전트는 모호한 지시의 '의도'를 파악하고, 변화하는 환경에 '적응'하여 과업을 완수해야 합니다.
|
||||
|
||||
- **코드의 유연성**: 따라서 에이전트가 사용하는 코드는 고정된 절차를 따르는 것이 아니라, 의도에 따라 유연하게 수정되고 적응하는 형태가 되어야 합니다.
|
||||
- **예시**: "네이버 로그인해"라는 지시를 받았을 때, 로그인 버튼의 UI 요소(클래스명, 위치 등)가 변경되더라도, '로그인'이라는 목적을 달성하기 위해 스스로 대상을 찾아 작업을 수행해야 합니다.
|
||||
|
||||
- **새로운 프로그래밍 패러다임**: 이는 현재의 Python, C++ 같은 언어만으로는 완벽히 구현하기 어려운 새로운 개념이며, 다음과 같은 용어들로 논의되고 있습니다.
|
||||
- **적응형 자동화 (Adaptive Automation)**
|
||||
- **자연어 인터페이스 기반 프로그래밍 (Natural Language Interface-based Programming)**
|
||||
- **인지적 자동화 (Cognitive Automation)**
|
||||
|
||||
## 3. 관련 연구 동향
|
||||
|
||||
- **적응형 자동화 (Adaptive Automation)**: 시스템 상태, 인간의 인지 부하, 작업 환경 등을 바탕으로 자동화 수준(Level of Automation, LOA)을 동적으로 조정하는 설계 원칙을 다룹니다. (Bernabei et al., 2024)
|
||||
|
||||
- **강화학습 기반 인지 자동화**: 전통적인 규칙 기반 RPA(Robotic Process Automation)의 한계를 넘어, 강화학습(RL)을 통해 UI 변경, 입력 오류 등 변화하는 환경에 자동화 프로세스가 적응하도록 만드는 연구입니다. (Debbadi & Boateng et al., 2025)
|
||||
|
||||
- **자연어-코드 변환 (NL-to-Code)**: 데이터 과학 노트북 환경에서 사용자의 자연어 의도와 이전 셀의 맥락을 파악하여 코드를 생성하는 연구(ARCADE, PACHINCO)는 자연어 지시의 유연한 코드 변환 가능성을 보여줍니다. (Google Research, 2023)
|
||||
|
||||
- **핵심 개념**:
|
||||
- **자동화 수준 (LOA)**: 고정된 자동화가 아닌, 상황에 따라 동적으로 수준을 조절하는 능력.
|
||||
- **예외 처리 / 대체 경로 (Exception Handling / Fallback)**: 특정 요소 실패 시, 대체 경로를 탐색하는 메커니즘.
|
||||
- **인간 참여 루프 (Human-in-the-loop)**: 자동화가 모호성을 해결하거나 중간 결과를 승인받기 위해 인간과 상호작용하는 구조.
|
||||
- **문맥 인식 (Contextual Awareness)**: 자연어 지시와 함께 UI 상태, 이전 행동 등 주변 환경을 함께 고려하는 설계.
|
||||
- **설명 가능성 (Explainability)**: 자동화 시스템이 왜 그렇게 행동했는지 사용자에게 설명하여 신뢰를 유지하는 능력.
|
||||
|
||||
## 4. 실용적 적용: 유튜브를 통한 학습과 비즈니스 모델
|
||||
|
||||
- **유튜브를 통한 프로그램 학습**: AI 에이전트는 유튜브 영상을 통해 프로그램 사용법을 학습할 수 있습니다.
|
||||
- **파이프라인**: 영상 검색 → 자막/음성으로 전사(transcript) 확보 → LLM으로 절차 추출 → 타임스탬프와 연결하여 단계별 학습 코스 구성.
|
||||
- **에이전트 결합**: 사용자의 현재 화면/오류를 인지하여 필요한 영상 구간을 추천하고, 텍스트 절차를 함께 제공하는 '코치 모드'로 작동 가능.
|
||||
|
||||
- **RO-BEING 프로젝트의 수익성**: 대화에서 언급된 '로빙' 프로젝트는 다음과 같은 측면에서 충분한 사업적 가치를 가집니다.
|
||||
- **B2B 가치**: 스타트업 대표 등 기업 사용자의 생산성 향상, 리스크 감소, 신속한 의사결정 지원을 통해 명확한 가치를 제공.
|
||||
- **프리미엄 기능**: 긴급 장애 대응, M&A 분석 등은 높은 비용을 지불할 만한 차별화 요소.
|
||||
- **플랫폼 확장성**: 스킬 마켓플레이스와 토큰 경제는 장기적인 플랫폼 수익 모델로 발전 가능.
|
||||
- **엔터프라이즈 시장**: 정교한 윤리/안전 프레임워크는 B2B 및 정부 기관 대상 판매에 유리한 요소.
|
||||
Loading…
x
Reference in New Issue
Block a user