""" ContBK 統合ダッシュボード ====================== ContBKフォルダーの全機能を統合した見やすいダッシュボード サブフォルダーの機能を「Example」タブ内で整理して表示 """ import gradio as gr import importlib import os import sys import traceback from typing import List, Tuple, Any, Dict def load_contbk_interfaces() -> Dict[str, List[Tuple[Any, str]]]: """ ContBKフォルダーから機能をカテゴリ別に読み込み """ print("📂 ContBK統合ダッシュボード: 機能を読み込み中...") # パスの設定 contbk_path = "/workspaces/fastapi_django_main_live/contbk" main_path = "/workspaces/fastapi_django_main_live" if contbk_path not in sys.path: sys.path.insert(0, contbk_path) if main_path not in sys.path: sys.path.insert(0, main_path) # カテゴリ別の機能整理 categories = { "🤖 AI・自動化": [ ("gra_01_chat.Chat", "💬 AI チャット"), ("gra_02_openInterpreter.OpenInterpreter", "🤖 AI インタープリター"), ("gra_12_rpa.rpa_automation", "🤖 RPA自動化システム"), ], "📄 ドキュメント・開発": [ ("gra_03_programfromdoc.programfromdoc", "📄 ドキュメント生成"), ("gra_03_programfromdocgas.programfromdocAI", "📄 プログラム生成AI"), ("gra_03_programfromdocs.lavelo", "💾 プロンプト管理"), ], "🎨 フロントエンド・UI": [ ("gra_10_frontend.frontend_generator", "🎨 フロントエンド生成"), ("gra_11_multimodal.image_to_ui", "🖼️ 画像からUI生成"), ], "📊 データ・ファイル": [ ("gra_04_database.rides", "🚗 データベース管理"), ("gra_05_files.files", "📁 ファイル管理"), ], "🌐 その他ツール": [ ("gra_09_weather.weather", "🌤️ 天気予報"), ("gra_06_video.video", "🎥 動画処理"), ], "🐙 開発・Issue管理": [ ("controllers.github_issue_creator", "🐙 GitHub Issue作成"), ], } loaded_categories = {} for category_name, modules in categories.items(): loaded_interfaces = [] for module_name, display_name in modules: try: print(f"🔍 Loading {module_name}...") module = importlib.import_module(module_name) if hasattr(module, 'gradio_interface'): loaded_interfaces.append((module.gradio_interface, display_name)) print(f"✅ Successfully loaded: {display_name}") else: print(f"⚠️ No gradio_interface found in {module_name}") except Exception as e: print(f"❌ Failed to load {module_name}: {str(e)}") continue if loaded_interfaces: loaded_categories[category_name] = loaded_interfaces return loaded_categories def create_category_tab(interfaces: List[Tuple[Any, str]], category_name: str) -> gr.Blocks: """ カテゴリごとのタブを作成 """ with gr.Blocks(title=f"ContBK - {category_name}") as category_tab: gr.Markdown(f"# {category_name}") gr.Markdown(f"このカテゴリには {len(interfaces)} 個の機能があります。") if interfaces: # サブタブとして各機能を表示 interface_list = [interface for interface, _ in interfaces] interface_names = [name for _, name in interfaces] if len(interfaces) == 1: # 1つの機能のみの場合、直接表示 interface = interface_list[0] # Handle factory functions if callable(interface) and not hasattr(interface, 'queue'): interface = interface() interface.render() else: # 複数の機能がある場合、サブタブで表示 # Handle factory functions in the list processed_interfaces = [] for interface in interface_list: if callable(interface) and not hasattr(interface, 'queue'): interface = interface() processed_interfaces.append(interface) sub_tabs = gr.TabbedInterface( processed_interfaces, interface_names, title=f"{category_name} 機能一覧" ) else: gr.Markdown("⚠️ このカテゴリには利用可能な機能がありません。") return category_tab def create_overview_tab() -> gr.Blocks: """ 概要・ヘルプタブを作成 """ with gr.Blocks() as overview_tab: gr.Markdown(""" # 🎯 ContBK 統合ダッシュボード ## 📋 概要 このダッシュボードは、ContBKフォルダーにある全ての機能を整理して表示します。 ## 🗂️ カテゴリ構成 ### 🤖 AI・自動化 - **AI チャット**: 対話型AIインターフェース - **AI インタープリター**: コード実行・解析 - **RPA自動化システム**: Webブラウザ自動化 ### 📄 ドキュメント・開発 - **ドキュメント生成**: 仕様書からコード生成 - **プログラム生成AI**: AI支援開発 - **プロンプト管理**: プロンプトライブラリ ### 🎨 フロントエンド・UI - **フロントエンド生成**: UI自動生成 - **画像からUI生成**: 画像ベースUI作成 ### 📊 データ・ファイル - **データベース管理**: CRUD操作 - **ファイル管理**: ファイル操作・編集 ### 🌐 その他ツール - **天気予報**: 気象情報取得 - **動画処理**: 動画編集・変換 ### 🐙 開発・Issue管理 - **GitHub Issue作成**: 会話履歴からIssue自動生成 ## 🚀 使用方法 1. 上部のタブから興味のあるカテゴリを選択 2. カテゴリ内の機能を探索 3. 各機能の詳細な操作は個別のインターフェースで実行 ## 💡 ヒント - 各カテゴリは関連する機能でグループ化されています - 機能に問題がある場合は、ログを確認してください - 新しい機能は随時追加されます """) # システム情報表示 with gr.Row(): with gr.Column(): def get_system_info(): import datetime contbk_path = "/workspaces/fastapi_django_main_live/contbk" folder_count = len([d for d in os.listdir(contbk_path) if os.path.isdir(os.path.join(contbk_path, d)) and d.startswith('gra_')]) return f""" **現在時刻**: {datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S')} **ContBK パス**: {contbk_path} **利用可能フォルダー数**: {folder_count}個 **Gradio バージョン**: {gr.__version__} """ system_info = gr.Textbox( label="💻 システム情報", value=get_system_info(), lines=6, interactive=False ) refresh_btn = gr.Button("🔄 情報更新", variant="secondary") refresh_btn.click(fn=get_system_info, outputs=system_info) return overview_tab def create_unified_dashboard() -> gr.TabbedInterface: """ 統合ダッシュボードを作成 """ print("🚀 ContBK統合ダッシュボードを作成中...") try: # ContBK機能をカテゴリ別に読み込み categories = load_contbk_interfaces() # タブリストを作成 all_tabs = [] all_names = [] # 概要タブを最初に追加 overview_tab = create_overview_tab() all_tabs.append(overview_tab) all_names.append("🏠 概要") # カテゴリ別タブを追加 for category_name, interfaces in categories.items(): category_tab = create_category_tab(interfaces, category_name) all_tabs.append(category_tab) all_names.append(category_name) # 統合タブ付きインターフェースを作成 if len(all_tabs) > 1: dashboard = gr.TabbedInterface( all_tabs, all_names, title="🎯 ContBK 統合ダッシュボード" ) else: # フォールバック:概要タブのみ dashboard = overview_tab print(f"✅ ダッシュボード作成完了: {len(all_tabs)} タブ") return dashboard except Exception as e: print(f"❌ ダッシュボード作成エラー: {str(e)}") traceback.print_exc() # エラー時のフォールバック with gr.Blocks() as error_tab: gr.Markdown(f""" # ❌ エラーが発生しました ContBK統合ダッシュボードの作成中にエラーが発生しました。 **エラー詳細**: {str(e)} ## 🔧 対処方法 1. アプリケーションを再起動してください 2. ログを確認してください 3. 個別の機能が正常に動作するかテストしてください """) return gr.TabbedInterface([error_tab], ["❌ エラー"]) # メインのgradio_interfaceを作成 print("🚀 Creating unified ContBK dashboard...") gradio_interface = create_unified_dashboard() # 自動検出システム用のメタデータ interface_title = "🎯 ContBK統合ダッシュボード" interface_description = "ContBKフォルダーの全機能を整理したダッシュボード" # テスト実行用 if __name__ == "__main__": print("🚀 ContBK統合ダッシュボードを起動中...") gradio_interface.launch( server_name="0.0.0.0", server_port=7865, # 専用ポート share=False, debug=True )