제조기업 운영 지원 AI 플랫폼 – 로컬 우선(Local-First) 아키텍처로 민감한 데이터를 보호하면서, MES/QMS/PMS/SAP ERP 시스템의 에러 진단과 운영 워크플로우를 AI로 지원합니다.
궁극적 비전: 제조기업 현업 운영자가 시스템 에러를 AI 기반으로 자가 진단하고, 코드/이메일/문서를 통합 분석하여 운영 업무를 지원하는 Knowledge Hub 플랫폼
- OpenAI: GPT-4.1, GPT-4.1 Mini, GPT-4o, o4-mini
- Anthropic: Claude Sonnet 4.6, Claude Opus 4.6, Claude Haiku 4.5
- Google: Gemini 2.5 Flash, Gemini 2.5 Pro
- 프로바이더 선택, API 키 관리, 세션 저장
- 텍스트 기반 CBO(Custom Business Object) 변경 분석
- 규칙 기반 + LLM 강화 분석
.txt,.md형식 지원- 위험도 평가 및 개선 권고
| 모드 | 특징 | 용도 |
|---|---|---|
| Secure Local | 외부 전송 차단, 로컬 규칙 분석만 | 최대 보안 필요 환경 |
| Reference | 공개 지식만 외부 API 호출 | 표준 SAP 지식 질의 |
| Hybrid Approved | 승인된 요약본만 전송 | 기업 정책 준수 |
| 팩 | 주요 T-Code | 용도 |
|---|---|---|
| Ops Pack | ST22, SM21, ST03N, STMS, SE03 | SAP 운영, 시스템 관리 |
| Functional | VL01N, ME21N, VF01, FC00 | 업무 프로세스 지원 |
| CBO Maintenance | SE80, SE91 | 커스터마이징 분석 |
| PI Integration | SXMB_MONI, ID_OWNR | PI/PO, Cloud Integration |
| BTP/RAP/CAP | ADT, SBPA | SAP BTP, 모던 개발 |
- 기밀(Confidential) / 참고(Reference) 분류
- 소스 관리 및 버전 관리
- 정책 기반 접근 제어
- 채팅 이력 저장 및 복구
- 할 일(Todo) 상태, 라벨, 플래그
- 세션 아카이빙
- 모든 상호작용 로깅
- 정책 엔진 기반 규칙 집행
- 외부 전송 승인 흐름
- Model Context Protocol 지원
- 확장 가능한 도구 생태계
- SAP 트랜잭션별 컨텍스트 인식
- 도메인별 프롬프트 최적화
- GitHub REST API 연동: git CLI 없이 코드 파일 인덱싱 (PAT 인증)
- SHA 기반 변경 감지: 증분 동기화로 변경된 파일만 업데이트
- AI 코드 분석: 인덱싱된 소스를 LLM 컨텍스트로 활용, 에러 자가 진단 지원
- 18개 언어 지원: TypeScript, Python, Java, Go, ABAP 등
- 파일 크기 제한: 512KB/파일, 최대 500파일/리포지토리
- 다중 프로바이더: Gmail (MCP 브릿지), Outlook (Graph API)
- 수동 이메일 임포트: .eml 파일 또는 텍스트 붙여넣기
- AI 이메일 분석: SAP 메타데이터 추출 (T-Code, 에러 코드, 시스템 ID)
- 이메일 → 마감 플랜: 분석 결과로 자동 액션 플랜 생성
- 4대 프로바이더: OpenAI, Anthropic, Google, Microsoft
- PKCE 보안: 코드 챌린지/검증 기반 OAuth 2.0
- GitHub Device Code: Copilot 연동용 디바이스 코드 플로우
- 시스템 키체인 + AES-256 Fallback: keytar → 파일 암호화 이중 보호
- 소스 단위/파일 단위: 전체 리포지토리 또는 개별 파일 분석
- 진행률 추적: 실시간 분석 진행 상태 IPC 이벤트
- 분석 이력 관리: 분석 결과 SQLite 저장 + 조회
- Logger Redaction: API 키, 토큰, Authorization 헤더 자동 마스킹 (pino)
- BrowserWindow 명시 보안: contextIsolation, sandbox, nodeIntegration 명시 선언
- SecureStore AES-256 Fallback: keytar 실패 시 AES-256-GCM 파일 암호화
- 실시간 토큰 스트리밍: Server-Sent Events(SSE) 기반 응답 스트리밍
- 프로바이더별 지원: OpenAI, Anthropic, Google 모두 네이티브 스트리밍
- node-cron 기반: 루틴 자동 실행 스케줄링 (초, 분, 시간, 요일 지원)
- Cockpit SchedulePanel: 스케줄 관리 UI + 즉시 실행 + 로그 조회
- Routine Engine: 에이전트와 스킬 자동 실행
- Retry: 지수 백오프 방식 재시도
- Circuit Breaker: 연속 실패 시 요청 차단 및 빠른 실패
- Fallback: 프로바이더 체인을 통한 대체 경로
- MigrationRunner: 스키마 버전 관리 (001~005+)
- 마이그레이션 추적: migrations 테이블에 버전 기록
- 하위호환성: 점진적 스키마 진화
- agent.md: YAML frontmatter 형식으로 워크플로우 직접 정의
- skill.md: 맞춤형 프롬프트 템플릿 정의
- 프리셋 에이전트/스킬과 자동 병합
- 폼 기반 비주얼 에디터 + 미리보기
- 상세: 커스텀 에이전트 가이드 | 커스텀 스킬 가이드
- 소스 관리 + CBO 분석 + 아카이브 + GitHub 연동을 하나의 통합 뷰로 제공
- 탭 전환으로 빠르게 작업 컨텍스트 전환
| 문서 | 설명 |
|---|---|
| GETTING-STARTED.md | 설치, 빌드, 개발 모드 |
| ARCHITECTURE.md | 시스템 아키텍처, 신뢰 경계, Mermaid 다이어그램 |
| 문서 | 설명 |
|---|---|
| USAGE.md | 주요 기능별 사용법 가이드 (v5.0) |
| DOMAIN-PACKS.md | 5가지 Domain Pack 상세 |
| SECURITY-MODES.md | 3가지 보안 모드 설명 |
| CUSTOM-AGENTS.md | agent.md 작성 가이드 + 예제 |
| CUSTOM-SKILLS.md | skill.md 작성 가이드 + 예제 |
| 문서 | 설명 |
|---|---|
| PRD.md | Product Requirements Document (v7.1.0) |
| TRD.md | Technical Requirements Document (v7.1.0) |
| BRD.md | Business Requirements Document (v7.1.0) |
| 문서 | 설명 |
|---|---|
| IPC-PROTOCOL.md | 전체 IPC 채널 레퍼런스 (167+ 채널) |
| CONTRIBUTING.md | 코드 기여, 컨벤션, PR 규칙 |
graph TB
subgraph Renderer["렌더러 프로세스 (React 18 + Zustand)"]
Chat["Chat UI"]
Cockpit["Cockpit 대시보드"]
CodeLab["Code Lab<br/>(Sources + CBO + GitHub)"]
Knowledge["Knowledge<br/>(Skills + Agents + Vault)"]
Sessions["Sessions & Audit"]
Settings["Settings<br/>(AI + CodeLab + App)"]
end
subgraph Preload["Preload (IPC 브릿지)"]
IPC["window.assistantDesktop<br/>108 methods · 167+ channels"]
end
subgraph Main["메인 프로세스 (Node.js)"]
subgraph Runtime["Chat Runtime"]
ChatEngine["Chat Engine<br/>(SSE 스트리밍)"]
ProviderRouter["Provider Router<br/>OpenAI/Anthropic/Google"]
MCP["MCP Connector"]
end
subgraph Sources["소스 & 분석"]
SourceMgr["Source Manager"]
GitHubProvider["GitHub Provider<br/>(REST API)"]
CodeAnalyzer["Code Analyzer<br/>(18개 언어)"]
CBOAnalyzer["CBO Analyzer"]
LocalFolder["Local Folder Library"]
end
subgraph Email["이메일 통합"]
EmailManager["Email Manager"]
GmailMCP["Gmail MCP"]
OutlookGraph["Outlook Graph"]
end
subgraph Auth["인증 & 보안"]
OAuthManager["OAuth Manager<br/>(PKCE, 4 providers)"]
SecureStore["SecureStore<br/>(keytar + AES-256)"]
Audit["Audit Logger"]
end
subgraph Scheduling["자동화"]
RoutineScheduler["Routine Scheduler<br/>(node-cron)"]
AgentExecutor["Agent Executor"]
end
subgraph Data["데이터 레이어"]
SQLite["better-sqlite3<br/>(20+ repositories)"]
end
end
Renderer <-->|IPC| Preload
Preload <-->|Node API| Main
ChatEngine -->|Route| ProviderRouter
ChatEngine -->|MCP| MCP
SourceMgr --> GitHubProvider
SourceMgr --> LocalFolder
GitHubProvider -->|Index| SQLite
CodeAnalyzer -->|Analyze| ProviderRouter
EmailManager --> GmailMCP
EmailManager --> OutlookGraph
OAuthManager --> SecureStore
RoutineScheduler -->|Execute| AgentExecutor
AgentExecutor -->|Call| ChatEngine
Audit -->|Log| SQLite
style Renderer fill:#61dafb,color:#000
style Main fill:#68a063,color:#fff
style Preload fill:#ffb600,color:#000
- 사용자 입력 → Renderer (React)
- IPC 메시지 → Preload (브릿지)
- 메인 프로세스 처리:
- 보안 정책 검증
- 도메인팩 선택
- 프로바이더 라우팅
- 로컬 분석 (필요시)
- 응답 저장 → SQLite
- UI 업데이트 → Renderer
src/
├── main/ # 메인 프로세스 (Node.js)
│ ├── index.ts # 앱 진입점 (BrowserWindow 보안 명시)
│ ├── logger.ts # Pino 로거 (API 키 redaction)
│ ├── bootstrap/ # DI 컨테이너 (팩토리 패턴)
│ │ ├── createRepositories.ts # 데이터 저장소 초기화
│ │ ├── createServices.ts # 비즈니스 로직 서비스 초기화
│ │ └── seedData.ts # 초기 데이터 삽입
│ ├── auth/ # 인증 시스템
│ │ ├── oauthManager.ts # OAuth 2.0 + PKCE 플로우
│ │ ├── oauthProviders.ts # 4대 프로바이더 설정
│ │ ├── secureStore.ts # keytar + AES-256-GCM fallback
│ │ ├── fileFallback.ts # AES 파일 암호화 저장소
│ │ ├── callbackServer.ts # OAuth 로컬 콜백 서버
│ │ ├── githubDeviceCode.ts # GitHub Device Code 플로우
│ │ └── pkce.ts # PKCE 코드 챌린지 생성
│ ├── analysis/ # 코드 분석 엔진
│ │ └── codeAnalyzer.ts # 소스/파일 단위 LLM 분석
│ ├── cbo/ # CBO(Custom Business Object) 분석기
│ ├── email/ # 이메일 통합
│ │ ├── emailManager.ts # 이메일 동기화 + AI 분석
│ │ ├── emailAnalysisPrompt.ts # SAP 메타데이터 추출 프롬프트
│ │ └── providers/ # Gmail MCP, Outlook Graph
│ ├── ipc/ # IPC 핸들러 (167+ 채널)
│ │ ├── channels.ts # 채널 상수 정의
│ │ ├── authHandlers.ts # OAuth, API 키, Device Code
│ │ ├── chatHandlers.ts # SSE 스트리밍, 이력 관리
│ │ ├── sourceHandlers.ts # 소스 인덱싱, 검색
│ │ ├── emailHandlers.ts # 이메일 동기화, 분석
│ │ ├── codeAnalysisHandlers.ts # 코드 분석 실행/조회
│ │ ├── scheduleHandlers.ts # 스케줄 CRUD, 실행 로그
│ │ ├── agentHandlers.ts # 에이전트 실행, 인터랙티브
│ │ ├── cboHandlers.ts # CBO 분석 (텍스트/파일/폴더)
│ │ ├── routineHandlers.ts # 루틴 템플릿/실행/지식 연결
│ │ ├── closingHandlers.ts # 마감 플랜/스텝 CRUD
│ │ ├── auditHandlers.ts # 감사 로그
│ │ ├── archiveHandlers.ts # 아카이브 파일 I/O
│ │ └── helpers/ # CRUD 팩토리, 에러 래퍼
│ ├── providers/ # LLM 프로바이더 라우터
│ │ ├── openai.ts # OpenAI (GPT-4.1, GPT-4o, o4-mini)
│ │ ├── anthropic.ts # Anthropic (Claude Opus/Sonnet)
│ │ ├── google.ts # Google (Gemini 2.5)
│ │ └── providerResilience.ts # Retry + Circuit Breaker + Fallback
│ ├── services/ # 비즈니스 로직 서비스
│ │ ├── routineExecutor.ts # 루틴 실행기
│ │ └── routineScheduler.ts # node-cron 기반 스케줄러
│ ├── skills/ # 스킬 시스템 (프리셋 + 커스텀)
│ ├── sources/ # 소스 관리자
│ │ ├── sourceManager.ts # 소스 오케스트레이션
│ │ ├── githubProvider.ts # GitHub REST API 연동
│ │ ├── localFolderLibrary.ts # 로컬 폴더 인덱싱
│ │ └── mcpConnector.ts # MCP 서버 연결
│ ├── storage/ # SQLite 저장소 + Repository 패턴
│ │ ├── db.ts # 데이터베이스 초기화
│ │ ├── migrationRunner.ts # DB 마이그레이션 자동화
│ │ ├── migrations/ # 마이그레이션 스크립트
│ │ └── repositories/ # 20+ Repository (CRUD 추상화)
│ ├── types/ # 타입 정의 (모듈별 분리)
│ └── contracts.ts # 타입 재내보내기 (호환성)
├── preload/ # Preload 스크립트
│ └── index.ts # window.assistantDesktop (108 methods)
└── renderer/ # 렌더러 프로세스 (React 18)
├── components/ # React 컴포넌트
│ ├── settings/ # 설정 컴포넌트
│ │ └── primitives/ # 설정 기본 UI (DRY)
│ ├── onboarding/ # 첫 실행 온보딩
│ └── email/ # 이메일 UI 컴포넌트
├── hooks/ # 커스텀 React 훅 (React Query 래퍼)
├── pages/ # 페이지 컴포넌트 (라우팅)
│ ├── sources/ # 소스 페이지 (Local, MCP, GitHub)
│ ├── settings/ # 설정 (AI, CodeLab, App, Appearance)
│ ├── cockpit/ # 대시보드 (Schedule, Closing)
│ ├── chat/ # 채팅 컴포넌트
│ ├── cbo/ # CBO 분석
│ └── __tests__/ # 페이지 테스트
├── stores/ # Zustand 상태 관리 (persist)
├── styles/ # CSS 변수 기반 디자인 시스템
│ └── variables.css # 색상, 간격, 타이포그래피 변수
└── App.tsx # 앱 진입점
| 계층 | 기술 | 버전 |
|---|---|---|
| 전자 | Electron | 31.x |
| 프론트엔드 | React | 18.x |
| 상태 관리 | Zustand | 5.x |
| 데이터 페칭 | React Query | 5.x |
| 언어 | TypeScript | 5.7 |
| 번들러 | Vite | 6.x |
| 백엔드 | Node.js | 22.x LTS |
| 데이터베이스 | better-sqlite3 | 11.x |
| 로깅 | Pino | 8.x |
| LLM SDK | Model Context Protocol | 1.27.x |
| UI 스타일 | CSS 변수 시스템 (Tailwind 미사용) | - |
| 테스트 | Vitest + React Testing Library | - |
| 스케줄 | node-cron | 1.3.x |
| 시스템 키체인 | keytar | 8.x |
- Node.js 22.22.1 LTS 권장 (
.nvmrc,.node-version제공) - npm 10.9.4 이상
- Windows 10 이상 (Electron 31 호환)
- 메모리: 최소 4GB RAM
- 디스크: 설치 후 최소 500MB 여유 공간
# 저장소 클론
git clone https://github.com/choishiam0906/sap-assistant-desktop.git
cd sap-assistant-desktop
# 런타임 확인
npm run check:runtime
# 의존성 설치 (Electron 네이티브 모듈 자동 재빌드 포함)
npm install
# 주의: desktop/ 래퍼 폴더 제거됨 (v5.0부터 루트 직접 관리)# .env 파일 생성
cp .env.example .env
# .env 파일 편집 (API 키 입력)
# OPENAI_API_KEY=sk-...
# ANTHROPIC_API_KEY=sk-ant-...
# GOOGLE_API_KEY=...# 개발 모드: 메인 프로세스만 핫 리로드
npm run dev
# 프로덕션 빌드 후 실행 (권장)
npm run build && npm run start
npm run start는 Electron과 충돌할 수 있는NODE_OPTIONS를 정리한 뒤 빌드된 앱을 실행합니다.npm run dev는 메인 프로세스를 tsx로 핫 리로드하며 실행합니다.
# 프로덕션 빌드
npm run build
# 앱 시작 (빌드 후)
npm run start
# Windows 배포
# 1. 포터블 실행 파일 (exe 단일 파일)
npm run dist:portable
# 2. NSIS 설치 프로그램
npm run dist:nsis
# 또는 모든 배포 포맷
npm run dist# LLM 프로바이더 API 키
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...
# 애플리케이션
APP_NAME=SAP Knowledge Hub
APP_VERSION=7.1.0
# 개발/프로덕션
NODE_ENV=development|production
# 데이터베이스
DB_PATH=./data/app.db
# 로깅
LOG_LEVEL=debug|info|warn|error# OAuth Client ID (프로바이더별 OAuth 로그인 활성화)
OAUTH_OPENAI_CLIENT_ID=...
OAUTH_ANTHROPIC_CLIENT_ID=...
OAUTH_GOOGLE_CLIENT_ID=...
OAUTH_MICROSOFT_CLIENT_ID=...
# MCP 서버 연결
MCP_SERVER_URL=http://localhost:3000
MCP_API_KEY=...
# 프록시 (기업 환경)
HTTP_PROXY=http://proxy:port
HTTPS_PROXY=https://proxy:port자세한 설정은 .env.example을 참조하세요.
Settings > Security 에서 모드 선택:
- Secure Local (기본값): 로컬 PC에서만 처리, 외부 전송 차단
- Reference: 표준 SAP 지식 질의, 공개 LLM 모델 사용
- Hybrid Approved: 승인된 요약본만 외부 전송
Chat 페이지에서 상황에 맞는 팩 선택:
Ask SAP
├─ Ops Pack → 운영/시스템 관리 질문
├─ Functional Pack → 업무 프로세스 지원
├─ CBO Maintenance → CBO 변경 분석
├─ PI Integration → 통합/연동 질문
└─ BTP/RAP/CAP → 모던 SAP 개발
- 질문 입력 또는 업로드된 문서 첨부
- 프로바이더/모델 선택
- 응답 수신 및 세션 저장
- CBO Analysis 페이지 접속
.txt또는.md파일 업로드- 분석 유형 선택:
- 규칙 기반: 로컬 검사만 (빠름)
- LLM 강화: + AI 분석 (상세)
- 결과 확인 및 권고사항 검토
Knowledge Vault 페이지:
- Reference: 공개 자료 (SAP 문서, 블로그, 포럼)
- Confidential: 기업 내부 자료 (정책, 아키텍처)
파일 업로드 → 자동 분류 → 검색 가능
Sessions & Audit 페이지:
- 과거 대화 복구
- 감시 로그 조회 (타임스탬프, 모델, 비용)
- 세션 아카이빙
- 정책 위반 추적
목적: SAP 시스템 운영, 성능, 보안 지원
주요 T-Code:
ST22– 단기 덤프 분석SM21– 시스템 로그ST03N– 워크로드 분석STMS– 수송 관리SE03– 변경 관리SM50– 프로세스 모니터링SM37– 배치 작업 모니터링
사용 시나리오:
- 시스템 성능 저하 진단
- 에러 덤프 해석
- 배치 작업 실패 원인 분석
- 사용자 권한 설정
목적: 업무 프로세스 및 표준 기능 지원
주요 T-Code:
VL01N– 배송 생성VL02N– 배송 변경VF01– 청구서 생성ME21N– 구매 발주VD01– 고객 마스터FC00– 재무 대시보드
사용 시나리오:
- T-Code 업무 흐름 설명
- 마스터 데이터 관리 절차
- 오류 메시지 해석
- 업무 절차 최적화
목적: 커스터마이징 객체(CBO) 변경 분석 및 위험 평가
주요 T-Code:
SE80– ABAP 개발 워크벤치SE91– 메시지 유지보수SE38– 프로그램 에디터SMOD– 확장 포인트
입력 형식: .txt 또는 .md (CBO 정의, 코드 변경)
분석 결과:
- 규칙 기반 위험도 평가
- 성능 영향 예측
- 의존성 분석
- 권고사항
목적: SAP PI/PO 및 Cloud Integration 지원
주요 T-Code:
SXMB_MONI– 메시지 모니터링SXMB_IFR– Integration BuilderID_OWNR– Integration DirectoryPIIS– PI Integration Suite
사용 시나리오:
- 메시지 흐름 설계
- 통합 오류 진단
- 매핑 및 변환 검토
- 클라우드 통합 아키텍처
목적: SAP BTP, ABAP RESTful Application Programming(RAP), Cloud Application Programming(CAP) 개발 지원
주요 T-Code / 도구:
ADT– ABAP Development Tools (Eclipse)SBPA– BTP Admin 콘솔FIORI– Fiori 앱 런처- SAP Build Work Zone
사용 시나리오:
- 클라우드 앱 개발 모범 사례
- RAP 엔티티 설계
- CAP 프로젝트 구조
- BTP 서비스 통합
┌─────────────────────────────────────┐
│ 사용자 입력 (질문/파일) │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 정책 엔진: "외부 전송 가능?" │
│ → 판정: NO │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 로컬 분석만 실행: │
│ • CBO 규칙 기반 분석 │
│ • 정규표현식 패턴 매칭 │
│ • 로컬 Knowledge 검색 │
└────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 결과 반환 (외부 API 호출 불가) │
└─────────────────────────────────────┘
특징:
- 모든 처리가 로컬 PC에서 진행
- 인터넷 연결 불필요
- 외부 서버 전송 차단
- 민감 데이터 유출 불가능
┌──────────────────────────────────────┐
│ 사용자 입력 (공개 지식 질문) │
└────────────┬─────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 정책 엔진: "공개 정보만 포함?" │
│ → 판정: YES │
└────────────┬─────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 선택된 프로바이더로 라우팅: │
│ • OpenAI GPT-4o │
│ • Anthropic Claude Opus │
│ • Google Gemini 2.5 │
└────────────┬─────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 로컬 + 외부 LLM 분석 │
│ (공개 컨텍스트만 전송) │
└────────────┬─────────────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 결과 반환 및 로깅 │
└──────────────────────────────────────┘
특징:
- 표준 SAP 지식만 외부 전송
- API 키 기반 인증
- 기업 정책 설정 가능
- 감시 로그 기록
┌───────────────────────────────────────┐
│ 사용자 입력 (민감할 수 있는 질문) │
└────────────┬──────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 민감성 스캔: │
│ • 회사명, 부서, 개인정보 제거 │
│ • 기밀 정보 마스킹 │
└────────────┬──────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 승인 프로세스: │
│ ✓ 자동 승인 (정책 기준) │
│ ✓ 관리자 승인 필요 (위험도 높음) │
└────────────┬──────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 승인된 요약본만 외부 LLM 전송 │
│ (원문 소스는 로컬에만 유지) │
└────────────┬──────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ 결과 반환 및 감시 로그 기록 │
│ (승인 기록 포함) │
└───────────────────────────────────────┘
특징:
- 민감정보 자동 탐지 및 제거
- 승인 워크플로우 (자동/수동)
- 기업 정책 준수
- 완전한 감시 추적
# 개발
npm run check:runtime # Node/npm 런타임 확인
npm run dev # 메인 프로세스 개발 실행 (tsx)
npm run build:renderer # React 빌드 (Vite)
npm run build:main # Electron Main 빌드
# 프로덕션 빌드
npm run build # build:main + build:renderer
npm run start # 빌드된 앱 실행 (충돌하는 NODE_OPTIONS 자동 정리)
# 패키징
npm run pack # 앱 패킹 (dist/ 생성)
npm run dist # 모든 설치 관계자 생성
npm run dist:portable # 포터블 EXE (exe 단일 파일)
npm run dist:nsis # NSIS 설치 프로그램 (msi)
# 검증
npm run lint # ESLint 린트
npm run typecheck # TypeScript 타입 체크
npm run test # 테스트 스위트 (감시 모드)
npm run test:run # 테스트 한 번 실행
npm run test:coverage # 커버리지 리포트
npm run verify # lint + typecheck + test:run 순서 실행절대 커밋하지 말 것:
.env,.env.local(API 키)data/(사용자 데이터)dist/(빌드 산출물)node_modules/
확인 항목:
.gitignore설정 확인.env.example사용 (예시만)- GitHub Secrets 사용 (CI/CD)
-
로컬 개발:
# .env 파일 (git 무시됨) OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-ant-... -
프로덕션 배포:
- 환경 변수를 통해 제공
- 난독화 또는 보안 저장소 사용
- SQLite 데이터베이스: 암호화되지 않음 (로컬 저장)
- 네트워크 전송: HTTPS 전송만 (LLM API)
- 파일 저장: 관리자 권한 필요
main (프로덕션)
↑
develop (개발 통합)
↑
feature/* (기능 개발)
↑
hotfix/* (긴급 버그)
Conventional Commits 사용:
feat(도메인): 간단한 설명
fix(도메인): 버그 설명
refactor(도메인): 리팩토링 설명
docs: 문서 업데이트
test: 테스트 추가
chore: 빌드, 의존성 등
예시:
feat(chat): OpenAI 스트리밍 지원 추가
fix(cbo): 규칙 분석 엣지 케이스 수정
docs(readme): 빠른 시작 가이드 추가
-
포크 및 브랜치 생성:
git checkout -b feature/my-feature develop
-
코드 작성 및 커밋:
git add . git commit -m "feat(domain): description"
-
검증:
npm run verify # lint + typecheck + test -
푸시 및 PR:
git push origin feature/my-feature # GitHub에서 PR 생성 (develop 대상) -
PR 체크리스트:
- 테스트 작성/수정
- 타입 체크 통과
- 린트 통과
- 문서 업데이트
- Co-Authored-By 헤더 포함
# 테스트 작성 (Jest/Vitest)
# __tests__/ 또는 .test.ts 파일
# 테스트 실행
npm run test # 감시 모드
npm run test:run # 한 번 실행
npm run test:coverage # 커버리지 리포트
# 최소 커버리지: 70% (src/)- TypeScript strict mode 필수
- Prettier 자동 포맷팅
- ESLint 린트 규칙 준수
- 함수형 프로그래밍 선호 (불변성, 순수함수)
# 1. 의존성 재설치
rm -rf node_modules package-lock.json
npm install
# 2. 캐시 삭제
npm run clean
npm install
# 3. 포트 충돌 확인 (기본: 3000, 5173)
lsof -i :3000# 1. 환경 확인
node --version # v18+ 필요
npm --version # 9+ 필요
# 2. 의존성 업데이트
npm update
# 3. 캐시 삭제
npm cache clean --force
npm install# 1. DB 파일 확인
ls -la ./data/app.db
# 2. 권한 확인
chmod 644 ./data/app.db
# 3. 초기화 (데이터 손실!)
rm ./data/app.db
npm run dev # 자동 재생성# 1. .env 파일 확인
cat .env | grep API_KEY
# 2. API 제공자 대시보드 확인
# OpenAI: https://platform.openai.com/account/api-keys
# Anthropic: https://console.anthropic.com/account/keys
# Google: https://console.cloud.google.com/
# 3. API 할당량 확인
# 초과 시: 빌링 정보 업데이트 필요# 1. 모델 확인
# GPT-4.1 > Claude Opus > Gemini (속도 순)
# 2. 프로바이더 지역 확인
# US 리전이 권장됨
# 3. 네트워크 지연 확인
ping api.openai.com# 1. 메모리 사용량 확인
npm run dev # DevTools 열기 (F12)
# 2. 번들 크기 분석
npx webpack-bundle-analyzer
# 3. SQLite 최적화
# 정기적으로 VACUUM 실행 (Settings > Database)MIT License – 자유로운 사용, 수정, 배포 가능
조건:
- 라이선스 및 저작권 표시 유지
- 책임 부인 포함
- ✅ 다중 LLM 통합 (OpenAI, Anthropic, Google)
- ✅ CBO 분석 + 소스코드 아카이브
- ✅ 에이전트/스킬 시스템 (프리셋 + 커스텀)
- ✅ 코드 랩 (Sources + CBO + Archive 통합)
- ✅ Knowledge Vault + MCP 서버 연결
- ✅ Cockpit (마감 관리 + 루틴)
- ✅ 스케줄 기반 에이전트 실행 (node-cron)
- ✅ DB 마이그레이션 시스템
- ✅ LLM SSE 스트리밍
- ✅ 에러 복원력 (Retry + Circuit Breaker + Fallback)
- ✅ 코드 품질 개선 (Zustand 최적화, IPC 팩토리, bootstrap 분해)
- ✅ UI 대형 컴포넌트 분할 (ProcessHub 1149→277줄 등)
- ✅ 접근성(a11y) 강화 (ARIA, useFocusTrap, useKeyboardNav)
- ✅ React Query 최적화 (queryKeys 팩토리, 도메인별 캐싱)
- ✅ Zustand persist 통일 (수동 localStorage → 미들웨어)
- ✅ 범용 플랫폼 전환 (Domain Pack 시스템, 타입/IPC 범용화)
- ✅ esbuild CJS 번들링 (Electron portable/NSIS 호환)
- ✅ SAP Knowledge Hub 리브랜딩
- ✅ OAuth 4대 프로바이더 (OpenAI, Anthropic, Google, Microsoft)
- ✅ GitHub 코드 연동 (CodeLab REST API 통합)
- ✅ 이메일 통합 분석 (Gmail MCP, Outlook Graph, AI 분석)
- ✅ 코드 분석 엔진 (소스/파일 단위 LLM 분석)
- ✅ 보안 강화 (Logger Redaction, AES-256 Fallback, BrowserWindow 명시)
- ✅ OAuth
state파라미터 버그 수정 (OpenAI 호환)
- SAP 시스템 직접 연결 (RFC/OData)
- 자동 Transport 리뷰 & 승인 흐름
- GitLab 리포지토리 연동
- 오프라인 LLM (Ollama 연동)
- 엔터프라이즈 배포 (LDAP, SSO, 코드 서명)
- auto-updater 코드 서명 인증서
- GitHub Issues
- 템플릿:
[BUG] 제목또는[FEATURE] 제목
Made with care for SAP Professionals
© 2024-2026 SAP Knowledge Hub Contributors. All rights reserved.