fastapi_django_main_live / controllers /contbk_unified_dashboard.py
GitHub Actions
🚀 Auto-deploy from GitHub Actions
fabbc69
raw
history blame
10.9 kB
"""
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
)