SOY NV AI commited on
Commit
0088be3
ยท
1 Parent(s): aeaf133

Add detailed Railway PostgreSQL setup guide

Browse files
Files changed (1) hide show
  1. RAILWAY_POSTGRESQL_SETUP.md +261 -0
RAILWAY_POSTGRESQL_SETUP.md ADDED
@@ -0,0 +1,261 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Railway PostgreSQL ์„ค์ • ๊ฐ€์ด๋“œ
2
+
3
+ Railway์—์„œ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Hugging Face Spaces์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
4
+
5
+ ## 1. Railway์—์„œ PostgreSQL ์„œ๋น„์Šค ์ƒ์„ฑ
6
+
7
+ ### ๋ฐฉ๋ฒ• 1: ์ƒˆ ํ”„๋กœ์ ํŠธ์—์„œ PostgreSQL ์ถ”๊ฐ€ (๊ถŒ์žฅ)
8
+
9
+ 1. **Railway ๋Œ€์‹œ๋ณด๋“œ ์ ‘์†**
10
+ - https://railway.app ์ ‘์† ๋ฐ ๋กœ๊ทธ์ธ
11
+
12
+ 2. **์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ**
13
+ - ์ขŒ์ธก ์ƒ๋‹จ์˜ **"+ New Project"** ํด๋ฆญ
14
+ - **"Deploy from GitHub repo"** ๋˜๋Š” **"Empty Project"** ์„ ํƒ
15
+ - ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ์ž…๋ ฅ (์˜ˆ: `soy-nv-ai-db`)
16
+
17
+ 3. **PostgreSQL ์„œ๋น„์Šค ์ถ”๊ฐ€**
18
+ - ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ **"+ New"** ๋ฒ„ํŠผ ํด๋ฆญ
19
+ - **"Database"** ์„ ํƒ
20
+ - **"Add PostgreSQL"** ํด๋ฆญ
21
+ - Railway๊ฐ€ ์ž๋™์œผ๋กœ PostgreSQL ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค (์•ฝ 1-2๋ถ„ ์†Œ์š”)
22
+
23
+ ### ๋ฐฉ๋ฒ• 2: ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— PostgreSQL ์ถ”๊ฐ€
24
+
25
+ 1. ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ์„ ํƒ
26
+ 2. **"+ New"** ๋ฒ„ํŠผ ํด๋ฆญ
27
+ 3. **"Database"** > **"Add PostgreSQL"** ์„ ํƒ
28
+
29
+ ## 2. PostgreSQL ์—ฐ๊ฒฐ ์ •๋ณด ํ™•์ธ
30
+
31
+ PostgreSQL ์„œ๋น„์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด:
32
+
33
+ 1. **PostgreSQL ์„œ๋น„์Šค ํด๋ฆญ**
34
+ - ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ƒ์„ฑ๋œ PostgreSQL ์„œ๋น„์Šค๋ฅผ ํด๋ฆญ
35
+
36
+ 2. **Variables ํƒญ ํ™•์ธ**
37
+ - ์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œ **"Variables"** ํƒญ ํด๋ฆญ
38
+ - ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋“ค์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:
39
+ - `PGHOST`: ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ
40
+ - `PGPORT`: ํฌํŠธ ๋ฒˆํ˜ธ (๊ธฐ๋ณธ๊ฐ’: 5432)
41
+ - `PGDATABASE`: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„
42
+ - `PGUSER`: ์‚ฌ์šฉ์ž ์ด๋ฆ„
43
+ - `PGPASSWORD`: ๋น„๋ฐ€๋ฒˆํ˜ธ
44
+ - `DATABASE_URL`: ์ „์ฒด ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด โญ (์ด๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค!)
45
+
46
+ 3. **DATABASE_URL ๋ณต์‚ฌ**
47
+ - `DATABASE_URL` ๋ณ€์ˆ˜์˜ **๊ฐ’**์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค
48
+ - ํ˜•์‹: `postgresql://postgres:password@hostname:port/railway`
49
+ - ์˜ˆ์‹œ: `postgresql://postgres:abc123@containers-us-west-123.railway.app:5432/railway`
50
+
51
+ ## 3. Hugging Face Spaces์— ์—ฐ๊ฒฐ ์ •๋ณด ์„ค์ •
52
+
53
+ ### 3-1. Hugging Face Spaces ์ ‘์†
54
+
55
+ 1. https://huggingface.co/spaces ์ ‘์†
56
+ 2. ํ•ด๋‹น Space ํŽ˜์ด์ง€๋กœ ์ด๋™ (์˜ˆ: `wiizm/soyailabs`)
57
+
58
+ ### 3-2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถ”๊ฐ€
59
+
60
+ 1. **Settings ํƒญ ํด๋ฆญ**
61
+ - Space ํŽ˜์ด์ง€ ์ƒ๋‹จ์˜ **"Settings"** ํƒญ ํด๋ฆญ
62
+
63
+ 2. **Repository secrets ์„น์…˜์œผ๋กœ ์ด๋™**
64
+ - ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ **"Repository secrets"** ํด๋ฆญ
65
+ - ๋˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜์—ฌ **"Repository secrets"** ์„น์…˜ ์ฐพ๊ธฐ
66
+
67
+ 3. **์ƒˆ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถ”๊ฐ€**
68
+ - **"New secret"** ๋ฒ„ํŠผ ํด๋ฆญ
69
+ - ๋‹ค์Œ ์ •๋ณด ์ž…๋ ฅ:
70
+ - **Key**: `DATABASE_URL`
71
+ - **Value**: Railway์—์„œ ๋ณต์‚ฌํ•œ `DATABASE_URL` ๊ฐ’ ๋ถ™์—ฌ๋„ฃ๊ธฐ
72
+ ```
73
+ postgresql://postgres:password@hostname:port/railway
74
+ ```
75
+ - **"Add secret"** ๋ฒ„ํŠผ ํด๋ฆญ
76
+
77
+ 4. **ํ™•์ธ**
78
+ - `DATABASE_URL`์ด secrets ๋ชฉ๋ก์— ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
79
+
80
+ ## 4. Spaces ์žฌ๋นŒ๋“œ ๋ฐ ํ™•์ธ
81
+
82
+ ### 4-1. ์ž๋™ ์žฌ๋นŒ๋“œ
83
+
84
+ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด Hugging Face Spaces๊ฐ€ ์ž๋™์œผ๋กœ ์žฌ๋นŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
85
+
86
+ 1. **Settings ํƒญ์—์„œ ๋นŒ๋“œ ์ƒํƒœ ํ™•์ธ**
87
+ - ๋˜๋Š” **"Logs"** ํƒญ์—์„œ ๋นŒ๋“œ ์ง„ํ–‰ ์ƒํ™ฉ ํ™•์ธ
88
+ - ๋นŒ๋“œ ์™„๋ฃŒ๊นŒ์ง€ ์•ฝ 2-5๋ถ„ ์†Œ์š”
89
+
90
+ ### 4-2. ์—ฐ๊ฒฐ ํ™•์ธ
91
+
92
+ ์žฌ๋นŒ๋“œ ์™„๋ฃŒ ํ›„:
93
+
94
+ 1. **๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์Œ URL ์ ‘์†**:
95
+ ```
96
+ https://wiizm-soyailabs.hf.space/api/admin/database/status
97
+ ```
98
+
99
+ 2. **์‘๋‹ต ํ™•์ธ**:
100
+ ```json
101
+ {
102
+ "connected": true,
103
+ "type": "PostgreSQL", // โœ… PostgreSQL ํ™•์ธ
104
+ "uri_masked": "postgresql://***@hostname:port/railway",
105
+ "version": "PostgreSQL 15.x...",
106
+ "test_query": "ํ˜„์žฌ ์‹œ๊ฐ„: 2025-12-08 17:30:00",
107
+ "table_count": 11,
108
+ "user_count": 1,
109
+ "config_count": 1
110
+ }
111
+ ```
112
+
113
+ 3. **์„ฑ๊ณต ํ™•์ธ ์‚ฌํ•ญ**:
114
+ - โœ… `type: "PostgreSQL"` (SQLite๊ฐ€ ์•„๋‹˜)
115
+ - โœ… `connected: true`
116
+ - โœ… `version`์— PostgreSQL ๋ฒ„์ „ ํ‘œ์‹œ
117
+
118
+ ## 5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ž๋™ ์ƒ์„ฑ ํ™•์ธ
119
+
120
+ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๋ฉด ์ž๋™์œผ๋กœ ํ•„์š”ํ•œ ํ…Œ์ด๋ธ”๋“ค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
121
+
122
+ 1. **Logs ํƒญ ํ™•์ธ**:
123
+ - `[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] PostgreSQL ์—ฐ๊ฒฐ ์„ฑ๊ณต!` ๋ฉ”์‹œ์ง€ ํ™•์ธ
124
+ - `[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์™„๋ฃŒ` ๋ฉ”์‹œ์ง€ ํ™•์ธ
125
+
126
+ 2. **Railway์—์„œ ํ™•์ธ** (์„ ํƒ์‚ฌํ•ญ):
127
+ - Railway ํ”„๋กœ์ ํŠธ > PostgreSQL ์„œ๋น„์Šค > **"Data"** ํƒญ
128
+ - ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ” ๋ชฉ๋ก ํ™•์ธ
129
+
130
+ ## 6. ์„ค์ • ์ €์žฅ ํ…Œ์ŠคํŠธ
131
+
132
+ PostgreSQL ์—ฐ๊ฒฐ์ด ํ™•์ธ๋˜๋ฉด:
133
+
134
+ 1. **๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ์ ‘์†**
135
+ - https://wiizm-soyailabs.hf.space/admin/settings
136
+
137
+ 2. **Gemini API ํ‚ค ์ €์žฅ**
138
+ - API ํ‚ค ์ž…๋ ฅ ํ›„ ์ €์žฅ
139
+
140
+ 3. **์ €์žฅ ํ™•์ธ**
141
+ - `/api/admin/database/status`์—์„œ `config_count` ํ™•์ธ
142
+ - `config_count`๊ฐ€ 1 ์ด์ƒ์ด๋ฉด ์ €์žฅ ์„ฑ๊ณต
143
+
144
+ 4. **์˜๊ตฌ ์ €์žฅ ํ™•์ธ**
145
+ - Spaces๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ด๋„
146
+ - `/api/admin/database/status`์—์„œ `config_count`๊ฐ€ ์œ ์ง€๋˜๋Š”์ง€ ํ™•์ธ
147
+
148
+ ## ๋ฌธ์ œ ํ•ด๊ฒฐ
149
+
150
+ ### PostgreSQL ์—ฐ๊ฒฐ ์‹คํŒจ
151
+
152
+ **์ฆ์ƒ**: `/api/admin/database/status`์—์„œ `connected: false` ๋˜๋Š” `type: "SQLite"`
153
+
154
+ **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•**:
155
+
156
+ 1. **ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธ**:
157
+ - Hugging Face Spaces > Settings > Repository secrets
158
+ - `DATABASE_URL`์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
159
+ - ๊ฐ’์— ๊ณต๋ฐฑ์ด๋‚˜ ์ค„๋ฐ”๊ฟˆ์ด ์—†๋Š”์ง€ ํ™•์ธ
160
+
161
+ 2. **์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ํ˜•์‹ ํ™•์ธ**:
162
+ - `postgresql://` ๋˜๋Š” `postgres://`๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•จ
163
+ - ๋น„๋ฐ€๋ฒˆํ˜ธ์— ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด URL ์ธ์ฝ”๋”ฉ ํ•„์š”
164
+ - `@` โ†’ `%40`
165
+ - `#` โ†’ `%23`
166
+ - `%` โ†’ `%25`
167
+ - `&` โ†’ `%26`
168
+
169
+ 3. **Railway ์—ฐ๊ฒฐ ์ •๋ณด ์žฌํ™•์ธ**:
170
+ - Railway > PostgreSQL ์„œ๋น„์Šค > Variables ํƒญ
171
+ - `DATABASE_URL` ๊ฐ’์„ ๋‹ค์‹œ ๋ณต์‚ฌํ•˜์—ฌ ํ™•์ธ
172
+
173
+ 4. **๋กœ๊ทธ ํ™•์ธ**:
174
+ - Hugging Face Spaces > Logs ํƒญ
175
+ - `[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] PostgreSQL ์—ฐ๊ฒฐ ์‹คํŒจ: ...` ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ํ™•์ธ
176
+ - ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ
177
+
178
+ ### Railway ์™ธ๋ถ€ ์—ฐ๊ฒฐ ๋ฌธ์ œ
179
+
180
+ **์ฆ์ƒ**: Railway์—์„œ ์™ธ๋ถ€ ์—ฐ๊ฒฐ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ
181
+
182
+ **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•**:
183
+
184
+ 1. **TCP Proxy ํ™•์ธ**:
185
+ - Railway๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ TCP Proxy๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค
186
+ - PostgreSQL ์„œ๋น„์Šค > **"Connect"** ํƒญ ํ™•์ธ
187
+ - ์™ธ๋ถ€ ์—ฐ๊ฒฐ ์ •๋ณด ํ™•์ธ
188
+
189
+ 2. **๋„คํŠธ์›Œํฌ ์š”๊ธˆ ํ™•์ธ**:
190
+ - Railway๋Š” ์™ธ๋ถ€ ์—ฐ๊ฒฐ ์‹œ ๋„คํŠธ์›Œํฌ ์†ก์‹ ๋Ÿ‰์— ๋Œ€ํ•œ ์š”๊ธˆ์ด ๋ถ€๊ณผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
191
+ - ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง: Railway ๋Œ€์‹œ๋ณด๋“œ > Usage ํƒญ
192
+
193
+ ### ์—ฌ์ „ํžˆ SQLite ์‚ฌ์šฉ ์ค‘
194
+
195
+ **์ฆ์ƒ**: ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ–ˆ๋Š”๋ฐ๋„ `type: "SQLite"`๋กœ ํ‘œ์‹œ๋จ
196
+
197
+ **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•**:
198
+
199
+ 1. **์žฌ๋นŒ๋“œ ํ™•์ธ**:
200
+ - ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ ํ›„ Spaces๊ฐ€ ์žฌ๋นŒ๋“œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
201
+ - Settings > Build logs ํ™•์ธ
202
+
203
+ 2. **ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ด๋ฆ„ ํ™•์ธ**:
204
+ - ์ •ํ™•ํžˆ `DATABASE_URL`์ธ์ง€ ํ™•์ธ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„)
205
+ - ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธ
206
+
207
+ 3. **์ฝ”๋“œ ํ™•์ธ**:
208
+ - `app/core/config.py`์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฝ๋Š”์ง€ ํ™•์ธ
209
+ - (์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์Œ)
210
+
211
+ ## Railway ์ถ”๊ฐ€ ๊ธฐ๋Šฅ
212
+
213
+ ### ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…
214
+
215
+ 1. **Railway ๋Œ€์‹œ๋ณด๋“œ** > PostgreSQL ์„œ๋น„์Šค
216
+ 2. **"Backups"** ํƒญ์—์„œ ๋ฐฑ์—… ์„ค์ •
217
+ 3. ์ž๋™ ๋ฐฑ์—… ์Šค์ผ€์ค„ ์„ค์ • ๊ฐ€๋Šฅ
218
+
219
+ ### ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง
220
+
221
+ 1. **Railway ๋Œ€์‹œ๋ณด๋“œ** > PostgreSQL ์„œ๋น„์Šค
222
+ 2. **"Metrics"** ํƒญ์—์„œ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง
223
+ 3. ์—ฐ๊ฒฐ ์ˆ˜, ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋“ฑ ํ™•์ธ ๊ฐ€๋Šฅ
224
+
225
+ ### ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์žฅ ๊ธฐ๋Šฅ
226
+
227
+ Railway๋Š” ๋‹ค์Œ PostgreSQL ํ™•์žฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:
228
+ - PostGIS (์ง€๋ฆฌ ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ)
229
+ - TimescaleDB (์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ)
230
+ - ๊ธฐํƒ€ PostgreSQL ํ™•์žฅ
231
+
232
+ ํ•„์š”์‹œ Railway ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
233
+
234
+ ## ๋น„์šฉ ์ •๋ณด
235
+
236
+ - **Railway ๋ฌด๋ฃŒ ํ‹ฐ์–ด**: $5 ํฌ๋ ˆ๋”ง/์›”
237
+ - **PostgreSQL**: ๋ฌด๋ฃŒ ํ‹ฐ์–ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
238
+ - **์™ธ๋ถ€ ์—ฐ๊ฒฐ**: ๋„คํŠธ์›Œํฌ ์†ก์‹ ๋Ÿ‰์— ๋”ฐ๋ผ ์š”๊ธˆ ๋ถ€๊ณผ ๊ฐ€๋Šฅ
239
+ - **์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ**: Railway ๋Œ€์‹œ๋ณด๋“œ > Usage ํƒญ
240
+
241
+ ## ์ฐธ๊ณ  ์ž๋ฃŒ
242
+
243
+ - **Railway PostgreSQL ๋ฌธ์„œ**: https://docs.railway.com/guides/postgresql
244
+ - **Railway ํ™˜๊ฒฝ ๋ณ€์ˆ˜**: https://docs.railway.com/develop/variables
245
+ - **PostgreSQL ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด**: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
246
+
247
+ ## ํ™•์ธ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
248
+
249
+ PostgreSQL ์„ค์ • ์™„๋ฃŒ ํ›„:
250
+
251
+ - [ ] Railway์—์„œ PostgreSQL ์„œ๋น„์Šค ์ƒ์„ฑ ์™„๋ฃŒ
252
+ - [ ] `DATABASE_URL` ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ณต์‚ฌ ์™„๋ฃŒ
253
+ - [ ] Hugging Face Spaces์— `DATABASE_URL` ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถ”๊ฐ€ ์™„๋ฃŒ
254
+ - [ ] Spaces ์žฌ๋นŒ๋“œ ์™„๋ฃŒ
255
+ - [ ] `/api/admin/database/status`์—์„œ `type: "PostgreSQL"` ํ™•์ธ
256
+ - [ ] `connected: true` ํ™•์ธ
257
+ - [ ] Gemini API ํ‚ค ์ €์žฅ ํ›„ `config_count` ์ฆ๊ฐ€ ํ™•์ธ
258
+ - [ ] Spaces ์žฌ์‹œ์ž‘ ํ›„์—๋„ ๋ฐ์ดํ„ฐ ์œ ์ง€ ํ™•์ธ
259
+
260
+ ๋ชจ๋“  ํ•ญ๋ชฉ์ด ์ฒดํฌ๋˜๋ฉด PostgreSQL ์„ค์ •์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๐ŸŽ‰
261
+