ITSM (style.css):
- CSS tokens: indigo -> cyan(#00A0C8)+navy(#003366) palette
- Background: deeper navy (#001020, #001530, #001e3c)
- Sidebar active: cyan left bar + light bg (not full gradient)
- Buttons: solid cyan, rounded
- Logo icon: navy-to-cyan gradient
Manager (React):
- GNB: white header, navy branding, cyan badge
- Sidebar: white bg, cyan active border + light bg, navy text
- StatCard: cyan top bar, light blue icon box (screenshot9 pattern)
- AppLayout: navy page title
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[하네스]
- agents/scraping-bot.md: 스크랩 봇 에이전트
- skills/scraping-orchestrator/SKILL.md: E2E 워크플로우
[ITSM Backend]
- models.py: ScrapingTarget + ScrapingResult ORM + Pydantic 스키마
- core/scraping_engine.py: BeautifulSoup 기반 비동기 스크래퍼
- routers/scraping.py: 13개 API (타겟 CRUD + run + 게시/삭제/원복 + 통계)
- routers/messenger.py: !scrap 봇 명령어 6종 + scrap_published 이벤트
- main.py: scraping 라우터 등록
[Manager UI]
- ScrapingManager.tsx: 결과 목록/상세/게시/삭제/원복 + 타겟 관리
- Sidebar.tsx: 🕷️ 스크랩핑 봇 메뉴 추가
- App.tsx: /scraping 라우트 추가
[테스트 결과 - 전체 통과]
- T1 타겟 등록 OK
- T2 즉시 스크랩: zioinfo.co.kr → DRAFT
- T3 결과 목록 조회 OK
- T4 게시: DRAFT → PUBLISHED + 메신저 알림
- T5/T6/T7 두번째 스크랩 → 삭제 → 원복 OK
- T8 통계: draft:1, published:1, deleted:0
- T9 !scrap list 봇 명령어 OK
- T10 !scrap status 봇 명령어 OK
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[개선 내용]
1. 스키마 필터링: Out/Response/Data 제외 → Create/Update/In만 학습
- 140개 스키마 → 73개 입력 스키마, 1357개 → 672개 규칙 (노이즈 제거)
2. 라우터 자동 스캔: routers/*.py AST 파싱 → 엔드포인트-스키마 정확 매핑
3. 영속 저장: rpa_rules.json → 서비스 재시작 시 자동 복구
4. 서비스 시작 자동 학습: 규칙 파일 없을 때 즉시 학습
5. APScheduler 연동: schedule(cron) 설정 시 자동 크론 등록/해제
6. /api/rpa/status: 시스템 현황 요약 엔드포인트 추가
7. /api/rpa/validations/schemas: 스키마별 필드 수 조회
8. /api/rpa/tasks/{id}/toggle: 작업 활성/비활성 토글
[테스트 결과 - 전체 통과]
- T1 RPA 상태: 73 endpoints, 672 rules, 자동 학습 확인
- T4 dry_run 정상: validation_errors=[] ✓
- T5 오류 감지: 4개 오류 정확 (title 필수·enum 2개·requested_by 필수)
- T6 작업 등록: APScheduler 크론 등록 포함
- T7 등록 작업 실행: DRY_RUN_OK ✓
- T8 이력 조회: status 필터 정상
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[하네스]
- agents/validation-learner.md: 소스 AST 파싱 validation 학습 에이전트
- agents/rpa-bot.md: 학습 규칙 참조 자동화 실행 에이전트
- skills/rpa-orchestrator/SKILL.md: RPA E2E 워크플로우 스킬
- skills/rpa-validation/SKILL.md: 소스 기반 validation 학습 스킬
[구현]
- core/rpa_engine.py: ValidationLearner(AST 파서) + RPAValidator + RPAExecutor
- routers/rpa.py: 11개 API 엔드포인트
POST /api/rpa/validations/learn — models.py AST 파싱 → 1357개 규칙 학습
GET /api/rpa/validations — 학습 규칙 조회 (119 endpoints)
POST /api/rpa/tasks — RPA 작업 등록
POST /api/rpa/execute — 즉시 실행 (validation + API 호출)
GET /api/rpa/executions — 실행 이력
[테스트 결과]
- validation 학습: 140개 스키마 / 1357개 규칙 / 119개 엔드포인트
- WRONG_TYPE → enum 오류 감지 정확
- 필수 필드 누락 → validation 오류 상세 반환
- 실행 이력 조회 정상
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
## 자동처리 엔진 (core/auto_processor.py)
위험도 평가 함수 assess_risk():
LOW/MEDIUM → 즉시 자동 처리
HIGH → 승인 요청 발송 후 대기
CRITICAL → 관리자 승인 필수
자동 처리 항목:
- SR 자동 분류·배정 (키워드/우선순위 추론)
- INQUIRY SR → KB 검색 후 자동 답변 (신뢰도 75% 이상)
- SLA 임박(30분) → 자동 에스컬레이션
- 이상 감지(HIGH+) → 인시던트 자동 생성
- 완료 SR → KB 아티클 초안 자동 생성
## 자율 운영 API (routers/autonomous.py)
GET /api/auto/status 오늘 자동처리 통계
POST /api/auto/run 사이클 즉시 실행 (ADMIN)
GET /api/auto/queue 승인 대기 작업 목록
POST /api/auto/queue 작업 등록 → 위험도 평가 후 분기
POST /api/auto/approve/{id} 승인 (HIGH=ENGINEER+, CRITICAL=ADMIN)
POST /api/auto/reject/{id} 거부
GET /api/auto/history 처리 이력
## 스케줄러 (core/scheduler.py)
5분마다 _auto_processing_cycle() 실행
- 신규 SR 자동 분류·배정
- INQUIRY SR KB 자동 답변
- SLA 에스컬레이션
- 완료 SR KB 초안 생성
## 봇 명령어 (routers/messenger.py)
/autoq 승인 대기 큐 조회
/approve <ID> [의견] 승인
/reject <ID> [사유] 거부
## DB 모델 (models.py)
AutoAction: 자동처리 이력 + 승인 큐
AutoActionStatus: AUTO_DONE|PENDING_APPROVAL|APPROVED|REJECTED|EXPIRED
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스)
- Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포
- 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>