diff --git a/ai_software_factory/dashboard_ui.py b/ai_software_factory/dashboard_ui.py index 3d9617f..6bc46a2 100644 --- a/ai_software_factory/dashboard_ui.py +++ b/ai_software_factory/dashboard_ui.py @@ -20,17 +20,23 @@ def create_dashboard(): return try: - # Fetch current project - current_project = db_session.query(ProjectHistory).order_by(ProjectHistory.created_at.desc()).first() - - # Fetch recent audit trail entries - recent_audits = db_session.query(AuditTrail).order_by(AuditTrail.created_at.desc()).limit(10).all() - - # Fetch recent project history entries - recent_projects = db_session.query(ProjectHistory).order_by(ProjectHistory.created_at.desc()).limit(5).all() - - # Fetch recent system logs - recent_logs = db_session.query(SystemLog).order_by(SystemLog.created_at.desc()).limit(5).all() + # Wrap database queries to handle missing tables gracefully + try: + # Fetch current project + current_project = db_session.query(ProjectHistory).order_by(ProjectHistory.created_at.desc()).first() + + # Fetch recent audit trail entries + recent_audits = db_session.query(AuditTrail).order_by(AuditTrail.created_at.desc()).limit(10).all() + + # Fetch recent project history entries + recent_projects = db_session.query(ProjectHistory).order_by(ProjectHistory.created_at.desc()).limit(5).all() + + # Fetch recent system logs + recent_logs = db_session.query(SystemLog).order_by(SystemLog.created_at.desc()).limit(5).all() + except Exception as e: + # Handle missing tables or other database errors + ui.label(f'Database error: {str(e)}. Please run POST /init-db or ensure the database is initialized.') + return # Create main card with ui.card().col().classes('w-full max-w-6xl mx-auto').props('elevated').style('max-width: 1200px; margin: 0 auto;') as main_card: diff --git a/ai_software_factory/main.py b/ai_software_factory/main.py index f476b3c..4acd7d3 100644 --- a/ai_software_factory/main.py +++ b/ai_software_factory/main.py @@ -13,6 +13,7 @@ The NiceGUI frontend provides: import frontend from fastapi import FastAPI +from database import init_db app = FastAPI() @@ -23,6 +24,13 @@ def read_root(): return {'Hello': 'World'} +@app.post('/init-db') +def initialize_database(): + """Initialize database tables (POST endpoint for NiceGUI to call before dashboard).""" + init_db() + return {'message': 'Database initialized successfully'} + + frontend.init(app) if __name__ == '__main__':