Commit Graph

74 Commits

Author SHA1 Message Date
DESKTOP-TKLFCPR\ython
f77bb91c0c feat(harness): repo separation harness for Gitea-only workflow
Agents:
- repo-splitter: git subtree split -> C:\GUARDiA\repos\ 독립 repo 생성
- gitea-publisher: Gitea repo 생성 + push + GitHub remote 제거
- cicd-wirer: webhook 4개 + deploy_server.py 업데이트
- doc-updater: CLAUDE.md + 매뉴얼 43번 신규 작성

Skill:
- repo-split-orchestrator: 전체 파이프라인 (Phase 0-4 + 검증 체크리스트)

CLAUDE.md: 하네스 포인터 등록

Target repos:
- zio/zioinfo-web (기존)
- zio/guardia-itsm (기존)
- zio/guardia-manager (신규)
- zio/guardia-messenger (신규)
- zio/guardia-docs (신규, manual/)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 22:30:08 +09:00
DESKTOP-TKLFCPR\ython
e697e0a672 feat(screenshots): Manager dashboard real screenshots + GuardiaDetail update
Manager screenshots (Variant design applied):
- manager_01_login.png: login page
- manager_02_dashboard.png: main dashboard (SR charts, sidebar)
- manager_03_servers.png: server list
- manager_04_scraping.png: scraping bot management
- manager_05_deployments.png: deployment history

GuardiaDetail.jsx:
- Manager section screenshots updated to real captured files
- 07_manager_* -> manager_0N_* (actual filenames)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 21:52:21 +09:00
DESKTOP-TKLFCPR\ython
8171ba9ff9 fix(multi): header logo dark + Manager login JSON + Jenkinsfile manual exclude
Header.jsx:
- logo: zioinfo-logo.png -> zioinfo-logo-dark.png (dark header background)

GuardiaDetail.jsx:
- 12 features (RPA, scraping, DR, CSAP, NL commands added)
- 44 bot commands (vs 19 before)
- Tech stack: Vector DB section added

Jenkinsfile (root + zioinfo-web):
- sparse checkout: exclude manual/ from Jenkins build
- only frontend/ and backend/ checked out

Manager useAuth.ts:
- login: form-encoded -> JSON (ITSM accepts JSON only)

Manuals:
- 41_zio서버_DB_연결정보.md
- 42_zio서버_소프트웨어_구성도.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 21:36:48 +09:00
DESKTOP-TKLFCPR\ython
7c0472b989 feat(guardia-page): update to v2.0 features + manuals + Jenkins exclude
GuardiaDetail.jsx:
- FEATURES: 8 -> 12 (RPA봇, 스크랩핑, DR, CSAP, 자연어명령 추가)
- BOT_COMMANDS: 19 -> 44 (스크랩봇, CI/CD, PMS, 보안, 디자인 명령어 추가)
- TECH_STACK: Vector DB(pgvector/ChromaDB/LangChain), 자동화봇 추가

Jenkinsfile:
- sparse checkout: manual/ 폴더 체크아웃 제외 (배포 대상 아님)
- workspace/zioinfo-web/Jenkinsfile 동일 적용

Manuals:
- manual/41_zio서버_DB_연결정보.md: PostgreSQL/Gitea/Ollama/ChromaDB/SMTP/SSH
- manual/42_zio서버_소프트웨어_구성도.md: 전체 SW 구성도 + 아키텍처

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 21:10:36 +09:00
DESKTOP-TKLFCPR\ython
7c3db88f74 chore: add deploy scripts to gitignore, update assets 2026-05-31 20:46:30 +09:00
DESKTOP-TKLFCPR\ython
bf357b29ff docs(app): update store guide with screenshot paths and regen instructions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 20:42:11 +09:00
DESKTOP-TKLFCPR\ython
32ebe12eaa fix(app): icon 1024x1024 + store screenshots + Variant design
Icons:
- icon.png: 2359x1922 (wrong) -> 1024x1024 square (Expo/iOS requirement)
- adaptive-icon.png: fixed to 1024x1024 transparent foreground

Store Screenshots (8 files):
- Play Store: 1080x1920 (4 screens: login/dashboard/sr/chat)
- App Store 6.7inch: 1290x2796 (4 screens)

Design (Variant colors):
- login: navy #001530 bg, cyan button, logo badge
- dashboard: stat cards with top color bar + icon box
- Config.ts: accent #4f6ef7 -> #00A0C8(cyan)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 20:41:19 +09:00
DESKTOP-TKLFCPR\ython
e47f91b6cf feat(app): Messenger app Variant design applied
Config.ts:
- COLORS: accent #4f6ef7 -> #00A0C8(cyan), primary #003366(navy)
- gnbBg: deeper navy #001530

_layout.tsx:
- TabBar: elevated shadow, cyan active tint, bolder label

index.tsx (Dashboard):
- StatCard: top color bar + icon box (screenshot9 pattern)
- Header: deep navy gradient rounded bottom
- QuickBtn: bg-light card style
- Section: deeper shadow, navy title

login.tsx:
- Background: deep navy #001530
- Card: white + strong shadow
- Button: solid cyan with shadow
- Label: cyan uppercase

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 20:25:47 +09:00
DESKTOP-TKLFCPR\ython
6fffc03074 feat(design): ITSM+Manager Variant style applied
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>
2026-05-31 20:18:22 +09:00
DESKTOP-TKLFCPR\ython
7839d9724c feat(design-harness): GUARDiA ITSM+Manager UI overhaul harness
Agents:
- itsm-ui-refactor: dark theme CSS token overhaul (navy+cyan)
- manager-ui-refactor: light theme React component styling

Skills:
- guardia-design-orchestrator: parallel pipeline orchestrator
- itsm-design-overhaul: style.css token/sidebar/card/button/table guide
- manager-design-overhaul: Sidebar/GNB/StatCard/DataTable/Dashboard guide

Reference: C:/GUARDiA/screenshot (Variant design, #003366/#005A8C/#00A0C8)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 19:50:58 +09:00
DESKTOP-TKLFCPR\ython
e72b0914d8 feat(ci): dark bg logo - text white, logo mark unchanged
- make_dark_logo.py: PIL 이미지 처리 (상단 검정 텍스트 + 하단 진한 파랑 텍스트 → 흰색)
- 로고 마크(파랑/회색 큐브)는 원본 유지
- Company.jsx: 다크 배경용 이미지를 zioinfo-logo-dark.png로 변경 (filter 제거)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 19:45:26 +09:00
DESKTOP-TKLFCPR\ython
b4f9bcfc6b feat(design): Variant UI style applied - layout maintained
Based on Variant ZIO Complete Website design (screenshot1-13):
- tokens.css: color palette (#003366, #005A8C, #00A0C8), Pretendard font, 4px grid
- global.css: section-label-v, section-title-v, v-card, v-stats-section, btn-v-*
- Home.jsx: SVG icons for Business cards, Variant-style section labels, dark navy KPI section
- Common.css: page-hero improved (navy gradient), section labels cyan, sub-nav refined

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 19:18:25 +09:00
DESKTOP-TKLFCPR\ython
df375c83c0 feat(design-harness): UI overhaul harness + /design bot command
Agents:
- ui-scout: Playwright MCP + Variant(variant.com/community) visual capture
- design-system-architect: unified design tokens (CSS vars / RN StyleSheet)
- component-refactor-engineer: per-system component refactoring
- visual-qa-tester: before/after screenshot comparison

Skills:
- ui-overhaul-orchestrator: E2E pipeline (capture->tokens->refactor->QA)
- playwright-visual-capture: Playwright MCP + Variant workflow
- design-token-system: tokens.css with Pretendard, 4px grid, brand colors
- component-refactor: Button/Card/Badge patterns for 4 systems

Bot: /design capture|variant|tokens|homepage|itsm|manager|app|qa|ab

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 18:15:13 +09:00
DESKTOP-TKLFCPR\ython
1d1737f27b feat(harness): homepage CMS harness for DB content management
Agents:
- content-analyst: scan static content, design JPA entities
- content-db-engineer: implement Entity/Repo/Controller/Hook
- admin-ui-builder: implement AdminXxx.jsx + sidebar + routes

Skills:
- homepage-cms-orchestrator: E2E pipeline orchestrator
- content-db-engineer: Spring Boot + React implementation guide
- admin-ui-builder: AdminHistory.jsx pattern reference

CLAUDE.md: homepage project context + harness pointer

Next DB targets: Reference, FAQ, Partner, KpiStat, CeoGreeting, OrgDept

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 18:02:16 +09:00
DESKTOP-TKLFCPR\ython
8d1168f50c feat(history): company history DB management + admin CRUD
- CompanyHistory JPA entity (tb_company_history)
- CompanyHistoryRepository
- GET /api/history: DB-based grouped history (year + items[])
- Admin CRUD: GET/POST/PUT/DELETE /api/admin/history
- DataInitializer: 35 history items seeded from 2000 to 2026
- Company.jsx: useHistory() hook -> API fetch with fallback
- AdminHistory.jsx: year-grouped timeline CRUD UI
- AdminLayout: 회사 연혁 menu added

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 17:52:02 +09:00
DESKTOP-TKLFCPR\ython
1c1411f9cb feat(screenshots): Playwright 실제 화면 캡처 + GuardiaDetail 업데이트
- Playwright 자동화로 ITSM 로그인/대시보드 + 홈페이지 11개 페이지 캡처
- GuardiaDetail.jsx ITSM 섹션: itsm_02_dashboard.png / itsm_01_login.png 적용

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 17:40:02 +09:00
DESKTOP-TKLFCPR\ython
592566440c feat(messenger): natural language command parser (NL Command)
- core/nl_command.py: Ollama LLM + rule-based fallback
- POST /api/messenger/bot/nl: new NL endpoint
- /bot/command: NL fallback when no command matches
- 9/10 rule tests PASS

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 17:07:11 +09:00
DESKTOP-TKLFCPR\ython
57d521e9bf fix(homepage): white screen fix + login message + vibe coding manual
- useMemberAuth: return null to loading spinner
- MemberOnly: add login/register message
- manual/40: vibe coding guide (closed/open network)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 16:55:19 +09:00
DESKTOP-TKLFCPR\ython
4aafbaee41 feat(scraping): 웹 스크랩핑 봇 전체 구현 + 하네스 구성
[하네스]
- 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>
2026-05-31 16:52:49 +09:00
DESKTOP-TKLFCPR\ython
c6b28c1584 feat(rpa): RPA 엔진 개선 — 스키마 필터링·라우터 스캔·영속 저장·크론 연동
[개선 내용]
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>
2026-05-31 16:19:52 +09:00
DESKTOP-TKLFCPR\ython
81d16f77c5 feat(rpa): GUARDiA ITSM RPA 봇 기능 구현 + 하네스 구성
[하네스]
- 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>
2026-05-31 16:10:41 +09:00
DESKTOP-TKLFCPR\ython
918cf0c3bf feat(footer): 푸터 로고 logo_bottom.png 교체
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 15:52:52 +09:00
DESKTOP-TKLFCPR\ython
6b2511f051 feat(logo): 이미지 파일명 영문 변경 + 서버 직접 배포 완료
- 지오정보기술로고.png → zioinfo-logo.png
- 지오정보기술사옥전경.png → zioinfo-building.png
- Header/Footer/Company.jsx 참조 경로 영문 수정
- SFTP 직접 배포로 서버 반영 완료

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 15:51:02 +09:00
DESKTOP-TKLFCPR\ython
a613e53a19 chore: manual/*.md 및 *.md 파일 git 예외처리 (CLAUDE.md 제외)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 15:34:59 +09:00
DESKTOP-TKLFCPR\ython
22259543f4 chore: node_modules git 추적 제거 + .gitignore 추가
- .gitignore에 node_modules/ 추가
- git rm --cached로 3000+ node_modules 파일 추적 제거
- 이후 Gitea push 크기 정상화, 자동 배포 정상화

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 15:11:21 +09:00
DESKTOP-TKLFCPR\ython
a60d9465d6 merge: Gitea admin system 커밋 통합 2026-05-31 14:57:31 +09:00
DESKTOP-TKLFCPR\ython
49a94d868d feat(contact): 연락처 정보 수정 + 푸터/헤더 실제 로고 이미지 적용
- Contact.jsx: 대표전화 02-000-0000 → 031-483-1766, 주소 서울특별시 → 경기도 안산시 단원구 광덕4로 220 오피스브이 578호
- Footer.jsx: logo-white.png → 지오정보기술로고.png (화이트 필터 적용)
- 빌드 결과물 갱신 (Contact·Footer·CI 페이지 반영)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 14:54:43 +09:00
DESKTOP-TKLFCPR\ython
df81d21938 feat(ci): CI 소개 페이지 실제 로고 이미지 적용 + 헤더 로고 교체
- CI.jpg 심볼 + 지오정보기술로고.png 메인 로고 실이미지 표시
- 디자인 콘셉트·색상 체계·경영철학 신규 내용으로 전면 개편
- Header.jsx: logo.png → 지오정보기술로고.png (fallback: ziologo.png)
- CEO 인사말: 아바타 플레이스홀더 → 사옥전경.png 원형 이미지 교체
- 빌드 결과물 반영 (backend/static 갱신)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 13:37:05 +09:00
DESKTOP-TKLFCPR\ython
27e46ba535 feat(autonomous): 자율 운영 자동처리 + 승인 게이트 시스템 구현
## 자동처리 엔진 (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>
2026-05-31 13:03:41 +09:00
DESKTOP-TKLFCPR\ython
a4a5d352b8 feat(bot): CI/CD 파이프라인 봇 명령어 4개 추가
## 신규 명령어
- /cicd [project]                  Jenkins + Gitea 전체 CI/CD 현황
- /jenkins <job> [build|status|log] Jenkins 빌드 트리거·상태·로그 조회
- /git <repo> [log|pr|branch]      Gitea 저장소 커밋·PR·브랜치 조회
- /release <project> [version]     릴리즈 배포 파이프라인 트리거

## 백엔드 헬퍼 함수
- _cmd_cicd_status()     Jenkins + Gitea 통합 현황
- _cmd_jenkins_status()  Jenkins 잡 상태/로그
- _cmd_jenkins_trigger() Jenkins 빌드 트리거 (백그라운드)
- _cmd_gitea_status()    Gitea 커밋/PR/브랜치 조회
- _cmd_release()         릴리즈 파이프라인 실행

## 환경변수
- JENKINS_API_TOKEN: Jenkins API 토큰 (Jenkins 초기 설정 후 발급)
- GITEA_API_TOKEN:   발급 완료 (ce25405940c3...)

## 테스트 결과
- /git guardia-itsm log      최근 커밋 조회
- /git guardia-itsm branch   브랜치 목록
- /cicd                      Gitea 정상, Jenkins 토큰 대기
- /jenkins                   Jenkins 초기 설정 완료 후 정상화

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:51:13 +09:00
DESKTOP-TKLFCPR\ython
97f532e64f feat(seo): 홈페이지 SEO 최적화 — 메타태그·sitemap.xml·robots.txt
## index.html (기반 메타태그)
- title: 풀네임 + 키워드 포함
- description: 160자 최적화
- keywords: 지오정보기술·GUARDiA·공공기관IT·안산IT기업 등
- og:type/title/description/url/image/locale
- twitter:card/title/description/image
- JSON-LD: Organization (주소·전화·대표자) + WebSite 스키마
- 네이버/구글 서치콘솔 인증 주석 준비

## public/sitemap.xml (26개 URL)
- priority: 홈 1.0, GUARDiA 0.9, 오시는길·문의 0.8
- changefreq: 뉴스/공지 weekly, 솔루션 monthly, 약관 yearly

## public/robots.txt
- Googlebot/Yeti(네이버) Allow, Baiduspider Disallow
- /admin/ /api/ Disallow
- Sitemap 경로 명시

## hooks/useSeoMeta.js
- 페이지별 title/description/og/twitter/canonical 동적 업데이트

## 적용 페이지 (6개)
- Home: AI 인프라 자율 운영 키워드
- GuardiaDetail: GUARDiA ITSM 상세 설명
- Company>Greeting: CEO 인사말·홍영택
- Company>Location: 안산 주소·전화번호
- Privacy/Terms/Sitemap: 각 페이지 설명

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:39:46 +09:00
DESKTOP-TKLFCPR\ython
f24a5818dd feat(homepage): 개인정보처리방침·이용약관·사이트맵 페이지 추가
- Privacy.jsx: 개인정보처리방침 (수집항목/목적/보유기간/권리/책임자)
- Terms.jsx: 이용약관 (10개 조항, 지오정보기술 정보 포함)
- Sitemap.jsx: 전체 메뉴 그리드 안내 (9개 섹션)
- App.jsx: /privacy, /terms, /sitemap 라우트 등록
- Common.css: prose/policy 스타일 추가

URL:
  https://zioinfo.co.kr/privacy
  https://zioinfo.co.kr/terms
  https://zioinfo.co.kr/sitemap

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:31:38 +09:00
DESKTOP-TKLFCPR\ython
012b963a13 feat(homepage): GUARDiA 모바일 앱 목업 스크린샷 5장 생성 + 앱 탭 추가
- Playwright headless로 HTML 목업 → PNG 스크린샷 변환
  11_app_home.png    홈 대시보드 (SR·서버 실시간 현황)
  12_app_sr.png      SR 서비스 요청 목록
  13_app_chat.png    AI 챗봇 (Ollama 연동)
  14_app_dr.png      DR 재해복구 RTO/RPO 모니터링
  15_app_network.png 네트워크 장비 백업 현황

- GuardiaDetail.jsx: '모바일 앱' 탭 신규 추가
  5장 목업 5열 그리드 (390x844 세로 비율)
  Google Play / App Store 다운로드 배지

- GuardiaDetail.css: 모바일 스크린샷 5열 그리드 스타일

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:27:48 +09:00
DESKTOP-TKLFCPR\ython
c046e173c9 feat(homepage): GUARDiA 소개 화면 실제 스크린샷 업데이트
- Playwright headless 촬영으로 실제 배포 화면 스크린샷 10장 캡쳐
  ITSM: 대시보드/SR목록/인시던트/AI에이전트/라이선스 (5장)
  Manager: 대시보드/DR관제/네트워크장비/CSAP점검 (4장)
  Messenger: 모바일 앱 화면 (1장)

- GuardiaDetail.jsx: 3개 섹션으로 분리 표시
  - GUARDiA ITSM 5장 (3열 그리드)
  - GUARDiA Manager 4장 (2열 그리드)
  - GUARDiA Messenger 모바일 앱 (세로 비율)

- 탭 메뉴: 'Manager' 탭 신규 추가 (4장 2열 뷰)
- GuardiaDetail.css: 모바일 앱 세로 스크린샷 스타일 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:16:09 +09:00
DESKTOP-TKLFCPR\ython
524235e8fe feat(homepage): 회원가입·로그인·SNS 로그인 + 관리자 회원관리
## 홈페이지 (프론트엔드)
- MemberLogin.jsx: 회원가입/로그인 통합 페이지 + 카카오·네이버·구글 SNS 버튼
- MemberAuth.css: 인증 페이지 공통 스타일
- hooks/useMemberAuth.jsx: 회원 인증 상태 훅 + MemberOnly 컴포넌트 (회원 전용 잠금)
- Header.jsx: 로그인/회원가입 버튼 + 로그인 시 이름/로그아웃 표시
- Contact.jsx: 문의 상담 신청 → 회원 전용 (MemberOnly 적용)
- App.jsx: /login, /register 라우트 추가

## 관리자 (Admin)
- AdminMember.jsx: 회원 목록/검색/상태변경/삭제 페이지
- AdminLayout.jsx: '회원 관리' 메뉴 추가
- App.jsx: /admin/members 라우트 추가

## 백엔드 (Spring Boot)
- Member.java: 회원 엔티티 (id/name/email/password/phone/company/role/active)
- MemberRepository.java: 이메일 조회·중복확인·키워드 검색
- MemberController.java: 회원가입·이메일 중복확인·로그인·SNS 로그인·내 정보 CRUD
- AdminController.java: 회원관리 API (목록/상세/상태변경/삭제) + 대시보드에 회원 수 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 11:49:21 +09:00
DESKTOP-TKLFCPR\ython
33da17199a feat(homepage): 회사 정보 업데이트 + 네이버 지도 연동
회사 정보 변경:
- 대표이사: 홍영택
- 전화: 031-483-1766
- 주소: 경기도 안산시 단원구 광덕4로 220 오피스브이 578호

적용 파일:
- Footer.jsx: 전화/주소 업데이트
- Company.jsx: CEO 인사말 대표이사명, 오시는 길 주소/전화/교통 안내
- Company.jsx: 지도 → 네이버 지도 iframe 연동
- Support.jsx: 고객지원 전화번호 전체 변경

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 11:16:37 +09:00
DESKTOP-TKLFCPR\ython
ecc221b20e docs: 전 서비스 HTTPS 확인 완료 + Jenkins 초기키 기재
- 6개 서비스 전체 HTTP 200 확인 (443/8001/8090/8443/3000/8080)
- Jenkins 초기 관리자 비밀번호 매뉴얼에 기재
- Jenkins URL http→https 수정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 11:05:41 +09:00
DESKTOP-TKLFCPR\ython
f4222e6b22 feat(https): 전 서비스 HTTPS 전환 완료 (Let's Encrypt)
Nginx SSL 프록시로 모든 서비스에 공인 인증서 적용:
- 8001 (ITSM): uvicorn 9001 → Nginx SSL 8001
- 8090 (Manager): Nginx SSL 8090
- 8443 (개방망): Nginx SSL 8443 → 9001
- 3000 (Gitea): gitea 9003 → Nginx SSL 3000
- 8080 (Jenkins): jenkins 9080 → Nginx SSL 8080

모든 엔드포인트 HTTP 200 확인 완료

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 10:56:33 +09:00
DESKTOP-TKLFCPR\ython
49ac7c3976 docs: 방화벽 정리 + 운영가이드 업데이트 (ufw 12개 → 정제)
- ufw 불필요 규칙 8개 제거 (8088/9001/8082/8002/995/143/110/3001)
- 최종 ufw 12개 규칙으로 정리
- 접속 URL https://zioinfo.co.kr 업데이트
- Manager/개방망 URL 추가
- SSL 인증서 및 방화벽 정책 섹션 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 10:41:50 +09:00
DESKTOP-TKLFCPR\ython
11c670f2a0 refactor: 101.79.17.164 → zioinfo.co.kr 전체 도메인 변환 + Manager UI 배포
- 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>
2026-05-31 10:09:17 +09:00
DESKTOP-TKLFCPR\ython
8fbb64a12a feat(ui): Manager DR·네트워크·CSAP 관제 + Messenger DR·네트워크 화면 구현
## GUARDiA Manager (frontend)
- pages/DrConsole.tsx — DR 재해복구 관제 (시나리오/RTO-RPO/테스트 실행)
- pages/NetworkConsole.tsx — 네트워크 장비 관제 (백업/diff/상태)
- pages/CsapConsole.tsx — CSAP 준수율 대시보드 (점검/Excel 다운로드)
- App.tsx — 3개 라우트 추가 (/dr, /network, /csap)
- Sidebar.tsx — '운영 관제' 그룹 메뉴 추가
- AppLayout.tsx — 페이지 타이틀 3개 추가

## GUARDiA Messenger (React Native)
- app/(tabs)/dr.tsx — DR 모니터링 화면 (M-01)
- app/(tabs)/network.tsx — 네트워크 장비 현황 화면 (M-02)
- app/(tabs)/_layout.tsx — DR·네트워크 탭 추가
- services/api.ts — DR/네트워크/CSAP API 함수 추가
- hooks/useBiometric.ts — 생체인증 훅 (M-03)
- hooks/useOfflineCache.ts — 오프라인 캐시 훅 (M-04)

## 매뉴얼
- 16_API_명세서.md — v2.2.0 업데이트
- 39_DR_네트워크장비_CSAP_운영가이드.md — Manager/Messenger UI 연동 현황 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 09:53:17 +09:00
DESKTOP-TKLFCPR\ython
b217d101f0 feat(harness): Messenger·Manager·ITSM 하네스 확장 + 추가 개발 제안서 3종
## Messenger 하네스 확장
- agents/feature-developer.md — 신규 기능 화면 개발 전문 에이전트
  (DR·네트워크·CSAP·생체인증·오프라인·Kanban·다크모드·멀티기관·인시던트·실시간)
- skills/new-features/SKILL.md — 10가지 신규 기능 React Native 구현 가이드
- messenger-orchestrator description 확장 (신규 기능 트리거 추가)

## Manager 하네스 확장
- agents/roadmap-planner.md — Manager 추가 개발 기획 전문 에이전트
- skills/manager-roadmap/SKILL.md — MG-01~MG-09 페이지 구현 가이드
- manager-orchestrator description 확장 (로드맵/MG 트리거 추가)

## ITSM 하네스 확장
- agents/roadmap-planner.md — ITSM 추가 개발 기획 에이전트
- skills/itsm-roadmap/SKILL.md — I-01~I-10 기능 제안 카탈로그

## 추가 개발 제안서 3종 (docs/)
- MESSENGER_NEXT_FEATURES.md — 모바일 신규 기능 10종 (M-01~M-10)
- ITSM_NEXT_FEATURES.md — ITSM 신규 기능 10종 (I-01~I-10)
- MANAGER_NEXT_FEATURES.md — Manager 신규 페이지 9종 (MG-01~MG-09)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 09:44:52 +09:00
DESKTOP-TKLFCPR\ython
fc756a493e feat(itsm): DR 자동화 · 네트워크 장비 관리 · CSAP 자동 점검 3종 추가
## 구현 내용

### DR 자동화 (routers/dr.py, core/dr_engine.py)
- DR 시나리오 등록/관리 (SERVER_FAILURE | SITE_FAILURE | DATA_CORRUPTION)
- 복구 테스트 자동화 (SSH 기반 단계별 실행 + 헬스체크)
- 백업 무결성 검증 (SSH → SHA-256 해시 검증)
- RTO/RPO 목표 대비 실적 대시보드
- Failover 실행 API (ADMIN 전용)

### 네트워크 장비 관리 (routers/network_devices.py, core/network_scanner.py)
- 스위치/라우터/방화벽/L4 장비 인벤토리 (CRUD)
- 벤더별 SSH 설정 백업 (Cisco IOS / Huawei VRP / Junos / Linux)
- 이전 백업과 unified diff 변경 감지
- 위험 명령어 차단 (write erase, factory-reset 등)
- 토폴로지 조회 API

### CSAP 공공기관 보안 자동 점검 (routers/compliance.py 확장, core/csap_checker.py)
- CSAP/ISMS-P 기반 25개 항목 자동 점검
- 기술적/운영 보안 자동 검증 (SSH, DB 직접 확인)
- 수동 항목 증적 업로드
- Excel/HTML 보고서 자동 생성
- 기관별 준수율 대시보드 (A~D 등급)

### DB 모델 추가 (models.py)
- DRScenario, DRTest
- NetworkDevice, NetworkConfigBackup
- CSAPCheckResult

### 하네스 확장
- 에이전트: dr-coordinator, network-guardian, csap-auditor
- 스킬: dr-automation, network-devices, csap-compliance
- guardia-orchestrator description에 DR/네트워크/CSAP 트리거 추가

### 매뉴얼
- 39_DR_네트워크장비_CSAP_운영가이드.md 신규 작성
- 16_API_명세서.md v2.1.0 업데이트 (617개 라우트, 섹션 21~23 추가)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 09:24:51 +09:00
ZioCI
d46843bf26 feat: admin system 2026-05-30 18:41:49 +09:00
DESKTOP-TKLFCPR\ython
bc278ff1f2 feat(admin): 홈페이지 관리자 시스템 구현
- Spring Security + JWT 인증 (8시간 토큰)
- AdminUser / Recruit 엔터티 추가
- AdminController: 로그인, 대시보드, 뉴스/문의/채용 CRUD
- React 어드민 SPA: /admin/* 라우트 (Header/Footer 없음)
  - 로그인, 대시보드, 뉴스 관리, 문의 관리, 채용공고 관리, 설정
- Jenkinsfile: 서버 환경 맞춤 CI/CD 파이프라인
- .gitignore 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 18:40:24 +09:00
DESKTOP-TKLFCPR\ython
6ad7a158c8 feat(cert): 프로그램 등록 신청서 3종 DOCX + 저작권 등록용 소스코드
[DOCX 3종 생성 (UTF-8, 편집 가능)]
- 01_소프트웨어_저작권_등록_신청서.docx  (37KB)
  한국저작권위원회 제출용 / 맑은 고딕 / 색상 섹션
- 02_소프트웨어사업자_신고서.docx         (37KB)
  과학기술정보통신부/KOSA 제출용
- 03_조달청_나라장터_물품_등록_신청서.docx (38KB)
  공공기관 납품용 나라장터 등록

[generate_docx.py 특징]
- python-docx 기반 (한글 UTF-8 완전 지원)
- 검정 박스 없음 (맑은 고딕 직접 적용)
- 편집 가능: Word / 한글(HWP) / LibreOffice
- 섹션별 색상 배너 (파란/빨간/주황 테마)
- 서명란, 첨부서류, 수수료 안내 포함

[certification/source/ 저작권 등록용 소스코드]
- 01_core_ssh_agentless.py  (450줄) - 에이전트리스 SSH 핵심
- 02_core_license_engine.py (455줄) - AES-256-GCM 라이선스
- 03_router_sr_management.py(501줄) - SR 관리 API
- 04_core_ai_classifier.py  (90줄)  - AI 티켓 분류
- 05_frontend_dashboard.js  (200줄) - 대시보드 프론트
- README.md - 제출 안내 및 독창성 설명
- 모든 파일: 영업비밀(암호화키) 마스킹 처리

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 12:33:29 +09:00
DESKTOP-TKLFCPR\ython
5005078b3e feat(cert): 프로그램 등록 신청서 통합 PDF 생성 (4페이지, 3종 신청서) 2026-05-30 10:25:19 +09:00
DESKTOP-TKLFCPR\ython
0854a0fea2 feat(certification): GS인증 신청서 PDF 자동 생성
certification/generate_pdf.py: reportlab 기반 한글 PDF 생성기
  - 맑은고딕(malgun.ttf) 자동 탐색 + 등록
  - 7개 섹션 구성:
    1. 신청자 정보 (회사명, 대표자, 사업자번호 등)
    2. 소프트웨어 정보 (제품명, 버전, 등급, 분류)
    3. 제품 개요 (설명문, 핵심기능 5개, 지원환경)
    4. 시험 요청 항목 (ISO/IEC 25010 8개 품질특성)
    5. 제출 서류 목록 (11개 필수/선택)
    6. 예상 수수료 (650만원)
    7. 서약 및 서명란

산출물: GS인증_신청서_GUARDiA_ITSM_v2.0.pdf (118.8 KB)
  - A4 용지, 2페이지
  - 네이비 테마 디자인
  - 페이지 번호 + 회사명 푸터
  - 바로 출력/제출 가능

실행: cd certification && python3 generate_pdf.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 10:21:19 +09:00
DESKTOP-TKLFCPR\ython
7373d74204 feat(certification): GS인증 신청서 및 부가서류 완성 (바로 신청 가능)
[신청서 및 서류 (certification/)]
02_프로그램등록/GS인증_신청서.md
  - 신청자/제품 정보 모두 기입
  - 시험 요청 항목 8개 품질특성 전체 선택
  - 제출 서류 체크리스트 + 수수료 안내

04_기술문서/제품_기능_명세서.md
  - 기능 코드별 전체 목록 (SR-001~008, INC-001~005, DEP-001~006 등)
  - 시스템 아키텍처 개요
  - 성능 기준 및 측정값
  - 제한 사항 명시

04_기술문서/사용자_매뉴얼_개요.md
  - 설치/최초로그인/주요화면/관리자기능/제거 설명
  - GS인증 사용성 요구사항 충족

04_기술문서/보안_설계서.md
  - 인증/인가 설계 (JWT+RBAC+MFA)
  - 암호화 설계 (AES-256-GCM, bcrypt, TLS)
  - 보안 정책 (금지사항, 입력값검증, Rate Limiting)
  - 개인정보보호법 준수 항목

01_사전준비/제품개요서.md
  - 저작권 등록용 제품 설명
  - 기술 특허, 수상 현황

06_제출서류/저작권등록_신청서_가이드.md
  - 한국저작권위원회 제출 항목 입력값 완성
  - 저작물 설명서 (제출 그대로 사용 가능)

07_심사대응/예상_질문_답변.md
  - TTA 심사관 예상 9개 질문 + 완성된 답변
  - 기능적합성/보안성/사용성/이식성/신뢰성별

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 10:14:35 +09:00
DESKTOP-TKLFCPR\ython
df218a3f9b feat(gs-cert): GS인증 7개 필수 개선 구현 완료
[필수-1] 언인스톨 스크립트 (이식성 > 설치성)
- setup/uninstall.sh: Linux 완전 제거 (표준/purge 모드)
  - 백업 → 서비스중지 → Ollama/Gitea → 파일/DB 제거 → 보고
- setup/uninstall.ps1: Windows 완전 제거 (NSSM 서비스 제거)
  - -Purge -NoBackup -KeepJava -KeepDb 파라미터

[필수-2] 화면별 도움말 시스템 (사용성)
- static/help.js: 7개 화면 도움말 DB + F1/? 버튼 자동 삽입
  - 팝업: 아이콘+제목+내용+주제별 네비게이션
  - 키보드: F1(열기), ESC(닫기)
  - 검색: 도움말 전체 텍스트 검색

[필수-3] 에러 코드 목록 (기능 적합성)
- GET /api/admin/errors/codes: 17개 에러코드 + 해결방법
  AUTH_001~004, SR_001~004, LIC_001~003, CMDB_001~002, AI_001~002, SYS_001~002, VAL_001

[필수-4] 웹 접근성 개선 (사용성)
- --text-muted: #64748b(3.1:1) → #94a3b8(4.7:1) 색상 대비 개선
- :focus-visible 규칙 추가 (키보드 포커스 표시)
- 마우스 클릭 시 포커스 링 숨김 (UX 개선)

[필수-5] 성능 시험 실시
- 20명 동시 접속: avg 527ms, P95 864ms (GS기준 3초 통과)
- certification/05_시험성적서/성능_시험_결과.md 작성

[필수-6] 백업/복구 API (신뢰성 > 복구성)
- POST /api/admin/backup: DB+.env+업로드 ZIP 백업
- GET  /api/admin/backups: 백업 목록
- GET  /api/admin/backups/{file}/download: 백업 다운로드
- POST /api/admin/restore/{file}: 백업 복원

[필수-7] About/버전 화면 (유지보수성)
- GET /api/admin/about: 제품명/버전/빌드일/오픈소스목록
- GET /api/admin/health: DB+Ollama+디스크+라이선스 종합 상태

예상 GS 1등급 점수: 93점 / 100점

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 10:10:39 +09:00