Google Gemini AIλ₯Ό νμ©ν WBS(Work Breakdown Structure) μλ μμ± λ° νλ‘μ νΈ κ΄λ¦¬ μμ€ν
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
# FlowPlan λ©μΈ νλ‘μ νΈ (νμ¬ μμΉ)
cd C:\FlowPlan
# μ€νλ§ μλ² ν΄λ‘ (Git μ£Όμλ μ€μ λ ν¬μ§ν λ¦¬λ‘ λ³κ²½)
git clone <FlowPlanServer_Git_URL> FlowPlanServer# .env.exampleμ 볡μ¬νμ¬ .env μμ±
copy .env.example .env
# .env νμΌ νΈμ§
notepad .envνμ μ€μ :
GEMINI_API_KEY=your_actual_gemini_api_key
POSTGRES_PASSWORD=secure_production_password# AI μλΉμ€λ§ μ€ν (νμ¬)
docker-compose up -d flowplan-ai
# μ€νλ§ μλ² μΆκ° ν μ 체 μ€ν
docker-compose up -d
# λ‘κ·Έ νμΈ
docker-compose logs -f- AI μλΉμ€ (FastAPI): http://localhost:8000/docs
- μ€νλ§ μλ² (μμ ): http://localhost:8080/swagger-ui.html
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
cd FlowPlanAI
# κ°μ νκ²½ μμ±
python -m venv venv
venv\Scripts\activate
# μμ‘΄μ± μ€μΉ
pip install -r requirements.txt
# λ‘컬 μ€ν
uvicorn app.main:app --reload --port 8000cd FlowPlanServer
# Gradle λΉλ
./gradlew build
# λ‘컬 μ€ν
./gradlew bootRun# AI μλΉμ€λ§ μ¬λΉλ λ° μ¬μμ
docker-compose up -d --build flowplan-ai
# μ€νλ§ μλ²λ§ μ¬μμ
docker-compose restart flowplan-servercurl -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
}'# 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
}'cd FlowPlanAI
pytest tests/cd FlowPlanServer
./gradlew test-
.envνμΌμ μ€μ API ν€ λ° λΉλ°λ²νΈ μ€μ -
docker-compose.ymlμμ λΆνμν ν¬νΈ λ§€ν μ κ±° - CORS μ€μ μ νΉμ λλ©μΈμΌλ‘ μ ν
- PostgreSQL λ³Όλ₯¨ λ°±μ μ λ΅ μ립
- λ‘κ·Έ μμ§ λ° λͺ¨λν°λ§ μ€μ
- HTTPS/SSL μΈμ¦μ μ μ©
# 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.0main: νλ‘λμ λ°°ν¬ λΈλμΉ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μ΄ νλ‘μ νΈ κ·μΉμ λ§λ μ½λλ₯Ό μμ±νλλ‘ μ€μ λμ΄ μμ΅λλ€.