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(...)` در آن تعریف شده؟
---
**موفق باشید! 🚀**
|