Skip to content

DevOpsSociety/FlowPlan

Repository files navigation

FlowPlan - AI 기반 프로젝트 일정 관리 플랫폼

Google Gemini AI를 활용한 WBS(Work Breakdown Structure) 자동 생성 및 프로젝트 관리 시스템

Docker Python Spring Boot FastAPI

📋 프로젝트 개요

FlowPlan은 AI를 활용하여 프로젝트 일정을 자동으로 생성하고 관리하는 플랫폼입니다. 마이크로서비스 아키텍처로 설계되어 AI 서비스와 메인 비즈니스 로직을 분리하여 확장성과 유지보수성을 확보했습니다.

주요 기능

  • 🤖 AI 기반 WBS 자동 생성: 프로젝트 정보만으로 작업 분해 구조 자동 생성
  • 📝 마크다운 명세서: AI가 생성한 명세서를 사용자가 편집 후 정확한 WBS 생성
  • 👥 사용자 인증/인가: JWT 기반 보안 인증 시스템
  • 📊 프로젝트/작업 관리: CRUD 및 진행률 추적
  • 🐳 Docker 컨테이너화: 간편한 배포 및 확장

🏗️ 아키텍처

┌─────────────────┐
│   클라이언트    │ (React/Vue - 예정)
└────────┬────────┘
         │ HTTP/HTTPS
         ▼
┌─────────────────┐
│ FlowPlanServer  │ (Spring Boot)
│   - 인증/인가    │ :8080
│   - 프로젝트 관리│
│   - DB 영속성    │
└────────┬────────┘
         │ HTTP (내부 네트워크)
         ▼
┌─────────────────┐
│  FlowPlanAI     │ (FastAPI)
│   - WBS 생성     │ :8000
│   - Gemini AI    │
└─────────────────┘
         │
         ▼
┌─────────────────┐
│  PostgreSQL DB  │ :5432
└─────────────────┘

서비스 구성

서비스 역할 기술 스택 포트
FlowPlanAI AI 기반 WBS 생성 Python, FastAPI, Gemini 8000
FlowPlanServer 인증/인가, 메인 로직 Java/Kotlin, Spring Boot 8080
PostgreSQL 데이터베이스 PostgreSQL 15 5432

🚀 빠른 시작

사전 요구사항

  • Docker & Docker Compose 설치
  • Gemini API 키 (발급 받기)
  • Git

1. 프로젝트 클론 및 스프링 서버 설정

# FlowPlan 메인 프로젝트 (현재 위치)
cd C:\FlowPlan

# 스프링 서버 클론 (Git 주소는 실제 레포지토리로 변경)
git clone <FlowPlanServer_Git_URL> FlowPlanServer

2. 환경 변수 설정

# .env.example을 복사하여 .env 생성
copy .env.example .env

# .env 파일 편집
notepad .env

필수 설정:

GEMINI_API_KEY=your_actual_gemini_api_key
POSTGRES_PASSWORD=secure_production_password

3. Docker Compose로 전체 서비스 실행

# AI 서비스만 실행 (현재)
docker-compose up -d flowplan-ai

# 스프링 서버 추가 후 전체 실행
docker-compose up -d

# 로그 확인
docker-compose logs -f

4. API 문서 확인

📂 프로젝트 구조

FlowPlan/
├── .github/
│   └── copilot-instructions.md    # GitHub Copilot 프로젝트 지침
├── FlowPlanAI/                    # AI 마이크로서비스
│   ├── Dockerfile
│   ├── requirements.txt
│   ├── .github/
│   │   └── copilot-instructions.md
│   └── app/
│       ├── main.py
│       ├── api/routes/
│       ├── services/              # Gemini 통합, WBS 생성
│       ├── models/                # Pydantic 모델
│       └── utils/
├── FlowPlanServer/                # 스프링 서버 (Git에서 클론)
│   ├── Dockerfile
│   ├── src/main/
│   │   ├── java/
│   │   └── resources/
│   └── .github/
│       └── copilot-instructions.md
├── docker-compose.yml             # 멀티 서비스 오케스트레이션
├── .env.example                   # 환경 변수 템플릿
├── .gitignore
└── README.md

🔧 개발 가이드

AI 서비스 (FlowPlanAI) 개발

cd FlowPlanAI

# 가상 환경 생성
python -m venv venv
venv\Scripts\activate

# 의존성 설치
pip install -r requirements.txt

# 로컬 실행
uvicorn app.main:app --reload --port 8000

스프링 서버 (FlowPlanServer) 개발

cd FlowPlanServer

# Gradle 빌드
./gradlew build

# 로컬 실행
./gradlew bootRun

Docker로 개별 서비스 재시작

# AI 서비스만 재빌드 및 재시작
docker-compose up -d --build flowplan-ai

# 스프링 서버만 재시작
docker-compose restart flowplan-server

📡 API 사용 예시

WBS 자동 생성 (AI 서비스 직접 호출 - 테스트용)

curl -X POST http://localhost:8000/api/v1/wbs/generate \
  -H "Content-Type: application/json" \
  -d '{
    "project_name": "신규 쇼핑몰 개발",
    "project_type": "웹 애플리케이션",
    "team_size": 5,
    "expected_duration_days": 90
  }'

WBS 생성 (스프링 서버 경유 - 프로덕션)

# JWT 토큰 발급 후
curl -X POST http://localhost:8080/api/projects/1/wbs \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "project_name": "신규 쇼핑몰 개발",
    "project_type": "웹 애플리케이션",
    "team_size": 5,
    "expected_duration_days": 90
  }'

🧪 테스트

AI 서비스 테스트

cd FlowPlanAI
pytest tests/

스프링 서버 테스트

cd FlowPlanServer
./gradlew test

📦 배포

프로덕션 배포 체크리스트

  • .env 파일에 실제 API 키 및 비밀번호 설정
  • docker-compose.yml에서 불필요한 포트 매핑 제거
  • CORS 설정을 특정 도메인으로 제한
  • PostgreSQL 볼륨 백업 전략 수립
  • 로그 수집 및 모니터링 설정
  • HTTPS/SSL 인증서 적용

Docker Hub에 이미지 푸시

# AI 서비스
docker build -t username/flowplan-ai:1.0 ./FlowPlanAI
docker push username/flowplan-ai:1.0

# 스프링 서버
docker build -t username/flowplan-server:1.0 ./FlowPlanServer
docker push username/flowplan-server:1.0

🤝 기여 가이드

Git 브랜치 전략

  • main: 프로덕션 배포 브랜치
  • develop: 개발 통합 브랜치
  • feature/*: 새 기능 개발
  • hotfix/*: 긴급 수정

커밋 메시지 규칙

[서비스명] 타입: 제목

상세 설명

예시:
[AI] feat: Gemini 프롬프트 최적화로 WBS 정확도 20% 향상
[Server] fix: JWT 토큰 갱신 로직 버그 수정

📄 라이선스

MIT License (예정)

📞 문의

  • 이슈 등록: [GitHub Issues](이슈 URL)
  • Wiki: [프로젝트 Wiki](위키 URL)

개발 팁: 각 서비스 디렉토리의 .github/copilot-instructions.md 파일을 확인하여 GitHub Copilot이 프로젝트 규칙에 맞는 코드를 생성하도록 설정되어 있습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages