# pg_flight_simulator **Repository Path**: hwvv/pg_flight_simulator ## Basic Information - **Project Name**: pg_flight_simulator - **Description**: postgresql flight simulator - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-12-19 - **Last Updated**: 2025-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PostgreSQL Flight Simulator ## 项目概述 PostgreSQL Flight Simulator是一款专为PostgreSQL数据库运维人员设计的交互式培训工具,通过模拟真实的数据库故障场景,帮助新员工快速掌握数据库基本运维操作和故障处理能力。 ### 核心目标 - 提供沉浸式的数据库故障演练环境 - 帮助新员工快速掌握PostgreSQL数据库基本运维技能 - 模拟真实生产环境中的常见故障场景 - 培养故障定位、分析和恢复的能力 - 提供实时反馈和指导,加速学习过程 ### 用户群体 - PostgreSQL数据库运维新手 - 数据库管理员培训 - 开发人员学习数据库运维知识 ## 功能模块详细说明 ### 1. 故障演练场景选择 - **场景列表**:提供下拉列表展示多种预设故障场景 - **场景详情**: - 背景说明:场景的业务环境和前置条件 - 客户感知:故障对业务的影响和用户体验 - 故障特征:数据库表现出的异常现象 - **场景分类**:按故障产生的根因分类,比如缺失索引、死锁、数据库配置错误等。 ### 2. 故障演练控制台 - **演练控制**: - 启动演练:初始化场景,开始倒计时 - 重置演练:恢复场景初始状态,重新开始 - 暂停/继续:允许暂停演练进行思考 - **倒计时显示**:实时显示剩余时间,超时自动判定失败 - **演练状态**:显示当前演练的进度和状态 ### 3. 演练步骤提示 - **步骤导航**: - 定位步骤:指导用户如何识别和定位故障 - 恢复步骤:指导用户如何修复故障和恢复服务 - **进度追踪**: - 步骤完成状态:每步成功后显示打钩标记 - 实时反馈:根据用户输入判定步骤执行结果 - 错误提示:提供错误原因和改进建议 - **完成条件**: - 所有步骤成功执行:演练成功 - 超时未完成:演练失败 ### 4. 数据库监控显示 - **关键指标**: - 系统资源:CPU使用率、内存使用率、磁盘使用率 - 数据库性能:QPS、查询时延、活跃会话数 - 异常指标:慢SQL数量、锁等待、连接错误 - **实时刷新**:监控数据根据演练场景动态变化 - **可视化展示**:使用图表直观展示指标趋势 ### 5. 终端模拟器 - **大模型驱动**:完全基于大模型模拟命令执行,无需硬编码命令逻辑 - **命令支持**: - Linux命令:ls、cd、cat、grep、top等常用命令 - PostgreSQL命令:psql客户端命令、SQL语句 - 系统视图:pg_stat_activity、pg_stat_statements等 - **文件系统**: - 模拟PostgreSQL数据库目录结构 - 支持查看文件大小、内容 - 日志文件实时更新 - 文件系统状态由大模型动态维护 - **输出格式**:严格遵循PostgreSQL和Linux标准输出格式 - **上下文管理**:保持会话连贯性,支持跨命令的状态跟踪 ### 6. Web响应式界面 #### 设计风格 - **色彩方案**: - 主色调:淡蓝色 (#4A90E2) - 代表专业、可靠,用于主按钮、标题和强调元素 - 辅助色: - 绿色 (#50E3C2) - 用于成功状态、完成标记 - 橙色 (#F5A623) - 用于警告、提示信息 - 红色 (#D0021B) - 用于错误状态、紧急告警 - 中性色: - 白色 (#FFFFFF) - 主背景色 - 浅灰 (#F5F7FA) - 面板背景、分隔线 - 中灰 (#8C8C8C) - 次要文本 - 深灰 (#333333) - 主文本、重要信息 - **视觉层次**: - 采用卡片式设计,各功能模块清晰分隔 - 使用阴影和边框创建深度感 - 合理的留白和间距,提升可读性 - 字体层级明确:标题、副标题、正文、辅助文字 #### 布局结构 - **整体布局**: - 顶部:导航栏(项目名称、倒计时) - 左侧:场景选择、演练控制、步骤提示(宽度30%) - 右侧:数据库监控面板(宽度70%) - 底部:终端模拟器(高度300px,可调整) - **面板设计**: - 所有面板采用圆角设计(8px) - 面板间间距一致(16px) - 可折叠/展开功能,适应不同屏幕尺寸 - **响应式策略**: - 大屏幕(>1200px):左右分栏布局 - 中屏幕(768px-1200px):上下堆叠布局,监控面板和控制台各占50% - 小屏幕(<768px):垂直堆叠布局,单栏显示 #### 用户体验 - **交互反馈**: - 按钮点击有明确的视觉反馈(颜色变化、阴影效果) - 命令执行有加载状态提示 - 步骤完成有成功动画和声音提示 - 错误操作有明确的错误提示和建议 - **操作流程**: - 演练流程清晰:选择场景 → 启动演练 → 执行操作 → 完成演练 - 终端支持命令历史记录和自动补全 - 监控指标支持自定义显示项 - **用户引导**: - 首次使用有引导教程 - 复杂操作有实时提示 - 悬停提示解释功能和指标含义 #### 视觉元素 - **图标系统**: - 采用一致的线性图标风格 - 功能图标:启动、重置、暂停、完成等 - 状态图标:成功、警告、错误、信息等 - 监控图标:CPU、内存、磁盘、QPS等 - **微交互动画**: - 面板加载时的淡入效果 - 指标变化时的平滑过渡动画 - 步骤完成时的打钩动画 - 终端输出时的打字机效果 - **状态指示**: - 演练状态:进行中(蓝色)、成功(绿色)、失败(红色) - 监控指标:正常(绿色)、警告(橙色)、异常(红色) - 命令执行:成功(绿色)、失败(红色)、执行中(黄色) #### 文件位置 - 前端代码保存在`pg_fs.html` ### 7. 典型故障场景示例 **请参考scenarios目录下的示例场景定义文件** ## 技术栈和系统架构 ### 前端技术栈 - HTML5 + CSS3 + JavaScript - 响应式设计:媒体查询、Flexbox/Grid布局 - 图表库:Chart.js或ECharts用于监控数据可视化 - 终端模拟器:自定义实现或基于xterm.js ### 后端技术栈 - Python 3.x - Flask框架:提供API服务和Web应用 - 大模型接入:OpenAI API或其他大模型服务(核心组件) - 数据存储:JSON文件存储场景配置和用户进度 - 提示词工程:场景定义和命令模拟的核心实现方式 ### 系统架构 ``` ┌─────────────────────────────────────────────────┐ │ 前端界面 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │场景选择 │ │控制台 │ │步骤提示 │ │监控面板 │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────┐ │ │ │ 终端模拟器 │ │ │ └─────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ Flask后端 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │API服务 │ │场景管理 │ │进度追踪 │ │命令处理 │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ ▼ │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ 大模型核心 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │命令模拟 │ │场景驱动 │ │上下文管 │ │输出生成 │ │ │ │ │ │ │ │理 │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────┘ ``` ## 实现路径和开发步骤 ### 阶段一:环境搭建和基础框架 1. **开发环境配置**: - 安装Python 3.x和pip - 安装Flask框架 - 配置大模型API密钥 2. **项目初始化**: - 创建项目目录结构 - 配置Flask应用基础设置 - 实现简单的前后端通信 ### 阶段二:核心功能开发 1. **终端模拟器实现**: - 基于大模型的命令模拟和执行 - 完全依赖大模型生成命令输出,无需硬编码命令逻辑 - 命令上下文管理,保持会话连贯性 - PostgreSQL命令和系统视图的真实模拟 - 文件系统状态的动态模拟 2. **故障场景管理**: - 基于提示词模板的场景定义格式 - 场景文件采用Markdown格式的提示词模板 - 提示词包含场景背景、故障特征、预期命令输出 - 场景文件加载和解析机制 - 场景切换时动态更新大模型上下文 3. **演练控制台开发**: - 演练流程控制逻辑 - 倒计时功能 - 状态管理 - 与大模型的交互协调 ### 阶段三:大模型接入和集成 1. **大模型API集成**: - API客户端实现 - 多轮对话管理(命令上下文保持) - 提示词工程设计与优化 2. **智能交互实现**: - 基于大模型的命令执行结果模拟 - 监控指标的动态生成(由大模型驱动) - 步骤执行结果的智能判定 ### 阶段四:用户界面和体验优化 1. **Web界面开发**: - 响应式布局实现 - 监控图表集成 - 用户界面美化 2. **交互体验优化**: - 实时反馈机制 - 错误提示优化 - 操作流程简化 ### 阶段五:测试和完善 1. **功能测试**: - 各模块功能验证 - 场景流程测试 - 边界条件测试 2. **性能优化**: - 前端渲染优化 - 后端响应优化 - 大模型调用优化 3. **文档完善**: - 使用说明更新 - 开发文档补充 - 场景库扩展 ## 项目结构和文件组织 ``` pg_flight_simulator2/ ├── pg_fs.py # 后端主程序(Flask应用) ├── pg_fs.html # 前端界面 ├── static/ # 静态资源 │ ├── css/ # CSS样式文件 │ ├── js/ # JavaScript文件 │ └── images/ # 图片资源 ├── scenarios/ # 故障场景定义 │ ├── slow_query.md # 未建索引导致的慢SQL │ ├── connection_leak.md # 连接泄漏场景 │ └── ... # 其他场景文件 ├── config/ # 配置文件 │ ├── model_config.py # 大模型配置 │ └── app_config.py # 应用配置 ├── utils/ # 工具函数 │ ├── terminal.py # 终端模拟器工具 │ ├── monitor.py # 监控数据生成工具 │ └── scenario.py # 场景管理工具 └── README.md # 项目说明文档 ``` ## 使用说明和部署指南 ### 环境要求 - Python 3.7+ - pip包管理器 - 网络连接(用于大模型API调用) ### 安装步骤 1. **克隆项目**: ```bash git clone <项目仓库地址> cd pg_flight_simulator2 ``` 2. **安装依赖**: ```bash pip install -r requirements.txt ``` 3. **配置大模型API**: - 编辑`config/model_config.py` - 填写大模型API密钥和相关配置 ### 启动方法 1. **运行后端服务**: ```bash python pg_fs.py ``` 2. **访问应用**: - 打开浏览器访问 `http://localhost:5000` - 默认端口可在配置文件中修改 ### 使用流程 1. **选择场景**:从下拉列表中选择要演练的故障场景 2. **开始演练**:点击"启动演练"按钮,开始倒计时 3. **执行操作**: - 根据步骤提示在终端模拟器中执行命令 - 观察监控面板的指标变化 4. **完成演练**: - 成功完成所有步骤:获得演练成功提示 - 超时未完成:获得演练失败提示 5. **查看结果**:查看演练报告和改进建议 ### 故障排除 - **连接错误**:检查大模型API密钥和网络连接 - **命令不识别**:确保输入的命令符合模拟环境支持范围 - **界面显示异常**:尝试刷新页面或使用最新版浏览器 ## 实现路径 - 接入大模型,采用多轮对话方式实现定位恢复过程 - 故障场景定义在md文件中,作为提示词输入大模型 - 终端模拟器输出由大模型模拟,确保格式标准 - 监控指标和演练进度从大模型获取,动态更新