File size: 4,489 Bytes
a73fa4e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
非同期手紙生成システムの設定初期化
Async Letter Generation System Configuration Setup
"""

import os
import sys
from pathlib import Path
from letter_config import Config
from letter_logger import get_app_logger

logger = get_app_logger()

def initialize_config() -> bool:
    """
    設定を初期化し、必要なディレクトリを作成する
    
    Returns:
        初期化が成功したかどうか
    """
    try:
        # 設定の妥当性をチェック
        if not Config.validate_config():
            logger.error("設定の検証に失敗しました")
            return False
        
        # 必要なディレクトリを作成
        storage_path = Path(Config.STORAGE_PATH)
        storage_path.parent.mkdir(parents=True, exist_ok=True)
        
        backup_path = Path(Config.BACKUP_PATH)
        backup_path.mkdir(parents=True, exist_ok=True)
        
        # ログディレクトリを作成(本番環境用)
        if not Config.DEBUG_MODE:
            log_dir = Path("/tmp")
            log_dir.mkdir(parents=True, exist_ok=True)
        
        logger.info("設定初期化が完了しました")
        logger.info(f"ストレージパス: {Config.STORAGE_PATH}")
        logger.info(f"バックアップパス: {Config.BACKUP_PATH}")
        logger.info(f"デバッグモード: {Config.DEBUG_MODE}")
        logger.info(f"バッチ処理時刻: {Config.BATCH_SCHEDULE_HOURS}")
        
        return True
        
    except Exception as e:
        logger.error(f"設定初期化エラー: {e}")
        return False

def check_api_keys() -> bool:
    """
    API キーの存在をチェックする
    
    Returns:
        API キーが設定されているかどうか
    """
    try:
        missing_keys = []
        
        if not Config.GROQ_API_KEY:
            missing_keys.append("GROQ_API_KEY")
        
        if not Config.GEMINI_API_KEY:
            missing_keys.append("GEMINI_API_KEY")
        
        if missing_keys:
            logger.error(f"必要なAPI キーが設定されていません: {', '.join(missing_keys)}")
            return False
        
        logger.info("API キーの確認が完了しました")
        return True
        
    except Exception as e:
        logger.error(f"API キー確認エラー: {e}")
        return False

def setup_environment() -> bool:
    """
    環境をセットアップする
    
    Returns:
        セットアップが成功したかどうか
    """
    try:
        # 設定を初期化
        if not initialize_config():
            return False
        
        # API キーをチェック
        if not check_api_keys():
            return False
        
        # Hugging Face Spaces 固有の設定
        if os.getenv("SPACE_ID"):
            logger.info(f"Hugging Face Spaces環境で実行中: {os.getenv('SPACE_ID')}")
            
            # Spaces用の追加設定があればここに記述
            
        logger.info("環境セットアップが完了しました")
        return True
        
    except Exception as e:
        logger.error(f"環境セットアップエラー: {e}")
        return False

def get_system_info() -> dict:
    """
    システム情報を取得する
    
    Returns:
        システム情報の辞書
    """
    return {
        "python_version": sys.version,
        "storage_path": Config.STORAGE_PATH,
        "backup_path": Config.BACKUP_PATH,
        "debug_mode": Config.DEBUG_MODE,
        "batch_hours": Config.BATCH_SCHEDULE_HOURS,
        "max_daily_requests": Config.MAX_DAILY_REQUESTS,
        "generation_timeout": Config.GENERATION_TIMEOUT,
        "max_concurrent_generations": Config.MAX_CONCURRENT_GENERATIONS,
        "groq_model": Config.GROQ_MODEL,
        "Together_model": Config.TOGETHER_API_MODEL,
        "available_themes": Config.AVAILABLE_THEMES,
        "space_id": os.getenv("SPACE_ID", "local"),
        "streamlit_port": Config.STREAMLIT_PORT
    }

if __name__ == "__main__":
    # スクリプトとして実行された場合の設定確認
    print("非同期手紙生成システム設定確認")
    print("=" * 50)
    
    if setup_environment():
        print("✅ 環境セットアップ成功")
        
        system_info = get_system_info()
        for key, value in system_info.items():
            print(f"{key}: {value}")
    else:
        print("❌ 環境セットアップ失敗")
        sys.exit(1)