# ๐Ÿฅ HealthSync - AI๊ธฐ๋ฐ˜ ๊ฐœ์ธํ˜• ๋งž์ถค ๊ฑด๊ฐ•๊ด€๋ฆฌ ์„œ๋น„์Šค > **"AI์™€ ํ•จ๊ป˜ํ•˜๋Š” ์Šค๋งˆํŠธํ•œ ๊ฑด๊ฐ• ์Šต๊ด€ ๋งŒ๋“ค๊ธฐ"** ์ง์žฅ์ธ์„ ์œ„ํ•œ AI ๊ธฐ๋ฐ˜ ๊ฐœ์ธ ๋งž์ถคํ˜• ๊ฑด๊ฐ•๊ด€๋ฆฌ ํ”Œ๋žซํผ์œผ๋กœ, ๊ฑด๊ฐ•๊ฒ€์ง„ ๋ฐ์ดํ„ฐ ๋ถ„์„๋ถ€ํ„ฐ ์ผ์ƒ ๊ฑด๊ฐ• ์Šต๊ด€ ํ˜•์„ฑ๊นŒ์ง€ ์ง€์›ํ•˜๋Š” ์˜ฌ์ธ์› ํ—ฌ์Šค์ผ€์–ด ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“‹ MVP ์‚ฐ์ถœ๋ฌผ ### ๐ŸŽฏ 1. ๋ฐœํ‘œ์ž๋ฃŒ - [MVP ๋ฐœํ‘œ์ž๋ฃŒ](https://gamma.app/docs/HealthSync-mzr82kum8wfpqyf) ### ๐Ÿ—๏ธ 2. ์„ค๊ณ„๊ฒฐ๊ณผ - [๋…ผ๋ฆฌ ์•„ํ‚คํ…์ฒ˜](https://drive.google.com/file/d/1pmg7BXCfOjf_XytCBd5aiROmLoZv5BQG/view?usp=drive_link) - [API ์„ค๊ณ„์„œ](https://docs.google.com/spreadsheets/d/18ApEjdr-ypVo5MlSGuNh8DUjP5tjOd0M/edit?usp=drive_link&ouid=118178534404133188086&rtpof=true&sd=true) - [์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ](https://drive.google.com/file/d/1R5LhWQMk1irxiNmfmTvH1s5Y-OZ5D1oA/view?usp=drive_link) - [ํด๋ž˜์Šค ์„ค๊ณ„์„œ](https://drive.google.com/file/d/1bIeeTnuoJRsllwnNnvbcG-znOgPD9829/view?usp=drive_link) - [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„](https://drive.google.com/file/d/1PIWG69nZMU7_7VsHM1H4A2JiRcPRU0fy/view?usp=drive_link) - [ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋„](https://drive.google.com/file/d/1uewSxUTtsWmibSnxz4DYHJM1hTd3TlXP/view?usp=drive_link) - [๋ฌผ๋ฆฌ ์•„ํ‚คํ…์ฒ˜](https://drive.google.com/file/d/1sW-Noid27NFo1Vj1Pqm_qanz7bA21Ef6/view?usp=drive_link) ### ๐Ÿ“ฑ 3. Git Repository - **๋ฐฑ์—”๋“œ (User/Health/Goal)**: [HealthSync_BE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git) - **๋ฐฑ์—”๋“œ (AI Service)**: [HealthSync_Intelligence](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git) - **๋ฐฑ์—”๋“œ (Motivator Service)**: [HealthSync_Motivator](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git) - **Kubernetes Manifest**: [HealthSync_Manifest](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git) - **ํ”„๋ก ํŠธ์—”๋“œ**: [HealthSync_FE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git) ### ๐ŸŽฌ 4. ์‹œ์—ฐ ๋™์˜์ƒ - [MVP ์‹œ์—ฐ ์˜์ƒ](https://www.youtube.com/watch?v=FW2d6m4Wppo) --- ## ๐Ÿš€ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ### ๐Ÿ’ก ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ **๐Ÿข ํšŒ์‚ฌ ๊ด€์ ** - AI ๊ธฐ๋ฐ˜ ์ดˆ๊ฐœ์ธํ™” ํ—ฌ์Šค์ผ€์–ด ํ”Œ๋žซํผ ๊ฐœ๋ฐœ๋กœ ๊ณ ๊ฐ ์œ ์น˜ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ ๊ทน๋Œ€ํ™” - ๊ธฐ์—… ์ธ์ง€๋„ ํ–ฅ์ƒ ๋ฐ ํ—ฌ์Šค์ผ€์–ด ์‹œ์žฅ ์„ ์  **๐Ÿ‘ค ๊ณ ๊ฐ ๊ด€์ ** - ๊ฑด๊ฐ•ํ•œ ์ƒํ™œ์„ ์œ ์ง€ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณ ๊ฐ์—๊ฒŒ ์ง€์†์ ์ธ ๊ฑด๊ฐ• ๊ฐœ์„  ์ถ”์  ์ œ๊ณต - ์‚ฌ์šฉ์ž ์ค‘์‹ฌ์˜ ๊ฐœ์ธํ™”๋œ ํ—ฌ์Šค์ผ€์–ด ๊ฒฝํ—˜ ์ œ๊ณต ### ๐ŸŽฏ ํ•ต์‹ฌ ๊ธฐ๋Šฅ #### ๐Ÿ” ์ธ์ฆ & ์˜จ๋ณด๋”ฉ - **๊ฐ„ํŽธ ๋กœ๊ทธ์ธ**: ๊ตฌ๊ธ€ ๊ณ„์ • ์—ฐ๋™์œผ๋กœ ์‰ฌ์šด ํšŒ์›๊ฐ€์ž… - **๊ฐœ์ธํ™” ์„ค์ •**: ์ง์—…๊ตฐ๋ณ„ ๋งž์ถค ์ •๋ณด ์ˆ˜์ง‘ (IT/PM/๋งˆ์ผ€ํŒ…/์˜์—…/์ธํ”„๋ผ์šด์˜/๊ณ ๊ฐ์ƒ๋‹ด) #### ๐Ÿ“Š ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ ๋ถ„์„ - **๊ฑด๊ฐ•๊ฒ€์ง„ ์—ฐ๋™**: ๊ฑด๊ฐ•๋ณดํ—˜๊ณต๋‹จ ๋ฐ์ดํ„ฐ ์ž๋™ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ - **AI ์ง„๋‹จ**: Claude API ๊ธฐ๋ฐ˜ 3์ค„ ์š”์•ฝ ๊ฑด๊ฐ• ์ƒํƒœ ๋ถ„์„ - **์ด๋ ฅ ๊ด€๋ฆฌ**: ์ตœ๊ทผ 5ํšŒ ๊ฑด๊ฐ•๊ฒ€์ง„ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™” #### ๐ŸŽฏ ์Šค๋งˆํŠธ ๋ฏธ์…˜ ์‹œ์Šคํ…œ - **AI ์ถ”์ฒœ**: ๊ฑด๊ฐ• ์ƒํƒœ + ์ง์—… ํŠน์„ฑ ๊ณ ๋ คํ•œ 5๊ฐœ ๋งž์ถค ๋ฏธ์…˜ ์ œ์•ˆ - **์Šต๊ด€ ์ถ”์ **: ์ผ์ผ ๋ชฉํ‘œ ์„ค์ • ๋ฐ ๋‹ฌ์„ฑ๋ฅ  ๋ชจ๋‹ˆํ„ฐ๋ง - **์„ฑ์ทจ ๊ด€๋ฆฌ**: ์—ฐ์† ๋‹ฌ์„ฑ ๊ธฐ๋ก ๋ฐ ๋งˆ์ผ์Šคํ†ค ๋ณด์ƒ #### ๐Ÿ’ฌ AI ํ—ฌ์Šค ์ฝ”์น˜ - **์‹ค์‹œ๊ฐ„ ์ƒ๋‹ด**: ๊ฑด๊ฐ• ๊ด€๋ จ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์ „๋ฌธ์  ๋‹ต๋ณ€ - **๋…๋ ค ๋ฉ”์‹œ์ง€**: ์ฃผ๊ธฐ์  ๋™๊ธฐ๋ถ€์—ฌ ๋ฐ ๋ฆฌ๋งˆ์ธ๋” ์•Œ๋ฆผ - **์ถ•ํ•˜ ์‹œ์Šคํ…œ**: ๋ฏธ์…˜ ๋‹ฌ์„ฑ ์‹œ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต ### ๐Ÿ—๏ธ ๊ธฐ์ˆ  ์•„ํ‚คํ…์ฒ˜ #### ๐Ÿ“ฑ Frontend - **React 18** + **TypeScript** - **Material-UI** ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - ๋ชจ๋ฐ”์ผ ํผ์ŠคํŠธ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ - PWA ์ง€์›์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ์ˆ˜์ค€ ๊ฒฝํ—˜ #### โš™๏ธ Backend (๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค) - **Spring Boot 3.4.0** + **Java 21** - **Clean/Hexagonal Architecture** ์ ์šฉ - **Spring Cloud Gateway** ํ†ตํ•ฉ API ๊ฒŒ์ดํŠธ์›จ์ด - **JWT ๊ธฐ๋ฐ˜** ์ธ์ฆ/์ธ๊ฐ€ ์‹œ์Šคํ…œ - **User/Health/Goal**: ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ - **Motivator**: ๋™๊ธฐ๋ถ€์—ฌ ๋ฐ ์•Œ๋ฆผ ์ „๋‹ด ์„œ๋น„์Šค #### ๐Ÿง  AI Service - **Python FastAPI** + **Claude API** ์ง์ ‘ ์—ฐ๋™ - ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„ ๋ณด์žฅ - Redis ์บ์‹ฑ์œผ๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™” #### ๐Ÿ—„๏ธ Data Layer - **PostgreSQL 15**: ๋ฉ”์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - **Redis 7**: ์บ์‹ฑ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ - **Azure Blob Storage**: ๊ฑด๊ฐ•๊ฒ€์ง„ ํŒŒ์ผ ์ €์žฅ #### โ˜๏ธ Infrastructure - **Azure Kubernetes Service (AKS)**: ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ - **Azure Container Registry (ACR)**: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ - **Jenkins + ArgoCD**: CI/CD ํŒŒ์ดํ”„๋ผ์ธ - **GitOps**: Manifest ์ €์žฅ์†Œ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ์ž๋™ํ™” - **Nginx Ingress**: ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ SSL ์ข…๋ฃŒ --- ## ๐Ÿ› ๏ธ ๋กœ์ปฌ ์‹คํ–‰ ๊ฐ€์ด๋“œ ### ๐Ÿ“‹ ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ - **Java 21+** - **Node.js 18+** - **Docker & Docker Compose** - **Git** ### ๐Ÿ”ง ํ™˜๊ฒฝ ์„ค์ • #### 1. ์ €์žฅ์†Œ ํด๋ก  ```bash # ๋ฐฑ์—”๋“œ (User/Health/Goal ์„œ๋น„์Šค) git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git cd HealthSync_BE # ๋ฐฑ์—”๋“œ (AI ์„œ๋น„์Šค) git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git cd HealthSync_Intelligence # ๋ฐฑ์—”๋“œ (Motivator ์„œ๋น„์Šค) git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git cd HealthSync_Motivator # Kubernetes Manifest git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git cd HealthSync_Manifest # ํ”„๋ก ํŠธ์—”๋“œ git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git cd HealthSync_FE ``` #### 2. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ```bash # .env ํŒŒ์ผ ์ƒ์„ฑ cp .env.example .env # ํ•„์ˆ˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • export CLAUDE_API_KEY=your_claude_api_key export GOOGLE_CLIENT_ID=your_google_client_id export GOOGLE_CLIENT_SECRET=your_google_client_secret export DB_PASSWORD=your_database_password ``` ### ๐Ÿš€ ์‹คํ–‰ ๋ฐฉ๋ฒ• #### Option 1: Docker Compose (์ถ”์ฒœ) ```bash # ์ „์ฒด ์„œ๋น„์Šค ์‹œ์ž‘ docker-compose up -d # ํŠน์ • ์„œ๋น„์Šค๋งŒ ์‹œ์ž‘ docker-compose up -d postgres redis docker-compose up -d backend docker-compose up -d frontend # ๋กœ๊ทธ ํ™•์ธ docker-compose logs -f ``` #### Option 2: ๊ฐœ๋ณ„ ์‹คํ–‰ ```bash # 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘ docker-compose up -d postgres redis # 2. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ์‹œ์ž‘ # User/Health/Goal ์„œ๋น„์Šค cd HealthSync_BE ./gradlew bootRun # AI ์„œ๋น„์Šค (๋ณ„๋„ ํ„ฐ๋ฏธ๋„) cd HealthSync_Intelligence python -m uvicorn main:app --reload --port 8083 # Motivator ์„œ๋น„์Šค (๋ณ„๋„ ํ„ฐ๋ฏธ๋„) cd HealthSync_Motivator ./gradlew bootRun # ๋˜๋Š” python main.py (๊ธฐ์ˆ ์Šคํƒ์— ๋”ฐ๋ผ) # 3. ํ”„๋ก ํŠธ์—”๋“œ ์‹œ์ž‘ cd HealthSync_FE npm install npm start ``` ### ๐ŸŒ ์ ‘์† ์ •๋ณด - **ํ”„๋ก ํŠธ์—”๋“œ**: http://localhost:3000 - **API Gateway**: http://localhost:8080 - **Swagger UI**: http://localhost:8080/swagger-ui.html - **PostgreSQL**: localhost:5432 - **Redis**: localhost:6379 --- ## ๐Ÿšข CI/CD ๊ฐ€์ด๋“œ ### ๐Ÿ”„ ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ #### 1. CI ํŒŒ์ดํ”„๋ผ์ธ (Jenkins) ```yaml stages: - checkout: ์†Œ์Šค ์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ - test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹คํ–‰ - build: Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ - push: Azure Container Registry์— ์ด๋ฏธ์ง€ ํ‘ธ์‹œ - deploy: Manifest ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธ ๋ฐ ArgoCD ๋ฐฐํฌ ํŠธ๋ฆฌ๊ฑฐ ``` #### 2. CD ํŒŒ์ดํ”„๋ผ์ธ (ArgoCD) ```yaml source: repoURL: https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git path: overlays/production destination: server: https://kubernetes.default.svc namespace: healthsync-prod ``` ### ๐Ÿ—๏ธ ๋ฐฐํฌ ํ™˜๊ฒฝ #### Development - **URL**: https://dev.healthsync.com - **์ž๋™ ๋ฐฐํฌ**: main ๋ธŒ๋žœ์น˜ push ์‹œ - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: Development PostgreSQL #### Production - **URL**: https://healthsync.com - **๋ฐฐํฌ ๋ฐฉ์‹**: ์ˆ˜๋™ ์Šน์ธ ํ›„ ๋ฐฐํฌ - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: Production PostgreSQL (๋ฐฑ์—… ์„ค์ •) ### ๐Ÿ“Š ๋ชจ๋‹ˆํ„ฐ๋ง - **Prometheus**: ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ - **Grafana**: ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ์•Œ๋ฆผ - **Application Insights**: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง --- ## ๐Ÿ‘ฅ ํŒ€ ๊ตฌ์„ฑ (Agentic Workflow) ### ๐ŸŽฏ M์‚ฌ์ƒ ์‹ค์ฒœ **Value-Oriented** | **Interactive** | **Iterative** | ์—ญํ•  | ์ด๋ฆ„ | ๋‹ด๋‹น ์˜์—ญ | |------|------|-----------| | **PO** | ๊น€PO "PO" | ์ œํ’ˆ ๊ธฐํš ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ ์ •์˜ | | **UI/UX** | ๊น€์†Œ์˜ "์œ ์—‘์Šค" | ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์„ค๊ณ„ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ๋””์ž์ธ | | **Frontend** | ์ด์ค€์ˆ˜ "ํ”„๋ก ํŠธ" | React ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ | | **Backend** | ๋ฐ•์„œ์ค€ "๋ฐฑ์—”๋“œ" | Spring Boot ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐœ๋ฐœ | | **DevOps** | ์ •๋ฏผ์•„ "๋ฐ๋ธŒ์˜ต์Šค" | CI/CD ๋ฐ ์ธํ”„๋ผ ์ž๋™ํ™” | | **Data Science** | ์ตœํƒœํ˜ธ "๋ฐ์‚ฌ์ด" | AI ๋ชจ๋ธ ๊ฐœ๋ฐœ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถ„์„ | | **Medical** | ๊น€์ง€ํ˜„ "๋‹ฅํ„ฐํ‚ด" | ์˜๋ฃŒ ์ „๋ฌธ ์ž๋ฌธ ๋ฐ ๊ฒ€์ฆ | | **QA** | ์œค๋„ํ˜„ "ํ…Œ์Šคํ„ฐ" | ํ’ˆ์งˆ ๋ณด์ฆ ๋ฐ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” | | **Security** | ์„œ์˜ˆ๋ฆฐ "์‹œํ์–ด" | ๋ณด์•ˆ ๋ฐ ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ | --- ## ๐Ÿ“œ ๋ผ์ด์„ ์Šค MIT License - ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](./LICENSE) ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”. --- ## ๐Ÿ“ž ๋ฌธ์˜ ๋ฐ ์ง€์› - **์ด์Šˆ ์ œ์ถœ**: [Gitea Issues](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/issues) - **๊ธฐ๋Šฅ ์š”์ฒญ**: [Feature Request](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/discussions) - **๋ณด์•ˆ ๋ฌธ์˜**: security@healthsync.com --- *๐ŸŽฏ ๊ฑด๊ฐ•ํ•œ ์Šต๊ด€, AI์™€ ํ•จ๊ป˜ ์‹œ์ž‘ํ•˜์„ธ์š”! HealthSync๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฑด๊ฐ•ํ•œ ๋‚ด์ผ์„ ์‘์›ํ•ฉ๋‹ˆ๋‹ค.*# ๐Ÿฅ HealthSync - AI๊ธฐ๋ฐ˜ ๊ฐœ์ธํ˜• ๋งž์ถค ๊ฑด๊ฐ•๊ด€๋ฆฌ ์„œ๋น„์Šค > **"AI์™€ ํ•จ๊ป˜ํ•˜๋Š” ์Šค๋งˆํŠธํ•œ ๊ฑด๊ฐ• ์Šต๊ด€ ๋งŒ๋“ค๊ธฐ"** ์ง์žฅ์ธ์„ ์œ„ํ•œ AI ๊ธฐ๋ฐ˜ ๊ฐœ์ธ ๋งž์ถคํ˜• ๊ฑด๊ฐ•๊ด€๋ฆฌ ํ”Œ๋žซํผ์œผ๋กœ, ๊ฑด๊ฐ•๊ฒ€์ง„ ๋ฐ์ดํ„ฐ ๋ถ„์„๋ถ€ํ„ฐ ์ผ์ƒ ๊ฑด๊ฐ• ์Šต๊ด€ ํ˜•์„ฑ๊นŒ์ง€ ์ง€์›ํ•˜๋Š” ์˜ฌ์ธ์› ํ—ฌ์Šค์ผ€์–ด ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“‹ MVP ์‚ฐ์ถœ๋ฌผ ### ๐ŸŽฏ 1. ๋ฐœํ‘œ์ž๋ฃŒ - [MVP ๋ฐœํ‘œ์ž๋ฃŒ](https://gamma.app/docs/HealthSync-mzr82kum8wfpqyf) ### ๐Ÿ—๏ธ 2. ์„ค๊ณ„๊ฒฐ๊ณผ - [๋…ผ๋ฆฌ ์•„ํ‚คํ…์ฒ˜](https://drive.google.com/file/d/1pmg7BXCfOjf_XytCBd5aiROmLoZv5BQG/view?usp=drive_link) - [API ์„ค๊ณ„์„œ](https://docs.google.com/spreadsheets/d/18ApEjdr-ypVo5MlSGuNh8DUjP5tjOd0M/edit?usp=drive_link&ouid=118178534404133188086&rtpof=true&sd=true) - [์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ](https://drive.google.com/file/d/1R5LhWQMk1irxiNmfmTvH1s5Y-OZ5D1oA/view?usp=drive_link) - [ํด๋ž˜์Šค ์„ค๊ณ„์„œ](https://drive.google.com/file/d/1bIeeTnuoJRsllwnNnvbcG-znOgPD9829/view?usp=drive_link) - [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„](https://drive.google.com/file/d/1PIWG69nZMU7_7VsHM1H4A2JiRcPRU0fy/view?usp=drive_link) - [ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋„](https://drive.google.com/file/d/1uewSxUTtsWmibSnxz4DYHJM1hTd3TlXP/view?usp=drive_link) - [๋ฌผ๋ฆฌ ์•„ํ‚คํ…์ฒ˜](https://drive.google.com/file/d/1sW-Noid27NFo1Vj1Pqm_qanz7bA21Ef6/view?usp=drive_link) ### ๐Ÿ“ฑ 3. Git Repository - **๋ฐฑ์—”๋“œ (User/Health/Goal)**: [HealthSync_BE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git) - **๋ฐฑ์—”๋“œ (AI Service)**: [HealthSync_Intelligence](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git) - **๋ฐฑ์—”๋“œ (Motivator Service)**: [HealthSync_Motivator](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git) - **Kubernetes Manifest**: [HealthSync_Manifest](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git) - **ํ”„๋ก ํŠธ์—”๋“œ**: [HealthSync_FE](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git) ### ๐ŸŽฌ 4. ์‹œ์—ฐ ๋™์˜์ƒ - [MVP ์‹œ์—ฐ ์˜์ƒ](https://youtube.com/shorts/ptJ4hGYEh4o?feature=share) --- ## ๐Ÿš€ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ ### ๐Ÿ’ก ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ **๐Ÿข ํšŒ์‚ฌ ๊ด€์ ** - AI ๊ธฐ๋ฐ˜ ์ดˆ๊ฐœ์ธํ™” ํ—ฌ์Šค์ผ€์–ด ํ”Œ๋žซํผ ๊ฐœ๋ฐœ๋กœ ๊ณ ๊ฐ ์œ ์น˜ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ ๊ทน๋Œ€ํ™” - ๊ธฐ์—… ์ธ์ง€๋„ ํ–ฅ์ƒ ๋ฐ ํ—ฌ์Šค์ผ€์–ด ์‹œ์žฅ ์„ ์  **๐Ÿ‘ค ๊ณ ๊ฐ ๊ด€์ ** - ๊ฑด๊ฐ•ํ•œ ์ƒํ™œ์„ ์œ ์ง€ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณ ๊ฐ์—๊ฒŒ ์ง€์†์ ์ธ ๊ฑด๊ฐ• ๊ฐœ์„  ์ถ”์  ์ œ๊ณต - ์‚ฌ์šฉ์ž ์ค‘์‹ฌ์˜ ๊ฐœ์ธํ™”๋œ ํ—ฌ์Šค์ผ€์–ด ๊ฒฝํ—˜ ์ œ๊ณต ### ๐ŸŽฏ ํ•ต์‹ฌ ๊ธฐ๋Šฅ #### ๐Ÿ” ์ธ์ฆ & ์˜จ๋ณด๋”ฉ - **๊ฐ„ํŽธ ๋กœ๊ทธ์ธ**: ๊ตฌ๊ธ€ ๊ณ„์ • ์—ฐ๋™์œผ๋กœ ์‰ฌ์šด ํšŒ์›๊ฐ€์ž… - **๊ฐœ์ธํ™” ์„ค์ •**: ์ง์—…๊ตฐ๋ณ„ ๋งž์ถค ์ •๋ณด ์ˆ˜์ง‘ (IT/PM/๋งˆ์ผ€ํŒ…/์˜์—…/์ธํ”„๋ผ์šด์˜/๊ณ ๊ฐ์ƒ๋‹ด) #### ๐Ÿ“Š ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ ๋ถ„์„ - **๊ฑด๊ฐ•๊ฒ€์ง„ ์—ฐ๋™**: ๊ฑด๊ฐ•๋ณดํ—˜๊ณต๋‹จ ๋ฐ์ดํ„ฐ ์ž๋™ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ - **AI ์ง„๋‹จ**: Claude API ๊ธฐ๋ฐ˜ 3์ค„ ์š”์•ฝ ๊ฑด๊ฐ• ์ƒํƒœ ๋ถ„์„ - **์ด๋ ฅ ๊ด€๋ฆฌ**: ์ตœ๊ทผ 5ํšŒ ๊ฑด๊ฐ•๊ฒ€์ง„ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™” #### ๐ŸŽฏ ์Šค๋งˆํŠธ ๋ฏธ์…˜ ์‹œ์Šคํ…œ - **AI ์ถ”์ฒœ**: ๊ฑด๊ฐ• ์ƒํƒœ + ์ง์—… ํŠน์„ฑ ๊ณ ๋ คํ•œ 5๊ฐœ ๋งž์ถค ๋ฏธ์…˜ ์ œ์•ˆ - **์Šต๊ด€ ์ถ”์ **: ์ผ์ผ ๋ชฉํ‘œ ์„ค์ • ๋ฐ ๋‹ฌ์„ฑ๋ฅ  ๋ชจ๋‹ˆํ„ฐ๋ง - **์„ฑ์ทจ ๊ด€๋ฆฌ**: ์—ฐ์† ๋‹ฌ์„ฑ ๊ธฐ๋ก ๋ฐ ๋งˆ์ผ์Šคํ†ค ๋ณด์ƒ #### ๐Ÿ’ฌ AI ํ—ฌ์Šค ์ฝ”์น˜ - **์‹ค์‹œ๊ฐ„ ์ƒ๋‹ด**: ๊ฑด๊ฐ• ๊ด€๋ จ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์ „๋ฌธ์  ๋‹ต๋ณ€ - **๋…๋ ค ๋ฉ”์‹œ์ง€**: ์ฃผ๊ธฐ์  ๋™๊ธฐ๋ถ€์—ฌ ๋ฐ ๋ฆฌ๋งˆ์ธ๋” ์•Œ๋ฆผ - **์ถ•ํ•˜ ์‹œ์Šคํ…œ**: ๋ฏธ์…˜ ๋‹ฌ์„ฑ ์‹œ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต ### ๐Ÿ—๏ธ ๊ธฐ์ˆ  ์•„ํ‚คํ…์ฒ˜ #### ๐Ÿ“ฑ Frontend - **React 18** + **TypeScript** - **Material-UI** ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - ๋ชจ๋ฐ”์ผ ํผ์ŠคํŠธ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ - PWA ์ง€์›์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ์ˆ˜์ค€ ๊ฒฝํ—˜ #### โš™๏ธ Backend (๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค) - **Spring Boot 3.4.0** + **Java 21** - **Clean/Hexagonal Architecture** ์ ์šฉ - **Spring Cloud Gateway** ํ†ตํ•ฉ API ๊ฒŒ์ดํŠธ์›จ์ด - **JWT ๊ธฐ๋ฐ˜** ์ธ์ฆ/์ธ๊ฐ€ ์‹œ์Šคํ…œ - **User/Health/Goal**: ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ - **Motivator**: ๋™๊ธฐ๋ถ€์—ฌ ๋ฐ ์•Œ๋ฆผ ์ „๋‹ด ์„œ๋น„์Šค #### ๐Ÿง  AI Service - **Python FastAPI** + **Claude API** ์ง์ ‘ ์—ฐ๋™ - ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„ ๋ณด์žฅ - Redis ์บ์‹ฑ์œผ๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™” #### ๐Ÿ—„๏ธ Data Layer - **PostgreSQL 15**: ๋ฉ”์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - **Redis 7**: ์บ์‹ฑ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ - **Azure Blob Storage**: ๊ฑด๊ฐ•๊ฒ€์ง„ ํŒŒ์ผ ์ €์žฅ #### โ˜๏ธ Infrastructure - **Azure Kubernetes Service (AKS)**: ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ - **Azure Container Registry (ACR)**: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ - **Jenkins + ArgoCD**: CI/CD ํŒŒ์ดํ”„๋ผ์ธ - **GitOps**: Manifest ์ €์žฅ์†Œ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ์ž๋™ํ™” - **Nginx Ingress**: ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ SSL ์ข…๋ฃŒ --- ## ๐Ÿ› ๏ธ ๋กœ์ปฌ ์‹คํ–‰ ๊ฐ€์ด๋“œ ### ๐Ÿ“‹ ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ - **Java 21+** - **Node.js 18+** - **Docker & Docker Compose** - **Git** ### ๐Ÿ”ง ํ™˜๊ฒฝ ์„ค์ • #### 1. ์ €์žฅ์†Œ ํด๋ก  ```bash # ๋ฐฑ์—”๋“œ (User/Health/Goal ์„œ๋น„์Šค) git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_BE.git cd HealthSync_BE # ๋ฐฑ์—”๋“œ (AI ์„œ๋น„์Šค) git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Intelligence.git cd HealthSync_Intelligence # ๋ฐฑ์—”๋“œ (Motivator ์„œ๋น„์Šค) git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Motivator.git cd HealthSync_Motivator # Kubernetes Manifest git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git cd HealthSync_Manifest # ํ”„๋ก ํŠธ์—”๋“œ git clone https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE.git cd HealthSync_FE ``` #### 2. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ```bash # .env ํŒŒ์ผ ์ƒ์„ฑ cp .env.example .env # ํ•„์ˆ˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • export CLAUDE_API_KEY=your_claude_api_key export GOOGLE_CLIENT_ID=your_google_client_id export GOOGLE_CLIENT_SECRET=your_google_client_secret export DB_PASSWORD=your_database_password ``` ### ๐Ÿš€ ์‹คํ–‰ ๋ฐฉ๋ฒ• #### Option 1: Docker Compose (์ถ”์ฒœ) ```bash # ์ „์ฒด ์„œ๋น„์Šค ์‹œ์ž‘ docker-compose up -d # ํŠน์ • ์„œ๋น„์Šค๋งŒ ์‹œ์ž‘ docker-compose up -d postgres redis docker-compose up -d backend docker-compose up -d frontend # ๋กœ๊ทธ ํ™•์ธ docker-compose logs -f ``` #### Option 2: ๊ฐœ๋ณ„ ์‹คํ–‰ ```bash # 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘ docker-compose up -d postgres redis # 2. ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ์‹œ์ž‘ # User/Health/Goal ์„œ๋น„์Šค cd HealthSync_BE ./gradlew bootRun # AI ์„œ๋น„์Šค (๋ณ„๋„ ํ„ฐ๋ฏธ๋„) cd HealthSync_Intelligence python -m uvicorn main:app --reload --port 8083 # Motivator ์„œ๋น„์Šค (๋ณ„๋„ ํ„ฐ๋ฏธ๋„) cd HealthSync_Motivator ./gradlew bootRun # ๋˜๋Š” python main.py (๊ธฐ์ˆ ์Šคํƒ์— ๋”ฐ๋ผ) # 3. ํ”„๋ก ํŠธ์—”๋“œ ์‹œ์ž‘ cd HealthSync_FE npm install npm start ``` ### ๐ŸŒ ์ ‘์† ์ •๋ณด - **ํ”„๋ก ํŠธ์—”๋“œ**: http://localhost:3000 - **API Gateway**: http://localhost:8080 - **Swagger UI**: http://localhost:8080/swagger-ui.html - **PostgreSQL**: localhost:5432 - **Redis**: localhost:6379 --- ## ๐Ÿšข CI/CD ๊ฐ€์ด๋“œ ### ๐Ÿ”„ ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ #### 1. CI ํŒŒ์ดํ”„๋ผ์ธ (Jenkins) ```yaml stages: - checkout: ์†Œ์Šค ์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ - test: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹คํ–‰ - build: Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ - push: Azure Container Registry์— ์ด๋ฏธ์ง€ ํ‘ธ์‹œ - deploy: Manifest ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธ ๋ฐ ArgoCD ๋ฐฐํฌ ํŠธ๋ฆฌ๊ฑฐ ``` #### 2. CD ํŒŒ์ดํ”„๋ผ์ธ (ArgoCD) ```yaml source: repoURL: https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_Manifest.git path: overlays/production destination: server: https://kubernetes.default.svc namespace: healthsync-prod ``` ### ๐Ÿ—๏ธ ๋ฐฐํฌ ํ™˜๊ฒฝ #### Development - **URL**: https://dev.healthsync.com - **์ž๋™ ๋ฐฐํฌ**: main ๋ธŒ๋žœ์น˜ push ์‹œ - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: Development PostgreSQL #### Production - **URL**: https://healthsync.com - **๋ฐฐํฌ ๋ฐฉ์‹**: ์ˆ˜๋™ ์Šน์ธ ํ›„ ๋ฐฐํฌ - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: Production PostgreSQL (๋ฐฑ์—… ์„ค์ •) ### ๐Ÿ“Š ๋ชจ๋‹ˆํ„ฐ๋ง - **Prometheus**: ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ - **Grafana**: ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ์•Œ๋ฆผ - **Application Insights**: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง --- ## ๐Ÿ‘ฅ ํŒ€ ๊ตฌ์„ฑ (Agentic Workflow) ### ๐ŸŽฏ M์‚ฌ์ƒ ์‹ค์ฒœ **Value-Oriented** | **Interactive** | **Iterative** | ์—ญํ•  | ์ด๋ฆ„ | ๋‹ด๋‹น ์˜์—ญ | |------|------|-----------| | **PO** | ๊น€PO "PO" | ์ œํ’ˆ ๊ธฐํš ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ€์น˜ ์ •์˜ | | **UI/UX** | ๊น€์†Œ์˜ "์œ ์—‘์Šค" | ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์„ค๊ณ„ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ๋””์ž์ธ | | **Frontend** | ์ด์ค€์ˆ˜ "ํ”„๋ก ํŠธ" | React ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ | | **Backend** | ๋ฐ•์„œ์ค€ "๋ฐฑ์—”๋“œ" | Spring Boot ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐœ๋ฐœ | | **DevOps** | ์ •๋ฏผ์•„ "๋ฐ๋ธŒ์˜ต์Šค" | CI/CD ๋ฐ ์ธํ”„๋ผ ์ž๋™ํ™” | | **Data Science** | ์ตœํƒœํ˜ธ "๋ฐ์‚ฌ์ด" | AI ๋ชจ๋ธ ๊ฐœ๋ฐœ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถ„์„ | | **Medical** | ๊น€์ง€ํ˜„ "๋‹ฅํ„ฐํ‚ด" | ์˜๋ฃŒ ์ „๋ฌธ ์ž๋ฌธ ๋ฐ ๊ฒ€์ฆ | | **QA** | ์œค๋„ํ˜„ "ํ…Œ์Šคํ„ฐ" | ํ’ˆ์งˆ ๋ณด์ฆ ๋ฐ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” | | **Security** | ์„œ์˜ˆ๋ฆฐ "์‹œํ์–ด" | ๋ณด์•ˆ ๋ฐ ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ | --- ## ๐Ÿ“œ ๋ผ์ด์„ ์Šค MIT License - ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](./LICENSE) ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”. --- ## ๐Ÿ“ž ๋ฌธ์˜ ๋ฐ ์ง€์› - **์ด์Šˆ ์ œ์ถœ**: [Gitea Issues](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/issues) - **๊ธฐ๋Šฅ ์š”์ฒญ**: [Feature Request](https://gitea.cbiz.kubepia.net/dg04-1tier/HealthSync_FE/discussions) - **๋ณด์•ˆ ๋ฌธ์˜**: security@healthsync.com --- *๐ŸŽฏ ๊ฑด๊ฐ•ํ•œ ์Šต๊ด€, AI์™€ ํ•จ๊ป˜ ์‹œ์ž‘ํ•˜์„ธ์š”! HealthSync๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฑด๊ฐ•ํ•œ ๋‚ด์ผ์„ ์‘์›ํ•ฉ๋‹ˆ๋‹ค.*