File size: 8,464 Bytes
8b7b267
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
# 🔧 راهنمای اصلاح فایل‌های سرور

## 📋 فایل‌هایی که باید اصلاح شوند

### ✅ فایل اصلی: `hf_unified_server.py`

این فایل اصلی است که Space شما از آن استفاده می‌کند (از طریق `main.py`).

**مسیر:** `hf_unified_server.py`

**مشکل:** Router `unified_service_api` ممکن است با خطا load شود یا register نشود.

**راه حل:**

1. **چک کنید router import شده:**
   ```python
   # خط 26 باید این باشد:
   from backend.routers.unified_service_api import router as service_router
   ```

2. **چک کنید router register شده:**
   ```python
   # خط 173-176 باید این باشد:
   try:
       app.include_router(service_router)  # Main unified service
       logger.info("✅ Unified Service API Router loaded")
   except Exception as e:
       logger.error(f"Failed to include service_router: {e}")
       import traceback
       traceback.print_exc()  # اضافه کنید برای debug
   ```

3. **اگر router load نمی‌شود، چک کنید:**
   - آیا فایل `backend/routers/unified_service_api.py` وجود دارد؟
   - آیا dependencies نصب شده‌اند؟
   - آیا import errors وجود دارد؟

---

### ✅ فایل جایگزین: `api_server_extended.py`

اگر Space شما از این فایل استفاده می‌کند:

**مسیر:** `api_server_extended.py`

**مشکل:** Router `unified_service_api` در این فایل register نشده.

**راه حل:**

در فایل `api_server_extended.py`، بعد از خط 825 (بعد از resources_router)، اضافه کنید:

```python
# ===== Include Unified Service API Router =====
try:
    from backend.routers.unified_service_api import router as unified_service_router
    app.include_router(unified_service_router)
    print("✓ ✅ Unified Service API Router loaded")
except Exception as unified_error:
    print(f"⚠ Failed to load Unified Service API Router: {unified_error}")
    import traceback
    traceback.print_exc()
```

---

## 🔍 تشخیص اینکه Space از کدام فایل استفاده می‌کند

### روش 1: چک کردن `main.py`

```python
# main.py را باز کنید
# اگر این خط را دارد:
from hf_unified_server import app
# پس از hf_unified_server.py استفاده می‌کند

# اگر این خط را دارد:
from api_server_extended import app
# پس از api_server_extended.py استفاده می‌کند
```

### روش 2: چک کردن لاگ‌های Space

به Space logs بروید و ببینید:
- اگر می‌گوید: `✅ Loaded hf_unified_server` → از `hf_unified_server.py` استفاده می‌کند
- اگر می‌گوید: `✅ FastAPI app loaded` → از `api_server_extended.py` استفاده می‌کند

---

## 📝 تغییرات دقیق

### تغییر 1: `hf_unified_server.py`

**خط 173-176 را به این تغییر دهید:**

```python
# Include routers
try:
    app.include_router(service_router)  # Main unified service
    logger.info("✅ Unified Service API Router loaded successfully")
except Exception as e:
    logger.error(f"❌ Failed to include service_router: {e}")
    import traceback
    traceback.print_exc()  # برای debug
    # اما ادامه دهید - fallback نکنید
```

**نکته:** اگر router load نمی‌شود، خطا را در لاگ ببینید و مشکل را fix کنید.

---

### تغییر 2: `api_server_extended.py` (اگر استفاده می‌شود)

**بعد از خط 825 اضافه کنید:**

```python
# ===== Include Unified Service API Router =====
try:
    from backend.routers.unified_service_api import router as unified_service_router
    app.include_router(unified_service_router)
    print("✓ ✅ Unified Service API Router loaded - /api/service/* endpoints available")
except Exception as unified_error:
    print(f"⚠ Failed to load Unified Service API Router: {unified_error}")
    import traceback
    traceback.print_exc()
```

---

## 🐛 Fix کردن مشکلات HuggingFace Models

### مشکل: مدل‌ها پیدا نمی‌شوند

**فایل:** `backend/services/direct_model_loader.py` یا فایل مشابه

**تغییر:**

```python
# مدل‌های جایگزین
SENTIMENT_MODELS = {
    "cryptobert_elkulako": "ProsusAI/finbert",  # جایگزین
    "default": "cardiffnlp/twitter-roberta-base-sentiment"
}

SUMMARIZATION_MODELS = {
    "bart": "facebook/bart-large",  # جایگزین
    "default": "google/pegasus-xsum"
}
```

یا در فایل config:

```python
# config.py یا ai_models.py
HUGGINGFACE_MODELS = {
    "sentiment_twitter": "cardiffnlp/twitter-roberta-base-sentiment-latest",
    "sentiment_financial": "ProsusAI/finbert",
    "summarization": "facebook/bart-large",  # تغییر از bart-large-cnn
    "crypto_sentiment": "ProsusAI/finbert",  # تغییر از ElKulako/cryptobert
}
```

---

## ✅ چک‌لیست اصلاحات

### مرحله 1: تشخیص فایل اصلی
- [ ] `main.py` را باز کنید
- [ ] ببینید از کدام فایل import می‌کند
- [ ] فایل اصلی را مشخص کنید

### مرحله 2: اصلاح Router Registration
- [ ] فایل اصلی را باز کنید (`hf_unified_server.py` یا `api_server_extended.py`)
- [ ] چک کنید `service_router` import شده
- [ ] چک کنید `app.include_router(service_router)` وجود دارد
- [ ] اگر نیست، اضافه کنید
- [ ] Error handling اضافه کنید

### مرحله 3: Fix کردن Models
- [ ] فایل config مدل‌ها را پیدا کنید
- [ ] مدل‌های جایگزین را تنظیم کنید
- [ ] یا از مدل‌های معتبر استفاده کنید

### مرحله 4: تست
- [ ] Space را restart کنید
- [ ] لاگ‌ها را چک کنید
- [ ] تست کنید: `GET /api/service/rate?pair=BTC/USDT`
- [ ] باید 200 برگرداند (نه 404)

---

## 🔍 Debug Steps

### 1. چک کردن Router Load

در Space logs ببینید:
```
✅ Unified Service API Router loaded successfully
```

اگر این پیام را نمی‌بینید، router load نشده.

### 2. چک کردن Endpointها

بعد از restart، تست کنید:
```bash
curl https://your-space.hf.space/api/service/rate?pair=BTC/USDT
```

اگر 404 می‌دهد، router register نشده.

### 3. چک کردن Import Errors

در لاگ‌ها دنبال این خطاها بگردید:
```
Failed to include service_router: [error]
ImportError: cannot import name 'router' from 'backend.routers.unified_service_api'
```

---

## 📝 مثال کامل تغییرات

### برای `hf_unified_server.py`:

```python
# خط 26 - Import (باید وجود داشته باشد)
from backend.routers.unified_service_api import router as service_router

# خط 173-180 - Registration (به این تغییر دهید)
try:
    app.include_router(service_router)  # Main unified service
    logger.info("✅ Unified Service API Router loaded - /api/service/* endpoints available")
except ImportError as e:
    logger.error(f"❌ Import error for service_router: {e}")
    logger.error("Check if backend/routers/unified_service_api.py exists")
    import traceback
    traceback.print_exc()
except Exception as e:
    logger.error(f"❌ Failed to include service_router: {e}")
    import traceback
    traceback.print_exc()
```

---

## 🚀 بعد از اصلاحات

1. **Space را restart کنید**
2. **لاگ‌ها را چک کنید:**
   - باید ببینید: `✅ Unified Service API Router loaded`
3. **تست کنید:**
   ```bash
   curl https://your-space.hf.space/api/service/rate?pair=BTC/USDT
   ```
4. **اگر هنوز 404 می‌دهد:**
   - لاگ‌ها را دوباره چک کنید
   - مطمئن شوید router import شده
   - مطمئن شوید router register شده

---

## 📞 اگر مشکل حل نشد

1. **لاگ‌های کامل Space را ببینید**
2. **Import errors را پیدا کنید**
3. **Dependencies را چک کنید:**
   ```bash
   pip list | grep fastapi
   pip list | grep backend
   ```
4. **فایل router را چک کنید:**
   - آیا `backend/routers/unified_service_api.py` وجود دارد؟
   - آیا `router = APIRouter(...)` در آن تعریف شده؟

---

**موفق باشید! 🚀**