File size: 2,501 Bytes
564d5dd
 
820e26c
eed23a7
564d5dd
 
 
 
ea53ae2
564d5dd
ea53ae2
 
 
fb6a933
ea53ae2
 
 
 
 
 
 
 
 
 
 
260bcd1
ea53ae2
 
 
eed23a7
 
 
 
564d5dd
eed23a7
 
564d5dd
260bcd1
ea53ae2
b7d28bb
 
 
 
 
eed23a7
e542598
fb6a933
 
 
 
260bcd1
fb6a933
260bcd1
fb6a933
 
260bcd1
fb6a933
 
 
 
 
 
 
 
260bcd1
fb6a933
 
e542598
eed23a7
ea53ae2
 
 
 
 
 
260bcd1
fb6a933
eed23a7
 
 
260bcd1
564d5dd
 
 
 
fb6a933
eed23a7
564d5dd
260bcd1
 
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
#!/usr/bin/env python3
"""
Web RAG 系统
基于 Google Gemini 的智能文档问答系统
"""

import traceback

# 导入基础设施层
try:
    from src.infrastructure import (
        initialize_infrastructure,
        get_config,
        get_logger
    )

    # 初始化基础设施
    initialize_infrastructure()

    # 获取基础设施服务
    config_service = get_config()
    logger = get_logger()

    logger.info("Web RAG 系统启动", extra={
        "environment": config_service.get_environment().value,
        "version": "v4.0"
    })

    # 导入服务层
    from src.application.services.document_service import DocumentService
    from src.application.services.chat_service import ChatService
    from src.application.services.model_service import ModelService
    from src.shared.state.application_state import ApplicationState

    # 初始化应用状态和服务
    application_state = ApplicationState()

    # 创建服务实例
    model_service = ModelService(config_service, logger)
    document_service = DocumentService(
        model_service=model_service,
        config_service=config_service,
        logger_service=logger
    )
    chat_service = ChatService(model_service)

    # 确保默认模型为 2.5 预览版
    target_default = "gemini-2.5-flash-preview-05-20"
    if model_service.get_current_model() != target_default:
        model_service.switch_model(target_default)

    logger.info("Web RAG 系统初始化完成")

    # 导入表示层控制器
    from src.presentation.controllers.main_ui_controller import MainUIController

    # 创建主UI控制器
    main_controller = MainUIController(
        document_service,
        chat_service,
        model_service,
        config_service,
        logger
    )

    # 构建界面
    demo = main_controller.build_interface()

except Exception as e:
    error_msg = f"系统初始化失败: {e}"
    error_details = traceback.format_exc()

    print(f"❌ {error_msg}")
    print(f"错误详情: {error_details}")

    # 创建错误界面
    import gradio as gr
    with gr.Blocks(title="Web RAG 系统 - 系统错误") as demo:
        gr.Markdown("# ❌ 系统错误")
        gr.Markdown(f"**错误信息**: {str(e)}")
        gr.Markdown("**建议**: 检查依赖配置和环境设置")


if __name__ == "__main__":
    try:
        main_controller.launch()

    except Exception as e:
        print(f"❌ 启动失败: {e}")
        print(f"错误详情: {traceback.format_exc()}")