File size: 1,569 Bytes
e221c83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
```mermaid
graph LR

```
    %% 1. ํด๋ผ์ด์–ธํŠธ ์˜์—ญ
    subgraph Client ["๐Ÿ’ป Client Side (Frontend)"]
        User[๐Ÿ‘ค ์‚ฌ์šฉ์ž / ์›น ๋ธŒ๋ผ์šฐ์ €<br/>(HTML5, CSS3, JS)]
    end

    %% 2. ์„œ๋ฒ„ ์˜์—ญ
    subgraph Server ["โš™๏ธ Flask Server (Backend)"]
        direction TB
        Controller[๐ŸŽฎ Main Controller<br/>(Routing & Logic)]
        InternalModel[๐Ÿค– Internal AI Engine<br/>(klue/roberta-base)]
    end

    %% 3. ์ธํ”„๋ผ ๋ฐ ์™ธ๋ถ€ ์„œ๋น„์Šค ์˜์—ญ
    subgraph External ["โ˜๏ธ Infrastructure & External APIs"]
        direction TB
        Gemini[โœจ Google Gemini API<br/>(Generative AI Recommendation)]
        Supabase[(๐Ÿ—„๏ธ Supabase DB<br/>PostgreSQL)]
    end

    %% --- ๋ฐ์ดํ„ฐ ํ๋ฆ„ (Flow) ---
    
    %% ๋ถ„์„ ๋‹จ๊ณ„
    User -- "1. ์ผ๊ธฐ ์ž‘์„ฑ & ๋ถ„์„ ์š”์ฒญ (/api/predict)" --> Controller
    Controller -- "2. ํ…์ŠคํŠธ ์ „์ฒ˜๋ฆฌ & ์ถ”๋ก " --> InternalModel
    InternalModel -- "3. ๊ฐ์ • ๋ผ๋ฒจ & ํ™•๋ฅ  ๋ฐ˜ํ™˜" --> Controller
    Controller -- "4. ์ถ”์ฒœ ์š”์ฒญ (Prompting)" --> Gemini
    Gemini -- "5. ๋งž์ถคํ˜• ์ฝ˜ํ…์ธ  ์ƒ์„ฑ" --> Controller
    Controller -- "6. ๋ถ„์„ ๊ฒฐ๊ณผ(JSON) ์‘๋‹ต" --> User

    %% ์ €์žฅ ๋‹จ๊ณ„
    User -- "7. '์ €์žฅํ•˜๊ธฐ' ํด๋ฆญ (/diary/save)" --> Controller
    Controller -- "8. ์˜๊ตฌ ์ €์žฅ (INSERT)" --> Supabase

    %% ์Šคํƒ€์ผ๋ง (์„ ํƒ ์‚ฌํ•ญ)
    style Client fill:#e1f5fe,stroke:#01579b
    style Server fill:#fff3e0,stroke:#e65100
    style External fill:#f3e5f5,stroke:#4a148c
    style InternalModel fill:#ffccbc,stroke:#bf360c,stroke-width:2px 
    ```
```