File size: 4,137 Bytes
a854c6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env python3
"""
Docker環境設定テストスクリプト
README.md仕様: Gradio 4.29.0, 🦀 emoji, app.py
"""

import os
import json
import sys

def test_environment_variables():
    """環境変数の設定をテスト"""
    print("🦀 Docker環境設定テスト - Gradio FastAPI Django Main")
    print("=" * 60)
    
    # 必須環境変数のチェック
    required_vars = [
        'OPENAI_API_KEY',
        'OPENAI_API_BASE', 
        'MODEL_NAME',
        'GRADIO_SERVER_NAME',
        'GRADIO_SERVER_PORT',
        'GOOGLE_APPLICATION_CREDENTIALS_CONTENT'
    ]
    
    print("📋 必須環境変数チェック:")
    all_set = True
    for var in required_vars:
        value = os.getenv(var, 'NOT_SET')
        if value == 'NOT_SET' or value == 'YOUR_VALUE_HERE':
            print(f"  ❌ {var}: 未設定")
            all_set = False
        else:
            # 機密情報はマスク
            if 'KEY' in var or 'SECRET' in var or 'TOKEN' in var:
                display_value = value[:8] + '...' if len(value) > 8 else '***'
            else:
                display_value = value
            print(f"  ✅ {var}: {display_value}")
    
    print("\n📦 オプション環境変数:")
    optional_vars = [
        'APPSHEET_APPID', 'APPSHEET_KEY', 'ChannelAccessToken',
        'github_user', 'github_token', 'hf_token'
    ]
    
    for var in optional_vars:
        value = os.getenv(var, 'NOT_SET')
        if value != 'NOT_SET' and value != 'YOUR_VALUE_HERE':
            print(f"  ✅ {var}: 設定済み")
        else:
            print(f"  ⚠️  {var}: 未設定(オプション)")
    
    return all_set

def test_gradio_version():
    """Gradio バージョンチェック"""
    try:
        import gradio as gr
        print(f"\n🎨 Gradio バージョン: {gr.__version__}")
        
        # README.md仕様との比較
        expected_version = "4.29.0"
        if gr.__version__ == expected_version:
            print(f"  ✅ README.md仕様と一致: {expected_version}")
        else:
            print(f"  ⚠️  README.md仕様 ({expected_version}) と異なります")
        
        return True
    except ImportError as e:
        print(f"  ❌ Gradio インポートエラー: {e}")
        return False

def test_google_cloud_config():
    """Google Cloud認証設定テスト"""
    print("\n☁️  Google Cloud設定:")
    
    creds_content = os.getenv('GOOGLE_APPLICATION_CREDENTIALS_CONTENT')
    if creds_content:
        try:
            creds_json = json.loads(creds_content)
            project_id = creds_json.get('project_id', 'NOT_FOUND')
            client_email = creds_json.get('client_email', 'NOT_FOUND')
            
            print(f"  ✅ プロジェクトID: {project_id}")
            print(f"  ✅ サービスアカウント: {client_email}")
            return True
        except json.JSONDecodeError:
            print("  ❌ 認証情報のJSON形式が無効です")
            return False
    else:
        print("  ❌ Google Cloud認証情報が設定されていません")
        return False

def main():
    """メインテスト実行"""
    print("🚀 Docker環境設定検証開始\n")
    
    env_ok = test_environment_variables()
    gradio_ok = test_gradio_version()
    gcp_ok = test_google_cloud_config()
    
    print("\n" + "=" * 60)
    print("📊 テスト結果サマリー:")
    print(f"  環境変数: {'✅ OK' if env_ok else '❌ NG'}")
    print(f"  Gradio: {'✅ OK' if gradio_ok else '❌ NG'}")
    print(f"  Google Cloud: {'✅ OK' if gcp_ok else '❌ NG'}")
    
    overall_status = all([env_ok, gradio_ok, gcp_ok])
    if overall_status:
        print("\n🎉 すべてのテストが通過しました!")
        print("✨ README.md仕様に準拠したDocker環境が正常に設定されています")
    else:
        print("\n⚠️  いくつかの設定に問題があります")
        print("💡 上記のエラーを修正してから再度テストしてください")
    
    return 0 if overall_status else 1

if __name__ == "__main__":
    sys.exit(main())