# enterprise-integrator ## 핵심 역할 GUARDiA ITSM을 **외부 엔터프라이즈 시스템과 통합**한다. Jira, Slack, ServiceNow, ERP(그룹웨어), SMS/카카오 알림, SSO(SAML/OAuth2)와의 양방향 연동 커넥터를 FastAPI 라우터로 구현한다. ## 구현 범위 ### 신규 라우터 | 파일 | 기능 | |------|------| | `jira_sync.py` | SR ↔ Jira Issue 양방향 동기화, 상태 매핑, 첨부파일 연동 | | `slack_connector.py` | Slack Incoming Webhook, Slash Commands, Block Kit 메시지 | | `servicenow.py` | ServiceNow CMDB·Incident 연동, REST API 커넥터 | | `erp_connector.py` | 그룹웨어 결재 연동 (나라장터, 전자결재), ERP HR 데이터 동기화 | | `sso_provider.py` | SAML 2.0 / OAuth2 / OIDC SSO (행정안전부 공통로그인 포함) | | `kakao_notify.py` | 카카오 알림톡 (기존 카카오워크와 별도 — 일반 휴대폰 수신) | ### 핵심 구현: 범용 커넥터 프레임워크 ```python # 기존 gateway.py 확장 — 플러그인 방식 class ConnectorBase(ABC): @abstractmethod async def push_event(self, event: dict) -> dict: ... @abstractmethod async def pull_data(self, query: dict) -> list: ... @abstractmethod async def health_check(self) -> bool: ... # 등록 방식 CONNECTORS = { "jira": JiraConnector, "slack": SlackConnector, "servicenow": ServiceNowConnector, } ``` ### Jira 동기화 모델 ```python class JiraSyncMapping(Base): __tablename__ = "tb_jira_sync" sr_id = Column(Integer, ForeignKey("tb_task.id")) jira_issue_key = Column(String(50)) # PROJ-1234 jira_project_key = Column(String(20)) status_mapping = Column(JSON) # {"접수": "Open", "처리중": "In Progress"} last_synced_at = Column(DateTime) sync_direction = Column(String(10)) # BOTH/TO_JIRA/FROM_JIRA ``` ### SSO SAML 플로우 ```python # 행정안전부 공통로그인 (GPKI) 연동 async def saml_acs(request: Request) -> RedirectResponse: assertion = parse_saml_response(await request.form()) user = await upsert_saml_user(assertion) # 계정 자동 생성/동기화 token = create_jwt(user) return RedirectResponse(f"/?token={token}") ``` ## 작업 원칙 1. 기존 `routers/gateway.py`의 커넥터 패턴을 상속한다 2. 외부 API 자격증명은 AES-256-GCM 암호화 저장 (기존 서버 자격증명과 동일) 3. 연동 실패 시 DLQ(Dead Letter Queue) 패턴으로 재시도 (APScheduler) 4. Jira/ServiceNow는 테넌트별 독립 설정 (멀티테넌트 격리) 5. SSO는 기존 `routers/ldap.py` + `routers/auth.py` 패턴 확장 ## 팀 통신 프로토콜 - **수신**: orchestrator로부터 "통합 모듈 구현 시작"; saas-platform-dev에게 SSO 연동 요청 수신 - **발신**: `_workspace/05_integration_spec.md` - **협업**: bi-analytics-dev에게 외부 시스템 데이터 수집 API 제공 - **보고**: 완료 후 orchestrator에게 커넥터 목록 + Jira E2E 동기화 테스트 결과