Spaces:
Runtime error
Runtime error
| # System Architecture | |
| Overview of the Smart LINE Bot + Dashboard + Scraper Pipeline system architecture. | |
| ## High-Level Architecture | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β Clients β | |
| β βββββββββββ ββββββββββββ βββββββββββ ββββββββββ βββββββββββββββββ β | |
| β β LINE β β Web UI β β Mobile β β API β β Webhook β β | |
| β β Users β β (Admin) β β App β β Client β β (External) β β | |
| β ββββββ¬βββββ ββββββ¬ββββββ ββββββ¬βββββ βββββ¬βββββ ββββββββ¬ββββββββ β | |
| β β β β β β β | |
| βββββββββΌβββββββββββββΌβββββββββββββββΌβββββββββββββΌβββββββββββββββΌβββββββββββ | |
| β β β β β | |
| βΌ βΌ βΌ βΌ βΌ | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β API Gateway (FastAPI) β | |
| β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β β /api/v1/line β /api/v1/dashboard β /api/v1/scraping β AI β β | |
| β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β | |
| β Request ID Middleware β | |
| β Rate Limiting β | |
| β JWT Authentication β | |
| βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ | |
| β | |
| βββββββββββββββββββββββββΌββββββββββββββββββββββββ | |
| βΌ βΌ βΌ | |
| βββββββββββββββββ βββββββββββββββββββ ββββββββββββββββββ | |
| β LINE Service β β Dashboard β β Scraping β | |
| β - Messaging β β Service β β Service β | |
| β - User Mgmt β β - Users β β - Job Queue β | |
| β - Webhooks β β - Stats β β - Botsaurus β | |
| βββββββββ¬ββββββββ ββββββββββ¬βββββββββ βββββββββ¬βββββββββ | |
| β β β | |
| βββββββββββββββββββββββΌββββββββββββββββββββββ | |
| β | |
| βββββββββββββββββββββββΌββββββββββββββββββββββ | |
| βΌ βΌ βΌ | |
| ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ | |
| β PostgreSQL β β Redis β β External APIs β | |
| β (Primary DB) β β (Cache + MQ) β β - LINE API β | |
| β β β β β - OpenAI API β | |
| β - Users β β - Celery β β - Scraping β | |
| β - LINE Users β β Broker β β Targets β | |
| β - Jobs β β - Cache β β β | |
| β - Conversationsβ β - Sessions β ββββββββββββββββββββ | |
| ββββββββββββββββββββ ββββββββββββββββββββ | |
| β | |
| βββββββββββββββββββββββΌββββββββββββββββββββββ | |
| βΌ βΌ βΌ | |
| ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ | |
| β Celery Worker β β Celery Beat β β Scraping β | |
| β - Async Tasks β β - Scheduled β β Pipeline β | |
| β - LINE Messagesβ β Tasks β β - Spiders β | |
| β - AI Processing β β β β - Pipelines β | |
| ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββ | |
| ``` | |
| ## Component Details | |
| ### API Layer (FastAPI) | |
| - **app/main.py**: FastAPI application entry point | |
| - **Request ID Middleware**: Adds unique ID to every request for tracing | |
| - **Structured Logging**: JSON logs with request context | |
| - **CORS Middleware**: Configured for allowed origins | |
| - **Error Handlers**: Consistent error response format | |
| ### Services Layer | |
| - **LINE Service**: LINE Bot API integration | |
| - User management | |
| - Message sending (text, flex, template) | |
| - OAuth flow handling | |
| - **Dashboard Service**: Admin dashboard operations | |
| - User CRUD | |
| - Statistics aggregation | |
| - Operation logging | |
| - **Scraping Service**: Web scraping management | |
| - Job queue management | |
| - Botsaurus integration | |
| - Result storage | |
| - **AI Service**: AI-powered features | |
| - LangGraph agent integration | |
| - Conversation management | |
| - OpenAI API calls | |
| ### Data Layer | |
| - **PostgreSQL**: Primary database | |
| - Users, LINE users, scraping jobs, AI conversations | |
| - Full-text search capabilities | |
| - Transaction support | |
| - **Redis**: Cache and message queue | |
| - Celery broker | |
| - Session cache | |
| - Rate limiting | |
| ### Task Queue (Celery) | |
| - **Web**: API request handling | |
| - **Worker**: Async task processing | |
| - **Beat**: Scheduled tasks | |
| ## Data Flow | |
| ### LINE Message Flow | |
| ``` | |
| LINE User β LINE Server β Webhook β FastAPI β LINE Service β | |
| β Celery Task β Process Message β LINE Service β Send Reply | |
| ``` | |
| ### Scraping Flow | |
| ``` | |
| User β API β Scraping Service β Create Job β | |
| β Celery Task β Botsaurus Spider β Results β | |
| β Database β Notify User | |
| ``` | |
| ### AI Chat Flow | |
| ``` | |
| User β API β AI Service β Create/Update Conversation β | |
| β Celery Task β OpenAI/LangGraph β Response β | |
| β Save to Database β Return to User | |
| ``` | |
| ## Security | |
| ### Authentication | |
| - JWT tokens with HS256 algorithm | |
| - Token expiration: 7 days | |
| - Refresh tokens: 30 days | |
| ### Authorization | |
| - Role-based access control | |
| - Superuser for admin functions | |
| - LINE user binding for LINE-specific features | |
| ### API Security | |
| - Rate limiting: 60 requests/minute | |
| - Request validation with Pydantic | |
| - SQL injection prevention via SQLAlchemy | |
| - XSS protection | |
| ### External API Protection | |
| - Circuit breaker for LINE/OpenAI calls | |
| - Retry with exponential backoff | |
| - Request timeout handling | |
| ## Scalability | |
| ### Horizontal Scaling | |
| - Multiple web replicas (load balancer) | |
| - Multiple worker instances | |
| - Redis Pub/Sub for inter-instance communication | |
| ### Caching Strategy | |
| - Redis for frequently accessed data | |
| - ETag support for API responses | |
| - Static file caching | |
| ### Database Optimization | |
| - Indexing on common queries | |
| - Connection pooling | |
| - Query optimization | |
| ## Monitoring | |
| ### Health Checks | |
| - `/health`: Basic health | |
| - `/ready`: Readiness check (DB, Redis) | |
| ### Metrics | |
| - Prometheus metrics endpoint | |
| - Request/response timing | |
| - Error rates | |
| - Celery task statistics | |
| ### Logging | |
| - Structured JSON logs | |
| - Request ID tracking | |
| - Error stack traces | |
| - Log levels: DEBUG, INFO, WARNING, ERROR |