یک سامانه هوشمند و داشبورد تعاملی برای پایش خودکار، فیلترینگ و ارزیابی آگهیهای وبسایت دیوار با استفاده از هوش مصنوعی (OpenAI GPT-4o-mini) و اطلاعرسانی فوری از طریق تلگرام.
یک سامانه هوشمند و داشبورد تعاملی برای پایش خودکار، فیلترینگ و ارزیابی آگهیهای وبسایت دیوار با استفاده از هوش مصنوعی (OpenAI / OpenRouter API) و اطلاعرسانی فوری از طریق تلگرام.
---
---
@ -16,6 +16,7 @@
- فید آگهیهای کشف شده با قابلیت فیلتر بر اساس تسک و وضعیت پرچمگذاری.
- فید آگهیهای کشف شده با قابلیت فیلتر بر اساس تسک و وضعیت پرچمگذاری.
- تست و اجرای دستی فوری کرالرها.
- تست و اجرای دستی فوری کرالرها.
- سیستم پایش سلامت (Health Check) پایگاهداده و سرویس پیامرسان.
- سیستم پایش سلامت (Health Check) پایگاهداده و سرویس پیامرسان.
- **آمادهسازی کامل جهت استقرار داکر (Docker & Linux Ready)**: تنظیمات چندکانتینره بهینه شامل دیتابیس PostgreSQL، بروکر Redis، Celery Worker و فرانتاند React.
- `CORS_ALLOWED_ORIGINS` و `ALLOWED_HOSTS`: آدرسهای مجاز برای دسترسی به برنامه.
> **نکته**: در حالت توسعه محلی، به طور پیشفرض `CELERY_TASK_ALWAYS_EAGER=True` قرار دارد، به این معنی که پردازشها به صورت آنی در سرور اصلی جنگو اجرا میشوند و نیازی به نصب و اجرای ردیس (Redis) به صورت محلی ندارید.
---
### ۲. راهاندازی بخش بکاند (Django)
## 🐳 راهاندازی با داکر (روی لینوکس یا سرور لینوکس) - روش پیشنهادی
۱. محیط مجازی پایتون را فعال کنید:
```powershell
.venv\Scripts\Activate.ps1
```
برای بیلد و اجرای کامل تمامی سرویسها روی سیستم لینوکس یا سرور لینوکس (شامل PostgreSQL، Redis، Backend، Celery Worker و Frontend):
۲. بستههای مورد نیاز پایتون را نصب کنید:
### ۱. تنظیم متغیرهای محیطی
فایل `.env.example` را به `.env` کپی کنید:
```bash
```bash
pip install -r requirements.txt
cp .env.example .env
```
```
مقادیر `OPENAI_API_KEY` و `TELEGRAM_BOT_TOKEN` را در فایل `.env` تنظیم کنید.
۳. ساختار پایگاهداده را بسازید (اجرای مهاجرتها):
### ۲. بیلد و اجرای داکر
```bash
```bash
python backend/manage.py migrate
```
۴. سرور توسعه جنگو را روشن کنید:
```bash
python backend/manage.py runserver
docker compose up --build -d
```
```
اکنون بکاند جنگو روی پورت `8000` در دسترس است. برای بررسی وضعیت سرویسها میتوانید به آدرس `http://127.0.0.1:8000/api/health/` مراجعه کنید.
- `GET /api/ads/`: لیست تمام ارزیابیهای انجام شده (فیلتر بر اساس`is_flagged` و `crawl_task`).
- `GET /api/ads/`: دریافت لیست آگهیها (با فیلتر`is_flagged` و `crawl_task`).
- **سلامت سامانه (`/api/health/`)**:
- **سلامت سامانه (`/api/health/`)**:
- `GET /api/health/`: بررسی پایداری پایگاهداده و اتصال ردیس (پینگ ردیس در زمان فعال بودن Celery Eager Mode اختیاری محسوب شده و خطای ۵۰۳ ایجاد نمیکند).
- **Crawler Management**: Dynamic form modal for creating and updating Divar crawl tasks (title, Divar search URL, AI prompt, interval, allowed hours window, Telegram channel, active status).
- **Manual Trigger**: Immediate execution button to test scraper and AI evaluation flows on-demand.
- **Ads Feed**: Filterable view of scraped ads displaying price, location, AI evaluation decision (`is_flagged`), confidence score, and extracted reasoning.
- **Execution History Logs**: Detailed execution run logs with status indicators (`RUNNING`, `SUCCESS`, `FAILED`) and error log modals.
- **System Health Indicator**: Real-time polling monitoring status of PostgreSQL database and Redis background broker.
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
---
## Expanding the Oxlint configuration
## 🛠 Project Structure
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and Oxlint's TypeScript related rules in your project.
```text
frontend/
├── src/
│ ├── App.jsx # Main dashboard component handling tabs, modals, and API integration
│ ├── App.css # Custom styles and glassmorphism styling
│ ├── index.css # Tailwind & global font declarations