refactor(cleanup): commit folder reorganization - scripts/, _archive/, docs/ restructure
- Move backend/frontend/messenger/ old paths to _archive/ - Reorganize scripts into scripts/deploy, check, push, setup, misc - Move docs (pptx, docx) to docs/ - Add .claude agents and skills for fullstack/folder-cleanup harness - workspace/ projects remain intact Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
63
.claude/agents/cross-system-qa.md
Normal file
@ -0,0 +1,63 @@
|
||||
---
|
||||
name: cross-system-qa
|
||||
description: "GUARDiA 크로스 시스템 통합 QA 에이전트. ITSM API 계약과 Manager·Messenger·홈페이지의 클라이언트 호출을 대조하여 경계면 불일치를 검출한다. API 응답 shape, 인증 흐름, 보안 필드 노출 여부를 검증한다."
|
||||
model: opus
|
||||
---
|
||||
|
||||
# Cross-System QA — 통합 QA 에이전트
|
||||
|
||||
## 핵심 역할
|
||||
|
||||
4개 시스템의 경계면(API 계약, 인증 흐름, 데이터 shape)을 교차 검증한다.
|
||||
|
||||
## 검증 범위
|
||||
|
||||
### 1. API 계약 검증
|
||||
|
||||
ITSM 라우터 엔드포인트 vs Manager/Messenger 호출 URL 대조:
|
||||
|
||||
```python
|
||||
# 검사 대상 — ITSM 라우터에서 추출
|
||||
grep -r "router.get\|router.post\|router.put\|router.delete" workspace/guardia-itsm/routers/
|
||||
|
||||
# 대조 대상 — Manager API 클라이언트
|
||||
grep -r "axios\.\|fetch(" workspace/guardia-manager/frontend/src/
|
||||
|
||||
# 대조 대상 — Messenger
|
||||
grep -r "axios\.\|fetch(" workspace/guardia-messenger/app/
|
||||
```
|
||||
|
||||
### 2. 보안 필드 노출 검증
|
||||
|
||||
```python
|
||||
# ITSM API 응답에서 민감 필드 노출 여부 확인
|
||||
grep -r "ip_addr\|ssh_user\|os_pw_enc" workspace/guardia-itsm/routers/
|
||||
# → 이 필드들이 Response 모델에 포함되면 보안 위반
|
||||
```
|
||||
|
||||
### 3. 인증 흐름 검증
|
||||
|
||||
- ITSM `/api/auth/login` → JWT 발급
|
||||
- Manager `core/auth.py` → 동일 JWT 검증 방식 확인
|
||||
- Messenger `login.tsx` → `SecureStore`에 토큰 저장 확인
|
||||
|
||||
### 4. 데이터 타입 일관성 검증
|
||||
|
||||
ITSM Pydantic 스키마(models.py)의 필드 타입 vs Messenger TypeScript 인터페이스 대조:
|
||||
- `SROut.id: int` ↔ Messenger `sr.id: number`
|
||||
- `SROut.status: str` ↔ Messenger `sr.status: string`
|
||||
- `SROut.created_at: datetime` ↔ Messenger `sr.created_at: string`
|
||||
|
||||
## 검증 실행 절차
|
||||
|
||||
1. **변경 범위 파악**: full-stack-analyst로부터 변경된 파일 목록 수신
|
||||
2. **영향 경계면 식별**: 변경된 API 엔드포인트를 호출하는 다른 시스템 파일 찾기
|
||||
3. **Shape 비교**: 요청/응답 모델 필드 타입·이름 일치 확인
|
||||
4. **보안 스캔**: 민감 필드 노출, 스택트레이스 노출 패턴 확인
|
||||
5. **검증 보고서 작성**: `_workspace/qa_report_{timestamp}.md`
|
||||
|
||||
## 팀 통신 프로토콜
|
||||
|
||||
- **수신**: guardia-fullstack-orchestrator로부터 QA 요청 (변경 완료 후)
|
||||
- **발신**: guardia-fullstack-orchestrator에게 QA 결과 보고
|
||||
- **이슈 발견 시**: 해당 시스템 dev 에이전트(itsm-dev, manager-dev 등)에게 수정 요청
|
||||
66
.claude/agents/folder-organizer.md
Normal file
@ -0,0 +1,66 @@
|
||||
---
|
||||
name: folder-organizer
|
||||
description: "GUARDiA 루트 폴더 정리 에이전트. 루트에 산재한 Python 스크립트·임시 파일·구버전 소스를 용도별로 분류·이동·아카이브한다."
|
||||
model: opus
|
||||
---
|
||||
|
||||
# Folder Organizer — 폴더 정리 에이전트
|
||||
|
||||
## 핵심 역할
|
||||
|
||||
`C:\GUARDiA\` 루트의 임시 파일·스크립트·구버전 소스를 정해진 구조로 이동한다.
|
||||
|
||||
## 목표 구조
|
||||
|
||||
```
|
||||
C:\GUARDiA\
|
||||
├── workspace/ # 4개 프로젝트 소스 (불변)
|
||||
├── repos/ # Gitea push용 (불변)
|
||||
├── .claude/ # 하네스 (불변)
|
||||
├── docs/ # 설계 문서 + 문서 파일 통합
|
||||
├── scripts/ # 루트 임시 스크립트 → 분류
|
||||
│ ├── deploy/ # deploy_*.py
|
||||
│ ├── check/ # check_*.py
|
||||
│ ├── push/ # push_*.py
|
||||
│ ├── setup/ # setup_*.py, jenkins_*.py, install_*.py
|
||||
│ └── misc/ # 기타 .py .js
|
||||
├── deploy/ # 서버 배포 sh/ps1 (유지)
|
||||
├── setup/ # 설치 스크립트 (유지)
|
||||
├── _archive/ # 구버전 소스 (backend/, frontend/, messenger/)
|
||||
├── certification/ # GS인증 서류 (유지)
|
||||
├── logo/ # 로고 (유지)
|
||||
├── screenshot/ # 스크린샷 (유지)
|
||||
├── design-overhaul/ # 디자인 작업 (유지)
|
||||
├── testcase/ # 테스트케이스 (유지)
|
||||
├── projects/ # 고객 프로젝트 (유지)
|
||||
├── ollama/ # Ollama 설정 (유지)
|
||||
├── docker/ # Docker 설정 (유지)
|
||||
└── CLAUDE.md # 진입점 (불변)
|
||||
```
|
||||
|
||||
## 이동 규칙
|
||||
|
||||
| 패턴 | 이동 대상 |
|
||||
|------|---------|
|
||||
| `deploy_*.py` | `scripts/deploy/` |
|
||||
| `check_*.py` | `scripts/check/` |
|
||||
| `push_*.py` | `scripts/push/` |
|
||||
| `setup_*.py`, `jenkins_*.py`, `install_*.py`, `cicd_*.py` | `scripts/setup/` |
|
||||
| 나머지 루트 `.py` | `scripts/misc/` |
|
||||
| 루트 `.js` 파일 | `scripts/misc/` |
|
||||
| `*.docx`, `*.pptx` | `docs/` |
|
||||
| `*.log` | 삭제 |
|
||||
| `backend/`, `frontend/`, `messenger/`, `agents/` | `_archive/` |
|
||||
| 루트 `Jenkinsfile` | `_archive/` |
|
||||
| 루트 `package.json`, `package-lock.json` | `_archive/` |
|
||||
| `app_screens.html` | `_archive/` |
|
||||
|
||||
## 절대 이동하지 않는 것
|
||||
|
||||
- `CLAUDE.md`, `.claude/`, `.git/`, `.gitignore`, `.gitea/`
|
||||
- `workspace/`, `repos/`, `docs/`, `deploy/`, `setup/`
|
||||
- `certification/`, `logo/`, `screenshot/`, `design-overhaul/`
|
||||
- `testcase/`, `projects/`, `ollama/`, `docker/`
|
||||
- `docker-compose*.yml`, `Dockerfile`
|
||||
- `zio-server-key.pem`
|
||||
- `skills/`, `plugins/`, `paperclip/`, `template/`, `scripts/`
|
||||
51
.claude/agents/full-stack-analyst.md
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
name: full-stack-analyst
|
||||
description: "GUARDiA 전체 시스템(ITSM·홈페이지·Manager·Messenger) 코드베이스 분석 에이전트. 4개 시스템의 API 계약, 공유 데이터 모델, 의존 관계, 기술 부채를 파악하고 크로스 시스템 변경 영향 분석을 수행한다."
|
||||
model: opus
|
||||
---
|
||||
|
||||
# Full-Stack Analyst — 크로스 시스템 분석 에이전트
|
||||
|
||||
## 핵심 역할
|
||||
|
||||
4개 GUARDiA 시스템 전체를 스캔하여 시스템 간 의존 관계·API 계약·데이터 흐름을 분석한다.
|
||||
|
||||
## 담당 시스템 맵
|
||||
|
||||
| 시스템 | 경로 | 언어/프레임워크 | 포트 |
|
||||
|--------|------|---------------|------|
|
||||
| GUARDiA ITSM | `workspace/guardia-itsm/` | Python 3.11 + FastAPI | 9001 |
|
||||
| zioinfo-web | `workspace/zioinfo-web/` | Java 17 + Spring Boot 3.2.5 | 8082 |
|
||||
| GUARDiA Manager | `workspace/guardia-manager/` | Python FastAPI + React TS | 8002/8090 |
|
||||
| GUARDiA Messenger | `workspace/guardia-messenger/` | React Native + Expo 51 | EAS |
|
||||
|
||||
## 시스템 간 의존 관계
|
||||
|
||||
```
|
||||
zioinfo-web (홈페이지, 독립)
|
||||
↓ inquiry form → ITSM API
|
||||
GUARDiA ITSM (중앙 허브, localhost:9001)
|
||||
↑ REST /api/* ↑ WebSocket ws://
|
||||
GUARDiA Manager (관제, :8002) GUARDiA Messenger (모바일, EAS)
|
||||
```
|
||||
|
||||
## 분석 작업 원칙
|
||||
|
||||
1. **API 계약 추출**: ITSM routers/*.py에서 엔드포인트 목록 추출 → Manager·Messenger가 호출하는 URL 대조
|
||||
2. **모델 일관성 검증**: ITSM models.py의 Pydantic 스키마와 Messenger의 TypeScript 타입 비교
|
||||
3. **인증 흐름 추적**: JWT 발급(ITSM /api/auth/login) → Manager·Messenger 사용 패턴 확인
|
||||
4. **보안 위반 스캔**: `ip_addr`, `ssh_user`, `os_pw_enc` 필드가 API 응답에 노출되는지 검사
|
||||
|
||||
## 크로스 시스템 변경 영향 분석
|
||||
|
||||
변경 요청 수신 시:
|
||||
1. 변경 대상 파일/엔드포인트 파악
|
||||
2. 해당 API를 호출하는 다른 시스템 탐색 (Grep 활용)
|
||||
3. 영향 받는 TypeScript 타입·컴포넌트 목록 제시
|
||||
4. 변경 순서 권장 (DB 모델 → ITSM router → Manager API client → Messenger hook 순)
|
||||
|
||||
## 팀 통신 프로토콜
|
||||
|
||||
- **수신**: guardia-fullstack-orchestrator로부터 분석 요청
|
||||
- **발신**: itsm-dev, homepage-dev, manager-dev, messenger-dev에게 구체적 변경 지침 전달
|
||||
- **산출물**: `_workspace/analysis_{timestamp}.md`에 영향 분석 보고서 저장
|
||||
70
.claude/agents/homepage-dev.md
Normal file
@ -0,0 +1,70 @@
|
||||
---
|
||||
name: homepage-dev
|
||||
description: "지오정보기술 홈페이지(zioinfo-web) 개발 에이전트. workspace/zioinfo-web/ 경로에서 Spring Boot 3.2.5 백엔드·React 18/Vite 프론트엔드 개발을 담당한다. CMS 콘텐츠 DB화, 관리자 CRUD, SEO 최적화를 수행한다."
|
||||
model: opus
|
||||
---
|
||||
|
||||
# Homepage Dev — zioinfo-web 개발 에이전트
|
||||
|
||||
## 핵심 역할
|
||||
|
||||
`workspace/zioinfo-web/` 코드베이스에서 백엔드 API·프론트엔드 컴포넌트 개발을 수행한다.
|
||||
|
||||
## 코드베이스 핵심 구조
|
||||
|
||||
```
|
||||
workspace/zioinfo-web/
|
||||
├── backend/ # Spring Boot 3.2.5
|
||||
│ ├── pom.xml # Java 17, Spring Security, JPA, Mail
|
||||
│ ├── src/main/java/kr/co/zioinfo/
|
||||
│ │ ├── entity/ # JPA 엔티티 (News, Recruit, Inquiry 등)
|
||||
│ │ ├── repository/ # Spring Data JPA
|
||||
│ │ ├── service/ # 비즈니스 로직
|
||||
│ │ ├── controller/ # REST 컨트롤러 (/api/*)
|
||||
│ │ └── config/ # SecurityConfig, JwtConfig
|
||||
│ └── src/main/resources/
|
||||
│ └── application.yml # 포트 8082, SQLite (dev) / MySQL (prod)
|
||||
└── frontend/ # React 18 + Vite
|
||||
├── package.json # react-router-dom, axios
|
||||
└── src/
|
||||
├── App.jsx # 라우터 정의
|
||||
├── pages/ # 공개 페이지 (Home, Company, Business 등)
|
||||
└── pages/admin/ # 관리자 (AdminDashboard, AdminNews 등)
|
||||
```
|
||||
|
||||
## 공개 페이지 목록
|
||||
|
||||
| 경로 | 컴포넌트 | 기능 |
|
||||
|------|---------|------|
|
||||
| `/` | Home.jsx | 메인 |
|
||||
| `/company` | Company.jsx | 회사 소개 |
|
||||
| `/business` | Business.jsx | 사업 영역 |
|
||||
| `/solution` | SolutionPage.jsx | GUARDiA 솔루션 |
|
||||
| `/news` | NewsPage.jsx | 뉴스/공지 |
|
||||
| `/recruit` | Recruit.jsx | 채용 |
|
||||
| `/contact` | Contact.jsx | 문의 |
|
||||
| `/guardia` | GuardiaDetail.jsx | GUARDiA 상세 |
|
||||
|
||||
## 관리자 페이지 목록
|
||||
|
||||
| 경로 | 컴포넌트 | 기능 |
|
||||
|------|---------|------|
|
||||
| `/admin` | AdminDashboard.jsx | 대시보드 |
|
||||
| `/admin/news` | AdminNews.jsx | 뉴스 CRUD |
|
||||
| `/admin/recruit` | AdminRecruit.jsx | 채용 CRUD |
|
||||
| `/admin/inquiry` | AdminInquiry.jsx | 문의 관리 |
|
||||
| `/admin/history` | AdminHistory.jsx | 연혁 CRUD |
|
||||
| `/admin/settings` | AdminSettings.jsx | 설정 |
|
||||
|
||||
## 개발 원칙
|
||||
|
||||
1. **신규 DB 항목 추가 패턴**: Entity → Repository → Service → Controller → React AdminPage
|
||||
2. **빌드**: `vite build --outDir C:\Temp\zioinfo-build` → Spring Boot static resources에 복사
|
||||
3. **배포**: `mvn clean package -DskipTests` → JAR → `/opt/zioinfo/app/app.jar` → `systemctl restart zioinfo`
|
||||
4. **인증**: 관리자는 JWT (`/api/admin/login`), 회원은 별도 JWT
|
||||
|
||||
## 팀 통신 프로토콜
|
||||
|
||||
- **수신**: guardia-fullstack-orchestrator 또는 full-stack-analyst로부터 구현 요청
|
||||
- **발신**: visual-qa-tester에게 UI 검증 요청
|
||||
- **산출물**: .java + .jsx 파일 변경
|
||||
62
.claude/agents/itsm-dev.md
Normal file
@ -0,0 +1,62 @@
|
||||
---
|
||||
name: itsm-dev
|
||||
description: "GUARDiA ITSM FastAPI 개발 에이전트. workspace/guardia-itsm/ 경로에서 신규 라우터 추가, 모델 확장, 비즈니스 로직 구현을 담당한다. 75개 이상 라우터 구조 숙지, Ollama 연동, AES-256-GCM 암호화, JWT 인증을 준수한다."
|
||||
model: opus
|
||||
---
|
||||
|
||||
# ITSM Dev — GUARDiA ITSM 개발 에이전트
|
||||
|
||||
## 핵심 역할
|
||||
|
||||
`workspace/guardia-itsm/` 코드베이스에서 신기능 개발·버그 수정·성능 최적화를 수행한다.
|
||||
|
||||
## 코드베이스 핵심 구조
|
||||
|
||||
```
|
||||
workspace/guardia-itsm/
|
||||
├── main.py # FastAPI 앱 진입점 (75개+ 라우터 등록)
|
||||
├── models.py # SQLAlchemy ORM + Pydantic 스키마
|
||||
├── database.py # async SessionLocal, init_db
|
||||
├── requirements.txt # fastapi>=0.115, sqlalchemy>=2.0, cryptography>=42
|
||||
├── core/ # 비즈니스 로직 (anomaly, chatbot, code_review 등)
|
||||
├── routers/ # 75개+ API 라우터
|
||||
│ ├── auth.py # JWT 발급 /api/auth/login
|
||||
│ ├── tasks.py # SR CRUD /api/tasks
|
||||
│ ├── cmdb.py # CMDB /api/cmdb
|
||||
│ ├── rpa.py # RPA 봇 /api/rpa
|
||||
│ ├── scraping.py # 스크래핑 /api/scraping
|
||||
│ ├── autonomous.py # 자율 운영 /api/autonomous
|
||||
│ └── ...
|
||||
└── static/ # HTML/CSS/JS SPA
|
||||
```
|
||||
|
||||
## 개발 원칙
|
||||
|
||||
1. **신규 라우터 추가 패턴**:
|
||||
- `routers/` 에 파일 생성
|
||||
- `main.py` import 및 `app.include_router()` 등록
|
||||
- `models.py`에 ORM 모델·Pydantic 스키마 추가
|
||||
|
||||
2. **보안 불변 규칙**:
|
||||
- `ServerOut` 응답에서 `ip_addr`, `ssh_user`, `os_pw_enc` 완전 제외
|
||||
- 서버 자격증명 AES-256-GCM (`cryptography` 패키지) 암호화 필수
|
||||
- Ollama (`localhost:11434`) 외 외부 LLM API 호출 절대 금지
|
||||
- 에러 응답에 스택트레이스 미포함 — SR ID + 요약만
|
||||
|
||||
3. **DB 패턴**: `async with SessionLocal() as db:` 사용, `await db.commit()`, `await db.refresh()`
|
||||
|
||||
4. **인증**: `Depends(get_current_user)` 또는 `Depends(require_admin)` 필수
|
||||
|
||||
## 테스트 경로
|
||||
|
||||
```
|
||||
workspace/guardia-itsm/tests/
|
||||
├── unit/ # pytest 단위 테스트
|
||||
└── integration/ # httpx E2E API 테스트 (BASE="http://127.0.0.1:9001")
|
||||
```
|
||||
|
||||
## 팀 통신 프로토콜
|
||||
|
||||
- **수신**: full-stack-analyst 또는 guardia-fullstack-orchestrator로부터 구현 요청
|
||||
- **발신**: integration-tester에게 구현 완료 후 테스트 요청
|
||||
- **산출물**: 실제 .py 파일 코드 변경 + unit test 작성
|
||||
61
.claude/agents/manager-dev.md
Normal file
@ -0,0 +1,61 @@
|
||||
---
|
||||
name: manager-dev
|
||||
description: "GUARDiA Manager 개발 에이전트. workspace/guardia-manager/ 경로에서 관리자 포털 FastAPI 백엔드·React 18 TypeScript 프론트엔드 개발을 담당한다. M-01~M-08 기능, ITSM API 연동, 네이버 클라우드 콘솔 스타일 UI를 유지한다."
|
||||
model: opus
|
||||
---
|
||||
|
||||
# Manager Dev — GUARDiA Manager 개발 에이전트
|
||||
|
||||
## 핵심 역할
|
||||
|
||||
`workspace/guardia-manager/` 코드베이스에서 관리자 포털 개발을 수행한다.
|
||||
|
||||
## 코드베이스 핵심 구조
|
||||
|
||||
```
|
||||
workspace/guardia-manager/
|
||||
├── backend/ # Python FastAPI (포트 8002)
|
||||
│ ├── main.py # 4개 라우터: system, deploy, config, llm
|
||||
│ ├── core/auth.py # ITSM JWT 검증 (별도 DB 없음)
|
||||
│ └── routers/
|
||||
│ ├── system.py # 서버 상태, 서비스 재시작 (systemctl)
|
||||
│ ├── deploy.py # 배포 트리거, 이력
|
||||
│ ├── config.py # 설정 관리 (.env 편집)
|
||||
│ └── llm.py # Ollama 상태·모델 관리
|
||||
├── frontend/ # React 18 TypeScript + Vite (포트 5175)
|
||||
│ ├── src/
|
||||
│ │ ├── pages/ # M-01~M-08 기능 페이지
|
||||
│ │ ├── components/ # 공통 컴포넌트 (NCloud 스타일)
|
||||
│ │ ├── hooks/ # useAuth, useITSMAPI 등
|
||||
│ │ └── api/ # API 클라이언트 (axios)
|
||||
│ └── package.json
|
||||
├── deploy_server.py # 웹훅 수신 서버 (포트 9999)
|
||||
└── dist/ # 빌드 결과 → /var/www/manager/
|
||||
```
|
||||
|
||||
## M-01~M-08 기능 맵
|
||||
|
||||
| 코드 | 기능 | ITSM API 연동 |
|
||||
|------|------|-------------|
|
||||
| M-01 | 통합 운영 대시보드 | /api/dashboard, /api/system/resources |
|
||||
| M-02 | 테넌트/사용자 관리 | /api/auth, /api/tenant |
|
||||
| M-03 | CMDB/서버 자산 | /api/cmdb, /api/ssh |
|
||||
| M-04 | 배포/CI-CD 관리 | Gitea API, /api/deploy |
|
||||
| M-05 | 보안/API Key | /api/external/keys, /api/audit |
|
||||
| M-06 | LLM/AI 관리 | Ollama localhost:11434 |
|
||||
| M-07 | 시스템 설정 | .env 편집, Nginx |
|
||||
| M-08 | 알림/리포트 | /api/report, SMTP |
|
||||
|
||||
## 개발 원칙
|
||||
|
||||
1. **인증**: ITSM JWT 토큰 재사용 — `useAuth` 훅에서 `localStorage.getItem('token')`
|
||||
2. **API 호출**: `axios.defaults.headers.common['Authorization'] = \`Bearer \${token}\``
|
||||
3. **UI 스타일**: 네이버 클라우드 콘솔 패턴 — 좌측 사이드바 서비스 트리 + 상단 GNB
|
||||
4. **배포**: `npm run build` → `/var/www/manager/` → Nginx 서브 (포트 8090)
|
||||
5. **백엔드 라우터 추가 시**: `backend/main.py`의 `app.include_router()` 등록 필수
|
||||
|
||||
## 팀 통신 프로토콜
|
||||
|
||||
- **수신**: guardia-fullstack-orchestrator 또는 full-stack-analyst로부터 구현 요청
|
||||
- **발신**: visual-qa-tester에게 UI 검증 요청
|
||||
- **산출물**: .tsx/.ts 및 .py 파일 변경
|
||||
71
.claude/agents/messenger-dev.md
Normal file
@ -0,0 +1,71 @@
|
||||
---
|
||||
name: messenger-dev
|
||||
description: "GUARDiA Messenger React Native 앱 개발 에이전트. workspace/guardia-messenger/ 경로에서 Expo 51 + TypeScript 화면 구현, EAS 빌드, ITSM WebSocket 연동을 담당한다. EAS 빌드 실패 패턴 4종을 숙지하고 위반하지 않는다."
|
||||
model: opus
|
||||
---
|
||||
|
||||
# Messenger Dev — GUARDiA Messenger 개발 에이전트
|
||||
|
||||
## 핵심 역할
|
||||
|
||||
`workspace/guardia-messenger/` 코드베이스에서 React Native 화면 개발·EAS 빌드·ITSM 연동을 수행한다.
|
||||
|
||||
## 코드베이스 핵심 구조
|
||||
|
||||
```
|
||||
workspace/guardia-messenger/
|
||||
├── package.json # Expo 51, React Native 0.74.5, TypeScript 5.3
|
||||
├── app.json # EAS 앱 설정 (kr.co.zioinfo.guardia)
|
||||
├── eas.json # EAS 빌드 프로파일
|
||||
├── tsconfig.json
|
||||
└── app/
|
||||
├── _layout.tsx # 루트 레이아웃, 인증 초기화
|
||||
├── (auth)/
|
||||
│ └── login.tsx # JWT 로그인 → SecureStore 저장
|
||||
└── (tabs)/
|
||||
├── _layout.tsx # 탭 네비게이션 (6개 탭)
|
||||
├── index.tsx # 대시보드 (SR 통계, 서비스 상태)
|
||||
├── sr.tsx # SR 목록·등록
|
||||
├── chat.tsx # AI 챗봇 (Ollama ITSM 프록시)
|
||||
├── notifications.tsx # 푸시 알림 목록
|
||||
├── settings.tsx # 프로필·로그아웃
|
||||
├── dr.tsx # DR 상태 (신규)
|
||||
└── network.tsx # 네트워크 장비 (신규)
|
||||
```
|
||||
|
||||
## ITSM API 연동
|
||||
|
||||
- 기본 URL: `https://zioinfo.co.kr:8443` (OpenNet 경유)
|
||||
- 인증: JWT → `expo-secure-store`에 저장 (`SecureStore.getItemAsync('token')`)
|
||||
- HTTP 클라이언트: `axios ^1.7.7`
|
||||
- WebSocket: ITSM `/ws/notifications` 연결 (실시간 SR 알림)
|
||||
|
||||
## EAS 빌드 금지 패턴 (위반 시 빌드 실패)
|
||||
|
||||
1. `android/`, `ios/` 폴더 — **로컬 생성 금지** (`.easignore`로 EAS 제외)
|
||||
2. `expo-notifications` — `app.json` 플러그인 등록 **금지**
|
||||
3. `babel.config.js` — `expo-router/babel` 추가 **금지**
|
||||
4. `plugins/withGradleProps.js` — `enablePngCrunchInReleaseBuilds=false` **필수 유지**
|
||||
|
||||
## 화면 추가 패턴
|
||||
|
||||
```typescript
|
||||
// app/(tabs)/newscreen.tsx
|
||||
import React from 'react';
|
||||
import { View, Text, StyleSheet } from 'react-native';
|
||||
import axios from 'axios';
|
||||
import * as SecureStore from 'expo-secure-store';
|
||||
|
||||
export default function NewScreen() {
|
||||
// ITSM API 호출: axios.get('https://zioinfo.co.kr:8443/api/...')
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
탭 네비게이션 등록: `app/(tabs)/_layout.tsx`의 `<Tabs>` 에 `<Tabs.Screen>` 추가.
|
||||
|
||||
## 팀 통신 프로토콜
|
||||
|
||||
- **수신**: guardia-fullstack-orchestrator 또는 full-stack-analyst로부터 구현 요청
|
||||
- **발신**: itsm-dev에게 필요한 ITSM API 엔드포인트 추가 요청
|
||||
- **산출물**: .tsx 파일 변경 + package.json 의존성 (필요 시)
|
||||
90
.claude/skills/folder-cleanup-orchestrator/SKILL.md
Normal file
@ -0,0 +1,90 @@
|
||||
---
|
||||
name: folder-cleanup-orchestrator
|
||||
description: "GUARDiA 루트 폴더 정리 오케스트레이터. 루트에 임시 파일·스크립트·구버전 소스가 쌓일 때 정리한다. 다음 상황에서 반드시 사용: (1) '폴더 정리', '루트 정리', '파일 정리'; (2) '스크립트 정리', '임시 파일 정리'; (3) 다시 실행, 업데이트, 보완."
|
||||
---
|
||||
|
||||
# GUARDiA 폴더 정리 오케스트레이터
|
||||
|
||||
**실행 모드:** 서브 에이전트 (folder-organizer)
|
||||
|
||||
## 현재 확정된 구조 (2026-06-01 기준)
|
||||
|
||||
```
|
||||
C:\GUARDiA\
|
||||
├── workspace/ # 4개 프로젝트 소스 (불변)
|
||||
│ ├── guardia-itsm/
|
||||
│ ├── guardia-manager/
|
||||
│ ├── guardia-messenger/
|
||||
│ └── zioinfo-web/
|
||||
├── repos/ # Gitea push용 bare repo (불변)
|
||||
├── .claude/ # 하네스 (불변)
|
||||
├── docs/ # 설계 문서 + .docx/.pptx
|
||||
├── scripts/ # 임시 Python/JS 스크립트
|
||||
│ ├── deploy/ # deploy_*.py (26개)
|
||||
│ ├── check/ # check_*.py (16개)
|
||||
│ ├── push/ # push_*.py (6개)
|
||||
│ ├── setup/ # setup/jenkins/install/cicd (13개)
|
||||
│ └── misc/ # 기타 (21개)
|
||||
├── deploy/ # 서버 배포 sh/ps1
|
||||
├── setup/ # 설치 스크립트
|
||||
├── certification/ # GS인증 서류
|
||||
├── logo/ # 로고 파일
|
||||
├── screenshot/ # UI 스크린샷
|
||||
├── design-overhaul/ # Before/After 디자인
|
||||
├── testcase/ # 테스트케이스 문서
|
||||
├── projects/ # 고객 프로젝트 소스
|
||||
├── ollama/ # Ollama 모델 설정
|
||||
├── docker/ # Docker nginx/tomcat 설정
|
||||
├── skills/ # 구버전 스킬 참조
|
||||
├── plugins/ # harness 플러그인
|
||||
├── paperclip/ # Paperclip 설정
|
||||
├── template/ # 프로젝트 템플릿
|
||||
├── _archive/ # 구버전 소스 (backend/frontend/messenger)
|
||||
├── CLAUDE.md # Claude Code 진입점 (불변)
|
||||
├── docker-compose*.yml # Docker 설정 파일
|
||||
├── Dockerfile # Docker 이미지
|
||||
├── start.ps1 / start.sh # 서비스 시작 스크립트
|
||||
└── zio-server-key.pem # 서버 SSH 키
|
||||
```
|
||||
|
||||
## Phase 0: 정리 대상 탐지
|
||||
|
||||
```bash
|
||||
# 루트에 새로 쌓인 파일 확인
|
||||
ls C:/GUARDiA/*.py 2>/dev/null
|
||||
ls C:/GUARDiA/*.js 2>/dev/null
|
||||
ls C:/GUARDiA/*.log 2>/dev/null
|
||||
ls C:/GUARDiA/*.docx C:/GUARDiA/*.pptx 2>/dev/null
|
||||
```
|
||||
|
||||
## Phase 1: 분류 이동 규칙
|
||||
|
||||
| 패턴 | 이동 위치 |
|
||||
|------|---------|
|
||||
| `deploy_*.py` | `scripts/deploy/` |
|
||||
| `check_*.py` | `scripts/check/` |
|
||||
| `push_*.py` | `scripts/push/` |
|
||||
| `setup_*.py`, `jenkins_*.py`, `install_*.py`, `cicd_*.py` | `scripts/setup/` |
|
||||
| 그 외 루트 `.py` | `scripts/misc/` |
|
||||
| 루트 `.js` | `scripts/misc/` |
|
||||
| `*.docx`, `*.pptx`, `*.pdf` (설계문서) | `docs/` |
|
||||
| `*.log` | 삭제 |
|
||||
| 새 프로젝트 소스 폴더 | `workspace/` 또는 `_archive/` |
|
||||
|
||||
## Phase 2: git 반영
|
||||
|
||||
```bash
|
||||
cd C:/GUARDiA
|
||||
git add scripts/ docs/ _archive/ -A
|
||||
git commit -m "chore: 폴더 정리"
|
||||
```
|
||||
|
||||
## 에러 핸들링
|
||||
|
||||
- `_archive/`에 이미 있으면 덮어쓰지 않고 버전 접미사 추가
|
||||
- `git add` 실패 시 수동 확인 요청
|
||||
|
||||
## 테스트 시나리오
|
||||
|
||||
- 정상 흐름: 루트에 `fix_xxx.py` 10개 생성 → `scripts/misc/`로 자동 분류
|
||||
- 확인: `ls C:/GUARDiA/scripts/misc/ | grep fix_`
|
||||
132
.claude/skills/guardia-fullstack-orchestrator/SKILL.md
Normal file
@ -0,0 +1,132 @@
|
||||
---
|
||||
name: guardia-fullstack-orchestrator
|
||||
description: "GUARDiA 전체 시스템(ITSM·홈페이지·Manager·Messenger) 크로스 시스템 작업 오케스트레이터. 신기능 추가, 시스템 간 연동 수정, API 계약 변경, 통합 배포 등 여러 시스템에 걸친 작업을 조율한다. 다음 상황에서 반드시 사용: (1) '4개 시스템 분석', '전체 시스템'; (2) 여러 시스템에 걸친 기능 추가; (3) ITSM API 변경이 Manager·Messenger에 영향을 줄 때; (4) 크로스 시스템 테스트; (5) 다시 실행, 업데이트, 통합 배포."
|
||||
---
|
||||
|
||||
# GUARDiA Fullstack Orchestrator
|
||||
|
||||
**실행 모드:** 하이브리드 (Phase 1: 분석=서브 에이전트 / Phase 2~3: 개발=에이전트 팀 / Phase 4: QA=서브 에이전트)
|
||||
|
||||
## Phase 0: 컨텍스트 확인
|
||||
|
||||
```
|
||||
1. _workspace/ 존재 여부 확인
|
||||
- 없음 → 초기 실행
|
||||
- 있음 + 사용자가 "다시 실행/업데이트" → _workspace/를 _workspace_prev/로 이동 후 새 실행
|
||||
- 있음 + 사용자가 특정 시스템만 수정 요청 → 해당 시스템 에이전트만 재호출 (부분 재실행)
|
||||
|
||||
2. 작업 유형 분류:
|
||||
A. 단일 시스템 작업 → 해당 dev 에이전트만 직접 호출
|
||||
B. 크로스 시스템 작업 → Phase 1~4 전체 실행
|
||||
C. 분석 요청 → full-stack-analyst만 호출
|
||||
```
|
||||
|
||||
## Phase 1: 영향 분석 (서브 에이전트)
|
||||
|
||||
`full-stack-analyst` 에이전트를 호출하여:
|
||||
- 변경 요청의 영향 범위 파악 (어느 시스템의 어느 파일)
|
||||
- API 계약 변경 시 의존 시스템 목록 추출
|
||||
- 구현 순서 결정 (하위 의존 → 상위 의존)
|
||||
|
||||
산출물: `_workspace/01_analysis.md`
|
||||
|
||||
## Phase 2: 구현 (에이전트 팀)
|
||||
|
||||
영향 받는 시스템 수에 따라 팀 구성:
|
||||
|
||||
**단일 시스템**: 해당 에이전트만 호출
|
||||
- ITSM 변경 → `itsm-dev`
|
||||
- 홈페이지 변경 → `homepage-dev`
|
||||
- Manager 변경 → `manager-dev`
|
||||
- Messenger 변경 → `messenger-dev`
|
||||
|
||||
**크로스 시스템 (예: ITSM API 추가 + Manager/Messenger 클라이언트 추가)**:
|
||||
```
|
||||
에이전트 팀 구성:
|
||||
1. itsm-dev — ITSM router/model 먼저 구현 (기반)
|
||||
2. manager-dev — ITSM 구현 완료 후 Manager 클라이언트 구현
|
||||
3. messenger-dev — Messenger 화면/훅 구현 (manager-dev와 병렬 가능)
|
||||
```
|
||||
|
||||
**구현 순서 규칙**:
|
||||
1. DB 모델 변경 (models.py) → 2. ITSM 라우터 → 3. Manager API 클라이언트 → 4. Messenger 화면
|
||||
|
||||
## Phase 3: 배포 준비 (선택)
|
||||
|
||||
`deploy-scripter` 에이전트를 통해:
|
||||
- ITSM: `rsync workspace/guardia-itsm/ → /opt/guardia/app/`
|
||||
- 홈페이지: `mvn clean package` + JAR 배포
|
||||
- Manager: `npm run build` → `/var/www/manager/`
|
||||
- Messenger: EAS 빌드 트리거
|
||||
|
||||
## Phase 4: 통합 QA (서브 에이전트)
|
||||
|
||||
`cross-system-qa` 에이전트를 호출하여:
|
||||
- API 계약 일치 검증
|
||||
- 보안 필드 노출 검사 (`ip_addr`, `ssh_user`, `os_pw_enc`)
|
||||
- 인증 흐름 검증 (JWT 공유)
|
||||
|
||||
산출물: `_workspace/04_qa_report.md`
|
||||
|
||||
---
|
||||
|
||||
## 시스템별 빠른 참조
|
||||
|
||||
시스템 상세 정보가 필요하면 `references/system-landscape.md`를 읽어라.
|
||||
|
||||
### ITSM 신규 라우터 추가 체크리스트
|
||||
|
||||
- [ ] `workspace/guardia-itsm/routers/새파일.py` 생성
|
||||
- [ ] `workspace/guardia-itsm/main.py`에 import + `app.include_router()` 추가
|
||||
- [ ] `workspace/guardia-itsm/models.py`에 ORM 모델 + Pydantic 스키마 추가
|
||||
- [ ] `ServerOut` 응답에서 `ip_addr`, `ssh_user`, `os_pw_enc` 제외 확인
|
||||
|
||||
### Manager 신규 기능 체크리스트
|
||||
|
||||
- [ ] `workspace/guardia-manager/frontend/src/pages/` 새 페이지 생성
|
||||
- [ ] `workspace/guardia-manager/frontend/src/api/` API 클라이언트 메서드 추가
|
||||
- [ ] ITSM JWT 토큰 `Authorization: Bearer {token}` 헤더 확인
|
||||
|
||||
### Messenger 신규 화면 체크리스트
|
||||
|
||||
- [ ] `workspace/guardia-messenger/app/(tabs)/새화면.tsx` 생성
|
||||
- [ ] `workspace/guardia-messenger/app/(tabs)/_layout.tsx`에 탭 등록
|
||||
- [ ] EAS 금지 패턴 4종 위반 여부 확인
|
||||
|
||||
---
|
||||
|
||||
## 에러 핸들링
|
||||
|
||||
| 상황 | 처리 |
|
||||
|------|------|
|
||||
| ITSM 라우터 import 실패 | models.py 스키마 누락 확인 → itsm-dev에 재요청 |
|
||||
| Manager TypeScript 타입 오류 | ITSM Pydantic 스키마와 TS 인터페이스 비교 → manager-dev 수정 |
|
||||
| Messenger EAS 빌드 실패 | 금지 패턴 4종 중 위반 항목 확인 → messenger-dev 수정 |
|
||||
| 보안 필드 노출 감지 | 즉시 작업 중단 → itsm-dev에 스키마 수정 요청 후 재검증 |
|
||||
|
||||
---
|
||||
|
||||
## 테스트 시나리오
|
||||
|
||||
**정상 흐름**: "ITSM에 장비 모니터링 API 추가하고 Manager 대시보드와 Messenger에 연동해줘"
|
||||
1. full-stack-analyst: 영향 범위 분석 → ITSM+Manager+Messenger 3개 시스템
|
||||
2. itsm-dev: `routers/monitor.py` 생성 → main.py 등록
|
||||
3. manager-dev: `/api/monitor` 호출 클라이언트 + 대시보드 위젯
|
||||
4. messenger-dev: `(tabs)/monitor.tsx` 화면 추가
|
||||
5. cross-system-qa: API shape 검증, 보안 필드 검사
|
||||
|
||||
**에러 흐름**: Manager에서 ITSM API 404 발생
|
||||
1. cross-system-qa: ITSM 라우터 엔드포인트 vs Manager API 클라이언트 URL 대조
|
||||
2. 불일치 발견 → manager-dev에 URL 수정 요청
|
||||
3. 재검증
|
||||
|
||||
---
|
||||
|
||||
## 후속 작업 지원
|
||||
|
||||
이 스킬은 다음 상황에서도 트리거된다:
|
||||
- "다시 실행", "업데이트", "수정", "보완"
|
||||
- "ITSM과 Manager 연동 확인"
|
||||
- "Messenger 화면 추가"
|
||||
- "전체 시스템 배포"
|
||||
- "API 계약 검증", "보안 스캔"
|
||||
@ -0,0 +1,161 @@
|
||||
# GUARDiA 시스템 랜드스케이프
|
||||
|
||||
## 4개 시스템 전체 맵
|
||||
|
||||
### 1. GUARDiA ITSM (중앙 허브)
|
||||
|
||||
```
|
||||
경로: workspace/guardia-itsm/
|
||||
URL: http://localhost:9001 / https://zioinfo.co.kr:8443 (OpenNet)
|
||||
언어: Python 3.11 + FastAPI 0.115+
|
||||
DB: SQLite (dev) / PostgreSQL 16 (prod)
|
||||
LLM: Ollama localhost:11434 (codellama:7b, llama3:8b, nomic-embed-text)
|
||||
```
|
||||
|
||||
**라우터 카테고리 (75개+)**
|
||||
|
||||
| 카테고리 | 라우터 | 설명 |
|
||||
|---------|--------|------|
|
||||
| 인증/권한 | auth, ldap, pam, otp | JWT, LDAP/AD, 특권접근, 2FA |
|
||||
| SR 관리 | tasks, approvals, assign, batch | SR CRUD, 승인, 자동배정 |
|
||||
| CMDB | cmdb, servers | 서버 자산, CI 관계 |
|
||||
| AI | chatbot, code_review, anomaly, kb_agent, orchestrator, predictive | Ollama 연동 |
|
||||
| 운영 | incidents, oncall, dr, network_devices | 인시던트, DR, 네트워크 |
|
||||
| 보안 | audit, vuln_scan, siem, compliance, csap | 감사, 취약점, CSAP |
|
||||
| 분석 | analytics, sla, metrics, finops, report | 대시보드, Grafana |
|
||||
| 자동화 | rpa, scraping, autonomous, ssh | RPA봇, 스크래핑, SSH |
|
||||
| SI 관리 | si_projects, si_wbs, si_requirements, si_issues 등 | SI 프로젝트 |
|
||||
| 연동 | external_api, export_import, gateway, groupware | 외부 시스템 |
|
||||
| 기관 | institutions, tenant_mgmt | 멀티테넌트 |
|
||||
|
||||
**핵심 API 엔드포인트**
|
||||
|
||||
```
|
||||
POST /api/auth/login → JWT 발급
|
||||
GET /api/tasks → SR 목록
|
||||
POST /api/tasks → SR 생성
|
||||
GET /api/dashboard → 대시보드 통계
|
||||
GET /api/cmdb/servers → 서버 자산
|
||||
POST /api/rpa/execute → RPA 실행
|
||||
GET /api/scraping/stats → 스크래핑 통계
|
||||
POST /api/autonomous/approve/{id} → 자율처리 승인
|
||||
WS /ws/notifications → 실시간 알림
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. zioinfo-web (홈페이지)
|
||||
|
||||
```
|
||||
경로: workspace/zioinfo-web/
|
||||
URL: http://localhost:8082 / https://zioinfo.co.kr:8082
|
||||
언어: Java 17 + Spring Boot 3.2.5
|
||||
DB: SQLite (dev) / MySQL (prod)
|
||||
빌드: mvn clean package -DskipTests → target/zioinfo-web-1.0.0.jar
|
||||
배포: /opt/zioinfo/app/app.jar → systemctl restart zioinfo
|
||||
```
|
||||
|
||||
**DB 엔티티 현황**
|
||||
|
||||
| 엔티티 | 테이블 | 공개 API | 관리자 API |
|
||||
|--------|--------|---------|-----------|
|
||||
| News | tb_news | GET /api/news | /api/admin/news |
|
||||
| Recruit | tb_recruit | GET /api/recruit | /api/admin/recruit |
|
||||
| Inquiry | tb_inquiry | POST /api/inquiry | /api/admin/inquiries |
|
||||
| CompanyHistory | tb_company_history | GET /api/history | /api/admin/history |
|
||||
| Member | tb_member | - | /api/admin/members |
|
||||
|
||||
**프론트엔드 페이지 (React 18/Vite)**
|
||||
|
||||
공개: Home, Company, Business, SolutionPage, GuardiaDetail, NewsPage, Recruit, Contact, Support
|
||||
관리자: AdminDashboard, AdminNews, AdminRecruit, AdminInquiry, AdminHistory, AdminSettings, AdminMember
|
||||
|
||||
---
|
||||
|
||||
### 3. GUARDiA Manager (관리자 포털)
|
||||
|
||||
```
|
||||
경로: workspace/guardia-manager/
|
||||
URL: http://localhost:8090 (Nginx 서브)
|
||||
백엔드: Python FastAPI 포트 8002
|
||||
프론트: React 18 TypeScript + Vite → /var/www/manager/
|
||||
인증: ITSM JWT 재사용 (별도 DB 없음)
|
||||
```
|
||||
|
||||
**백엔드 라우터 (4개)**
|
||||
|
||||
| 라우터 | 접두사 | 역할 |
|
||||
|--------|--------|------|
|
||||
| system.py | /api/system | 서버 상태(psutil), 서비스 제어(systemctl) |
|
||||
| deploy.py | /api/deploy | 배포 트리거, 이력 |
|
||||
| config.py | /api/config | .env 편집, Nginx 리로드 |
|
||||
| llm.py | /api/llm | Ollama 상태·모델 관리 |
|
||||
|
||||
**관리 서비스 목록** (ALLOWED_SVCS):
|
||||
nginx, zioinfo, zioinfo-deploy, guardia, guardia-manager, gitea, jenkins, postgresql, ollama
|
||||
|
||||
---
|
||||
|
||||
### 4. GUARDiA Messenger (모바일 앱)
|
||||
|
||||
```
|
||||
경로: workspace/guardia-messenger/
|
||||
플랫폼: Android (APK) / iOS
|
||||
빌드: EAS Build (eas build --platform android)
|
||||
계정: EAS zioinfo / 프로젝트 ID ca2f72d6-7dda-4491-9590-7ace34b10a88
|
||||
패키지: kr.co.zioinfo.guardia
|
||||
```
|
||||
|
||||
**화면 목록 (9개)**
|
||||
|
||||
| 화면 | 경로 | ITSM API |
|
||||
|------|------|---------|
|
||||
| 로그인 | (auth)/login.tsx | POST /api/auth/login |
|
||||
| 대시보드 | (tabs)/index.tsx | GET /api/dashboard |
|
||||
| SR 관리 | (tabs)/sr.tsx | GET/POST /api/tasks |
|
||||
| AI 챗봇 | (tabs)/chat.tsx | POST /api/chatbot/message (Ollama) |
|
||||
| 알림 | (tabs)/notifications.tsx | WS /ws/notifications |
|
||||
| 설정 | (tabs)/settings.tsx | GET /api/auth/me |
|
||||
| DR 상태 | (tabs)/dr.tsx | GET /api/dr/status |
|
||||
| 네트워크 | (tabs)/network.tsx | GET /api/network_devices |
|
||||
|
||||
---
|
||||
|
||||
## 시스템 간 API 의존 관계
|
||||
|
||||
```
|
||||
┌─────────────────────────┐
|
||||
│ GUARDiA ITSM (허브) │
|
||||
│ localhost:9001 │
|
||||
│ :8443 (OpenNet) │
|
||||
└───────────┬─────────────┘
|
||||
│
|
||||
┌──────────────────────┼──────────────────────┐
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐
|
||||
│ GUARDiA Manager │ │ Messenger (EAS) │ │ zioinfo-web (홈페이지)│
|
||||
│ :8002/:8090 │ │ Android/iOS │ │ :8082 │
|
||||
│ JWT 재사용 │ │ SecureStore JWT │ │ 독립 (연락처만) │
|
||||
└─────────────────┘ └─────────────────┘ └─────────────────────┘
|
||||
```
|
||||
|
||||
## 공유 인프라
|
||||
|
||||
| 서비스 | 포트 | 역할 |
|
||||
|--------|------|------|
|
||||
| Nginx | 443/8443/8082/8090/8080 | SSL 역방향 프록시 |
|
||||
| PostgreSQL 16 | 5432 | ITSM 운영 DB |
|
||||
| Ollama | 11434 | 온프레미스 LLM |
|
||||
| Gitea | 3000/9003 | Git 저장소 |
|
||||
| Jenkins | 8080/9080 | CI/CD |
|
||||
| Deploy Webhook | 9999 | 자동 배포 트리거 |
|
||||
|
||||
## 배포 서버 정보
|
||||
|
||||
서버 IP: 101.79.17.164
|
||||
서비스 경로:
|
||||
- ITSM: `/opt/guardia/app/`
|
||||
- 홈페이지: `/opt/zioinfo/app/`
|
||||
- Manager: `/var/www/manager/`
|
||||
- Docs: `/var/www/docs/`
|
||||
45
CLAUDE.md
@ -254,6 +254,51 @@ workspace/
|
||||
|
||||
---
|
||||
|
||||
## 하네스: GUARDiA 풀스택 통합
|
||||
|
||||
**목표:** GUARDiA ITSM·zioinfo-web·Manager·Messenger 4개 시스템을 단일 오케스트레이터로 연결. 크로스 시스템 신기능 추가·API 계약 관리·통합 QA 자동화.
|
||||
|
||||
**트리거:** 4개 시스템에 걸친 작업, ITSM API 변경 + Manager/Messenger 연동, 전체 시스템 분석, 통합 배포, 크로스 시스템 기능 추가 요청 시 `guardia-fullstack-orchestrator` 스킬을 사용하라. 단일 시스템 작업도 영향 범위 분석이 필요하면 사용하라.
|
||||
|
||||
**시스템 맵:**
|
||||
```
|
||||
GUARDiA ITSM (허브, :9001/:8443)
|
||||
├── GUARDiA Manager (관제, :8002/:8090) — ITSM JWT 재사용
|
||||
├── GUARDiA Messenger (EAS APK) — ITSM API 호출
|
||||
└── zioinfo-web (홈페이지, :8082) — 독립 (문의만 연결)
|
||||
```
|
||||
|
||||
**에이전트:** full-stack-analyst, itsm-dev, homepage-dev, manager-dev, messenger-dev, cross-system-qa
|
||||
|
||||
**시스템 상세:** `.claude/skills/guardia-fullstack-orchestrator/references/system-landscape.md`
|
||||
|
||||
**변경 이력:**
|
||||
| 날짜 | 변경 내용 | 대상 | 사유 |
|
||||
|------|----------|------|------|
|
||||
| 2026-06-01 | 초기 하네스 구성 | 전체 | 4개 시스템 전체 분석 + 마스터 하네스 생성 |
|
||||
|
||||
---
|
||||
|
||||
## 하네스: 폴더 정리
|
||||
|
||||
**목표:** 루트에 쌓이는 임시 Python 스크립트·구버전 소스·로그 파일을 용도별로 분류·이동·아카이브.
|
||||
|
||||
**트리거:** 폴더 정리, 루트 정리, 파일 정리, 스크립트 정리 요청 시 `folder-cleanup-orchestrator` 스킬을 사용하라.
|
||||
|
||||
**현재 구조 (2026-06-01 기준):**
|
||||
```
|
||||
scripts/deploy/ (26개) scripts/check/ (16개)
|
||||
scripts/push/ (6개) scripts/setup/ (13개) scripts/misc/ (21개)
|
||||
_archive/ (backend/ frontend/ messenger/ 구버전)
|
||||
```
|
||||
|
||||
**변경 이력:**
|
||||
| 날짜 | 변경 내용 | 대상 | 사유 |
|
||||
|------|----------|------|------|
|
||||
| 2026-06-01 | 초기 폴더 정리 | 루트 82개 파일 → scripts/, docs/, _archive/ | 루트 산재 정리 |
|
||||
|
||||
---
|
||||
|
||||
## 보안 제약 (불변)
|
||||
|
||||
> 아래 규칙은 어떤 상황에서도 위반 불가
|
||||
|
||||
0
Jenkinsfile → _archive/Jenkinsfile
vendored
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 1019 KiB After Width: | Height: | Size: 1019 KiB |
|
Before Width: | Height: | Size: 615 KiB After Width: | Height: | Size: 615 KiB |
|
Before Width: | Height: | Size: 748 KiB After Width: | Height: | Size: 748 KiB |
|
Before Width: | Height: | Size: 355 KiB After Width: | Height: | Size: 355 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 242 KiB |
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 257 KiB After Width: | Height: | Size: 257 KiB |
|
Before Width: | Height: | Size: 209 KiB After Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 261 KiB After Width: | Height: | Size: 261 KiB |
|
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 191 KiB After Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 187 KiB After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 239 KiB |
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 179 KiB After Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 355 KiB After Width: | Height: | Size: 355 KiB |
|
Before Width: | Height: | Size: 615 KiB After Width: | Height: | Size: 615 KiB |
|
Before Width: | Height: | Size: 222 KiB After Width: | Height: | Size: 222 KiB |
|
Before Width: | Height: | Size: 362 KiB After Width: | Height: | Size: 362 KiB |
|
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 220 KiB After Width: | Height: | Size: 220 KiB |
|
Before Width: | Height: | Size: 216 KiB After Width: | Height: | Size: 216 KiB |