Skip to content

Jihobp/MESChatBot

Repository files navigation

🤖 MES 챗봇 시스템

Semantic Kernel + Ollama 기반의 완전 무료 MES 전용 챗봇 시스템입니다.

📋 개요

이 프로젝트는 제조실행시스템(MES)을 위한 AI 챗봇으로, 자연어를 통해 생산실적, 품질관리, 재고현황 등을 조회할 수 있습니다.

🎯 주요 특징

  • 완전 무료: Ollama 로컬 LLM 사용으로 API 비용 없음
  • 멀티테넌트: 여러 업체 데이터베이스 지원
  • 한국어 최적화: 자연스러운 한국어 대화 지원
  • 토스 스타일 UI: 직관적이고 현대적인 사용자 인터페이스
  • DevExpress 통합: 기존 MES 시스템과 완벽 호환

🏗️ 아키텍처

솔루션 구조

MESChatBot/
├── MESChatBot.Core/           # 핵심 AI 및 비즈니스 로직
│   ├── Services/              # 챗봇, 데이터베이스, Ollama 서비스
│   ├── Functions/             # Semantic Kernel 함수들
│   ├── Models/                # 데이터 모델
│   └── Configuration/         # 설정 클래스
├── MESChatBot.UI/             # DevExpress 기반 UI 컴포넌트
│   ├── Controls/              # 챗봇 컨트롤
│   └── Forms/                 # 설정 및 이력 폼
└── MESChatBot.Demo/           # 독립 실행 테스트 앱
    └── Forms/                 # 메인 폼

기술 스택

  • .NET 8.0: 최신 .NET 플랫폼
  • Semantic Kernel: Microsoft AI 오케스트레이션 프레임워크
  • Ollama: 로컬 LLM 서버
  • DevExpress WinForms: 프로페셔널 UI 컴포넌트
  • SQL Server: 데이터베이스
  • Serilog: 구조화된 로깅

🚀 설치 및 설정

1. 사전 요구사항

Ollama 설치

# Windows에서 Ollama 설치
# https://ollama.ai/download에서 다운로드 후 설치

# 모델 다운로드
ollama pull llama3.1:8b

.NET 8.0 SDK 설치

2. 프로젝트 빌드

# 저장소 클론
git clone <repository-url>
cd MESChatBot

# 패키지 복원 및 빌드
dotnet restore
dotnet build

3. 설정 파일 구성

MESChatBot.Demo/appsettings.json 파일을 환경에 맞게 수정:

{
  "ChatbotConfig": {
    "OllamaEndpoint": "http://localhost:11434",
    "ModelName": "llama3.1:8b",
    "MaxTokens": 2048,
    "Temperature": 0.7,
    "TimeoutSeconds": 30
  },
  "DatabaseConfig": {
    "ServerUrl": "your-sql-server,port",
    "UserId": "your-username",
    "Password": "your-password",
    "Companies": [
      {
        "Name": "COMPANY_DB_NAME",
        "DisplayName": "회사 표시명",
        "IsActive": true
      }
    ]
  }
}

4. 실행

# 데모 애플리케이션 실행
cd MESChatBot.Demo
dotnet run

💬 사용법

기본 질문 예시

사용자: "오늘 생산실적 알려줘"
챗봇: 📊 2024년 08월 22일 생산실적
      🔹 제품A: 150개 (작업지시 3건)
      🔹 제품B: 200개 (작업지시 2건)

사용자: "품질 현황은?"
챗봇: 🔍 2024년 08월 22일 품질 검사 결과
      ✅ 제품A: 합격률 98.5%
      ⚠️ 제품B: 합격률 95.2%

사용자: "재고 부족한 제품 있어?"
챗봇: 🚨 재고 부족 제품 (2건)
      🔥 제품C: 현재고 0개 / 안전재고 50개
      ⚠️ 제품D: 현재고 10개 / 안전재고 30개

지원되는 기능

생산 관리

  • 일별/기간별 생산실적 조회
  • 생산 계획 대비 실적 분석
  • 진행 중인 작업지시 현황

품질 관리

  • 품질 검사 결과 조회
  • 불량 유형별 분석
  • 품질 목표 대비 성과

재고 관리

  • 재고 현황 조회
  • 재고 부족 제품 알림
  • 입출고 내역 조회

멀티테넌트

  • 업체별 데이터베이스 연결
  • 실시간 업체 변경
  • 업체별 설정 관리

🔧 설정 및 커스터마이징

1. 새로운 Function 추가

[KernelFunction, Description("새로운 기능 설명")]
public async Task<string> NewFunction(
    [Description("매개변수 설명")] string parameter)
{
    // 구현
    return result;
}

2. 데이터베이스 연결 추가

appsettings.jsonCompanies 배열에 새 업체 추가:

{
  "Name": "NEW_COMPANY_DB",
  "DisplayName": "새 업체명",
  "IsActive": true
}

3. UI 커스터마이징

  • ChatbotControl.cs: 메인 채팅 인터페이스
  • ApplyTossStyle() 메서드에서 스타일 수정
  • 토스 컬러 팔레트 사용 권장

📊 로깅 및 모니터링

로그 파일 위치

  • 콘솔 로그: 실시간 출력
  • 파일 로그: logs/chatbot-yyyy-MM-dd.log
  • 보관 정책: 7일간 보관

로그 레벨

  • Information: 일반 정보
  • Warning: 경고 (연결 실패 등)
  • Error: 오류 (쿼리 실패 등)
  • Fatal: 치명적 오류

🔒 보안 고려사항

데이터베이스 보안

  • 읽기 전용 쿼리만 허용
  • 매개변수화된 쿼리 사용
  • SQL Injection 방지

연결 보안

  • 신뢰할 수 있는 서버 연결만 허용
  • 암호화된 연결 사용 권장
  • 접근 권한 최소화

🚨 문제 해결

일반적인 문제

1. Ollama 연결 실패

# Ollama 서비스 상태 확인
curl http://localhost:11434/api/tags

# Ollama 재시작
ollama serve

2. 데이터베이스 연결 실패

  • 서버 URL 및 포트 확인
  • 인증 정보 확인
  • 방화벽 설정 확인

3. DevExpress 라이선스 오류

  • DevExpress 라이선스 유효성 확인
  • DLL 경로 확인
  • 버전 호환성 확인

로그 확인

# 최신 로그 확인
tail -f logs/chatbot-$(date +%Y-%m-%d).log

# 오류 로그만 필터링
grep "ERROR\|FATAL" logs/chatbot-*.log

🤝 기여 가이드

개발 환경 설정

  1. Visual Studio 2022 또는 VS Code 설치
  2. .NET 8.0 SDK 설치
  3. DevExpress 라이선스 설정
  4. Ollama 설치 및 모델 다운로드

코딩 스타일

  • C# 코딩 컨벤션 준수
  • XML 문서 주석 작성
  • 단위 테스트 작성 권장

📝 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다.

📞 지원

기술 지원이나 문의사항이 있으시면:


Made with ❤️ by SNexis MES Team

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors