2026-05-04 09:06:17,991 - main - INFO - === Logging system initialized ===
2026-05-04 09:06:17,992 - main - INFO - Log file: logs/app_20260504_090617.log
2026-05-04 09:06:17,992 - main - INFO - Log level: INFO
2026-05-04 09:06:17,992 - main - INFO - Timestamp: 20260504_090617
2026-05-04 09:06:18,012 - main - INFO - Included router: routers.admin_dashboard.router
2026-05-04 09:06:18,029 - main - INFO - Included router: routers.admin_users.router
2026-05-04 09:06:18,049 - main - INFO - Included router: routers.agent_availability.router
2026-05-04 09:06:18,264 - main - WARNING - Failed to import module 'routers.ai_ticket_summary': unsupported operand type(s) for |: 'type' and 'types.GenericAlias'
2026-05-04 09:06:18,264 - main - WARNING - Failed to import module 'routers.aihub': unsupported operand type(s) for |: 'type' and 'types.GenericAlias'
2026-05-04 09:06:18,286 - main - INFO - Included router: routers.api_hub.router
2026-05-04 09:06:18,293 - main - INFO - Included router: routers.audit_log.router
2026-05-04 09:06:18,297 - main - INFO - Included router: routers.auth.router
2026-05-04 09:06:18,344 - main - INFO - Included router: routers.bizmail_admin.router
2026-05-04 09:06:18,380 - main - INFO - Included router: routers.bizmail_client.router
2026-05-04 09:06:18,382 - main - INFO - Included router: routers.bizmail_public.router
2026-05-04 09:06:18,389 - main - INFO - Included router: routers.cache_settings.router
2026-05-04 09:06:18,455 - main - INFO - Included router: routers.carts.router
2026-05-04 09:06:18,460 - main - INFO - Included router: routers.catalog_admin.router
2026-05-04 09:06:18,484 - main - INFO - Included router: routers.chat_analytics_daily.router
2026-05-04 09:06:18,506 - main - INFO - Included router: routers.chat_attachments.router
2026-05-04 09:06:18,537 - main - INFO - Included router: routers.chat_branding.router
2026-05-04 09:06:18,544 - main - INFO - Included router: routers.chat_branding_api.router
2026-05-04 09:06:18,570 - main - INFO - Included router: routers.chat_conversations.router
2026-05-04 09:06:18,592 - main - INFO - Included router: routers.chat_messages.router
2026-05-04 09:06:18,613 - main - INFO - Included router: routers.chat_routing_rules.router
2026-05-04 09:06:18,622 - main - INFO - Included router: routers.contact.router
2026-05-04 09:06:18,642 - main - INFO - Included router: routers.contact_inquiries.router
2026-05-04 09:06:18,787 - main - INFO - Included router: routers.cpanel_admin.router
2026-05-04 09:06:18,819 - main - INFO - Included router: routers.cpanel_client.router
2026-05-04 09:06:18,820 - main - INFO - Included router: routers.cpanel_public.router
2026-05-04 09:06:18,844 - main - INFO - Included router: routers.dhl_admin.router
2026-05-04 09:06:18,847 - main - INFO - Included router: routers.dhl_public.router
2026-05-04 09:06:18,861 - main - INFO - Included router: routers.ecom_checkout.router
2026-05-04 09:06:18,861 - main - INFO - Included router: routers.health.router
2026-05-04 09:06:18,883 - main - INFO - Included router: routers.kb_article_feedback.router
2026-05-04 09:06:18,904 - main - INFO - Included router: routers.kb_articles.router
2026-05-04 09:06:18,912 - main - INFO - Included router: routers.local_auth.router
2026-05-04 09:06:18,928 - main - INFO - Included router: routers.mfa.router
2026-05-04 09:06:18,957 - main - INFO - Included router: routers.module_sync.router
2026-05-04 09:06:18,980 - main - INFO - Included router: routers.notification_preferences.router
2026-05-04 09:06:19,003 - main - INFO - Included router: routers.notifications.router
2026-05-04 09:06:19,005 - main - INFO - Included router: routers.notifications_extras.router
2026-05-04 09:06:19,122 - main - INFO - Included router: routers.oauth.router
2026-05-04 09:06:19,146 - main - INFO - Included router: routers.order_items.router
2026-05-04 09:06:19,172 - main - INFO - Included router: routers.orders.router
2026-05-04 09:06:19,175 - main - INFO - Included router: routers.password_reset.router
2026-05-04 09:06:19,182 - main - INFO - Included router: routers.paypal_checkout.router
2026-05-04 09:06:19,206 - main - INFO - Included router: routers.plans.router
2026-05-04 09:06:19,228 - main - INFO - Included router: routers.presales_messages.router
2026-05-04 09:06:19,248 - main - INFO - Included router: routers.product_categories.router
2026-05-04 09:06:19,270 - main - INFO - Included router: routers.product_reviews.router
2026-05-04 09:06:19,296 - main - INFO - Included router: routers.products.router
2026-05-04 09:06:19,307 - main - INFO - Included router: routers.role_management.router
2026-05-04 09:06:19,328 - main - INFO - Included router: routers.service_testimonials.router
2026-05-04 09:06:19,338 - main - INFO - Included router: routers.settings.router
2026-05-04 09:06:19,354 - main - INFO - Included router: routers.site_settings.router
2026-05-04 09:06:19,369 - main - INFO - Included router: routers.smtp_settings.router
2026-05-04 09:06:19,386 - main - INFO - Included router: routers.storage.router
2026-05-04 09:06:19,390 - main - WARNING - Failed to import module 'routers.support_chat': unsupported operand type(s) for |: 'type' and 'types.GenericAlias'
2026-05-04 09:06:19,407 - main - INFO - Included router: routers.support_departments.router
2026-05-04 09:06:19,428 - main - INFO - Included router: routers.support_seats.router
2026-05-04 09:06:19,430 - main - INFO - Included router: routers.ticket_notifications_sync.router
2026-05-04 09:06:19,448 - main - INFO - Included router: routers.ticket_summaries.router
2026-05-04 09:06:19,561 - main - INFO - Included router: routers.ticket_sync_states.router
2026-05-04 09:06:19,642 - main - INFO - Included router: routers.uptimerobot_admin.router
2026-05-04 09:06:19,675 - main - INFO - Included router: routers.uptimerobot_client.router
2026-05-04 09:06:19,678 - main - INFO - Included router: routers.uptimerobot_mcp.router
2026-05-04 09:06:19,681 - main - INFO - Included router: routers.user.router
2026-05-04 09:06:19,704 - main - INFO - Included router: routers.user_profiles.router
2026-05-04 09:06:19,722 - main - INFO - Included router: routers.user_roles.router
2026-05-04 09:06:19,767 - main - INFO - Included router: routers.visitor_monitor.router
2026-05-04 09:06:19,771 - main - INFO - Included router: routers.visitor_tracking.router
2026-05-04 09:06:19,836 - main - INFO - Included router: routers.whatsapp_admin.router
2026-05-04 09:06:19,837 - main - WARNING - Failed to import module 'routers.whatsapp_ai': unsupported operand type(s) for |: 'type' and 'types.GenericAlias'
2026-05-04 09:06:19,842 - main - WARNING - Failed to import module 'routers.whatsapp_analytics': Unable to evaluate type annotation 'str | None'. If you are making use of the new typing syntax (unions using `|` since Python 3.10 or builtins subscripting since Python 3.9), you should either replace the use of new syntax with the existing `typing` constructs or install the `eval_type_backport` package.
2026-05-04 09:06:19,878 - main - INFO - Included router: routers.whatsapp_automation.router
2026-05-04 09:06:19,889 - main - INFO - Included router: routers.whatsapp_client.router
2026-05-04 09:06:19,892 - main - INFO - Included router: routers.whatsapp_client_ws.router
2026-05-04 09:06:19,904 - main - INFO - Included router: routers.whatsapp_contacts.router
2026-05-04 09:06:19,914 - main - INFO - Included router: routers.whatsapp_devices.router
2026-05-04 09:06:19,923 - main - INFO - Included router: routers.whmcs.router
2026-05-04 09:06:19,955 - main - INFO - Included router: routers.whmcs_admin.router
2026-05-04 09:06:20,097 - main - INFO - Included router: routers.whmcs_extra.router
2026-05-04 09:06:20,109 - main - INFO - === Application startup initiated ===
2026-05-04 09:06:20,110 - services.database - DEBUG - [DB_OP] Starting database initialization
2026-05-04 09:06:20,110 - services.database - INFO - 🔧 Starting database initialization...
2026-05-04 09:06:20,110 - core.database - INFO - Starting database initialization...
2026-05-04 09:06:20,110 - core.database - INFO - Normalizing database URL for async compatibility...
2026-05-04 09:06:20,110 - core.database - INFO - Creating async database engine...
2026-05-04 09:06:20,110 - core.database - INFO - Using QueuePool with connection pooling for non-Lambda environment
2026-05-04 09:06:20,122 - core.database - INFO - Database engine created successfully
2026-05-04 09:06:20,122 - core.database - INFO - Creating async session maker...
2026-05-04 09:06:20,122 - core.database - INFO - Async session maker created successfully
2026-05-04 09:06:20,122 - core.database - INFO - Database connection initialized successfully
2026-05-04 09:06:20,122 - services.database - INFO - 🔧 Database connection initialized, now creating tables if tables not exist...
2026-05-04 09:06:20,122 - core.database - DEBUG - [DB_OP] Starting create_tables
2026-05-04 09:06:20,122 - core.database - INFO - 🔧 Starting table creation...
2026-05-04 09:06:20,160 - core.database - INFO - Tables initialized successfully
2026-05-04 09:06:20,160 - core.database - DEBUG - [DB_OP] Create tables completed in 0.0379s
2026-05-04 09:06:20,160 - services.database - INFO - 🔧 Table creation completed
2026-05-04 09:06:20,160 - services.database - INFO - Database initialized successfully
2026-05-04 09:06:20,161 - services.database - DEBUG - [DB_OP] Database initialization completed in 0.0510s
2026-05-04 09:06:20,161 - services.mock_data - INFO - Processing mock data file plans.json for table plans
2026-05-04 09:06:20,161 - services.mock_data - INFO - Processing mock data file product_categories.json for table product_categories
2026-05-04 09:06:20,161 - services.mock_data - INFO - Processing mock data file products.json for table products
2026-05-04 09:06:20,161 - services.mock_data - INFO - Processing mock data file service_testimonials.json for table service_testimonials
2026-05-04 09:06:20,172 - services.mock_data - INFO - Table products already has 8 rows; skipping mock insert
2026-05-04 09:06:20,173 - services.mock_data - ERROR - Failed to insert mock data into plans: (pymysql.err.DataError) (1406, "Data too long for column 'features' at row 1")
[SQL: INSERT INTO plans (service_type, name, price, currency, billing_cycle, features, cta_label, cta_url, is_featured, is_active, sort_order, tagline) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)]
[parameters: [('remote-support', 'Essential Remote Support', 40, 'USD', 'month', 'Remote assistance (attended)|Basic endpoint monitoring|Ticket-based support|Email response within 4h|Monthly summary report', 'Get Started', '/remote-support#essential', False, True, 1, 'For up to 25 endpoints'), ('remote-support', 'Managed Cloud Services', 99, 'USD', 'month', 'Cloud server administration|24/7 monitoring & alerts|Patching & updates|Backup checks & restore tests|Security hardening baseline', 'Get Started', '/remote-support#cloud-managed', True, True, 2, 'Cloud-first teams & SaaS workloads'), ('remote-support', 'Managed On-Premises IT', 199, 'USD', 'month', 'Servers & network devices|Firewall management|Backup & DR oversight|Endpoint support|Monthly health report', 'Get Started', '/remote-support#on-premises', False, True, 3, 'Offices, branches, data rooms'), ('remote-support', 'Enterprise SLA', 0, 'USD', 'custom', 'Dedicated SLA & priority support|Hybrid cloud + on-premises|Named engineering lead|Compliance support (ISO, SOC, PDPL)|Quarterly business review', 'Contact Sales', '/remote-support#enterprise', False, True, 4, 'Hybrid, compliance-driven operations')]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
2026-05-04 09:06:20,176 - services.mock_data - ERROR - Failed to insert mock data into service_testimonials: (pymysql.err.DataError) (1406, "Data too long for column 'quote' at row 1")
[SQL: INSERT INTO service_testimonials (name, company, role, quote, rating, avatar_url, display_order, is_active) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)]
[parameters: [('Ahmed Al Kathiri', 'Al Kathiri Motors', 'IT Director', "DoItEasy transformed our automotive dealership's digital infrastructure. Their enterprise hosting and 24/7 support have been rock-solid for over two years. Uptime is consistently above 99.99% and the team responds within minutes.", 5, '/images/AlKathiriMotors.jpg', 1, True), ('Dr. Mazin Al Harthy', 'Maz Higher Institute of Training', 'Director of Operations', "Running an educational institute means we can't afford downtime during exam seasons or student registration. DoItEasy's cloud servers and managed email have given us the reliability and security we need. Migration was seamless.", 5, 'https://images.unsplash.com/photo-1560250097-0b93528c311a?w=200&h=200&fit=crop', 2, True), ('Sarah Al Balushi', 'Oman Digital Solutions', 'CTO', 'We evaluated several regional providers before choosing DoItEasy. Their combination of local data center presence, competitive pricing, and technical expertise is unmatched. The Business Suite has streamlined our entire client operations.', 5, 'https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=200&h=200&fit=crop', 3, True), ('Khalid Al Siyabi', 'Gulf Trading Enterprises', 'Head of IT', 'From domain registration to VPS hosting to SSL certificates, DoItEasy is our one-stop shop. The admin dashboard gives us full control and the support team feels like an extension of our own team.', 5, 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=200&h=200&fit=crop', 4, True), ('Fatima Al Zadjali', 'Muscat Marketing Agency', 'Founder & CEO', "As a growing agency, we needed scalable infrastructure that grows with us. DoItEasy's flexible plans and migration support helped us move 40+ client websites without a single hiccup. Highly recommended.", 5, 'https://images.unsplash.com/photo-1580489944761-15a19d654956?w=200&h=200&fit=crop', 5, True)]]
(Background on this error at: https://sqlalche.me/e/20/9h9h)
2026-05-04 09:06:20,176 - services.mock_data - INFO - Table product_categories already has 5 rows; skipping mock insert
2026-05-04 09:06:20,177 - services.database - DEBUG - [DB_OP] Starting database initialization
2026-05-04 09:06:20,177 - services.database - INFO - 🔧 Starting database initialization...
2026-05-04 09:06:20,177 - core.database - INFO - Starting database initialization...
2026-05-04 09:06:20,177 - core.database - INFO - Database already initialized
2026-05-04 09:06:20,177 - services.database - INFO - 🔧 Database connection initialized, now creating tables if tables not exist...
2026-05-04 09:06:20,177 - core.database - DEBUG - [DB_OP] Starting create_tables
2026-05-04 09:06:20,177 - core.database - INFO - Tables already initialized
2026-05-04 09:06:20,177 - services.database - INFO - 🔧 Table creation completed
2026-05-04 09:06:20,177 - services.database - INFO - Database initialized successfully
2026-05-04 09:06:20,177 - services.database - DEBUG - [DB_OP] Database initialization completed in 0.0002s
2026-05-04 09:06:20,177 - services.auth - INFO - Platform admin user ID/email not configured, skipping platform admin init
2026-05-04 09:06:20,384 - services.local_auth - INFO - [local_auth] Updated existing user to admin id=local:4842018d10324110a99e4012d8faefa8 email=admin@doiteasy.net
2026-05-04 09:06:20,385 - main - INFO - === Application startup completed successfully ===
2026-05-04 09:09:03,134 - services.database - DEBUG - [DB_OP] Starting database close
2026-05-04 09:09:03,135 - core.database - INFO - Database connection closed and engine disposed
2026-05-04 09:09:03,135 - services.database - INFO - Database connections closed
2026-05-04 09:09:03,135 - services.database - DEBUG - [DB_OP] Database close completed in 0.0004s
