File size: 10,925 Bytes
55cbdc2 fabbc69 55cbdc2 fabbc69 55cbdc2 fabbc69 55cbdc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 |
"""
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
)
|