diff --git a/(红头)windows上唯一启动说明.md b/(红头)windows上唯一启动说明.md new file mode 100644 index 0000000..58cd4a1 --- /dev/null +++ b/(红头)windows上唯一启动说明.md @@ -0,0 +1,125 @@ +# Windows 上唯一启动说明 + +| 项目 | 内容 | +|------|------| +| 目标 | 在 Windows 上一致地完成依赖、配置、开发与生产启动 | +| 版本号 | v1.0.0 | +| 责任人 | 项目组 | +| 最后更新日期 | 2026-05-02 | + +**变更记录** + +| 日期 | 修改人 | 修改内容 | +|------|--------|----------| +| 2026-05-02 | 项目组 | 合并原多份 Windows 批处理与部署文档为本文 + 根目录 `windows启动.bat` | + +**关联资源** + +- 代码库根目录:`windows启动.bat`、`run_dev.py`、`run_production.py` +- 环境示例:`.env.example` + +--- + +## 1. 唯一入口(推荐) + +在资源管理器中进入项目根目录(含 `requirements.txt` 的目录),**双击 `windows启动.bat`**,按提示选择: + +| 选项 | 说明 | +|------|------| +| 1 | 开发服务器:`run_dev.py`,默认 **http://127.0.0.1:5002**,调试与代码重载开启 | +| 2 | 生产服务器:Waitress(`run_production.py`),默认 **http://0.0.0.0:5000**,可用环境变量 `PORT` 覆盖 | +| 3 | 退出 | + +若已创建虚拟环境 `.venv`,脚本会自动 `call .venv\Scripts\activate.bat` 再启动。 + +--- + +## 2. 前置条件 + +1. **Python**:建议 3.12,已安装 `pip`。 +2. **虚拟环境(推荐)** + + ```bat + python -m venv .venv + .venv\Scripts\activate.bat + pip install -r requirements.txt + ``` + +3. **配置**:复制 `.env.example` 为 `.env`,填写 `SECRET_KEY`、`DATABASE_URL`、`LLM_API_KEY`、`WX_APPID`、`WX_SECRET` 等(与示例注释一致)。 + +--- + +## 3. 命令行等价写法(不双击 bat 时) + +在项目根目录、已激活虚拟环境的前提下: + +```bat +set PYTHONPATH=%cd% +python run_dev.py +``` + +生产(Waitress,默认端口 5000): + +```bat +set FLASK_ENV=production +set PYTHONPATH=%cd% +python run_production.py +``` + +端口:可在 `.env` 中设置 `PORT=xxxx`(`create_app` 会加载 dotenv);**`run_dev.py` 内端口固定为 5002**,不受 `PORT` 影响。 + +--- + +## 4. 可选:安装为 Windows 服务(无单独 bat) + +需 **管理员** 命令提示符,项目根目录、已安装依赖: + +```bat +cd /d D:\你的路径\aitsc +set PYTHONPATH=%cd% +python flask_prompt_master_service.py install +python flask_prompt_master_service.py start +``` + +停止 / 卸载:`stop`、`remove`。服务内当前监听 **5000**(见 `flask_prompt_master_service.py`)。 + +**简化版(任务计划程序)**:`python simple_windows_service.py install`(详见该脚本内说明)。 + +--- + +## 5. 监控与日志(无单独 bat) + +```bat +.venv\Scripts\activate.bat +python monitor_manager.py +``` + +更多子命令见 `docs/development/监控和日志系统使用指南.md`。 + +--- + +## 6. 防火墙(按需) + +PowerShell(管理员),示例放行 5002(开发)与 5000(生产/服务): + +```powershell +New-NetFirewallRule -DisplayName "aitsc-dev-5002" -Direction Inbound -LocalPort 5002 -Protocol TCP -Action Allow +New-NetFirewallRule -DisplayName "aitsc-prod-5000" -Direction Inbound -LocalPort 5000 -Protocol TCP -Action Allow +``` + +--- + +## 7. 常见问题 + +| 现象 | 处理 | +|------|------| +| 提示无模块 | 确认在项目根目录执行,且已 `set PYTHONPATH=%cd%` 或使用 `windows启动.bat` | +| 端口被占用 | 开发改代码中端口或结束占用进程;生产设置 `PORT` 或改 Waitress 默认 | +| `pywin32` 安装失败 | `pip install pywin32==306` 后重试;安装 Windows 服务必须能导入 `win32serviceutil` | +| 服务起不来 | 查看 `logs\service.log` | + +--- + +## 8. Linux / 服务器 + +Windows 以外环境不在本文范围;生产常用 Gunicorn 等见仓库内 `gunicorn.conf.py`、`docker-compose*.yml` 及 `docs/deployment/`。 diff --git a/(红头)windows启动.bat b/(红头)windows启动.bat new file mode 100644 index 0000000..33d8439 --- /dev/null +++ b/(红头)windows启动.bat @@ -0,0 +1,45 @@ +@echo off +chcp 65001 >nul +cd /d "%~dp0" + +set PYTHONPATH=%cd% + +if exist ".venv\Scripts\activate.bat" ( + call .venv\Scripts\activate.bat +) + +:menu +echo. +echo ============================================================ +echo aitsc - Windows 启动(唯一脚本) +echo ============================================================ +echo [1] 开发 run_dev.py http://127.0.0.1:5002 +echo [2] 生产 Waitress 默认端口 5000 ^(可用环境变量 PORT^) +echo [3] 退出 +echo ============================================================ +set /p _choice=请选择 (1-3): + +if "%_choice%"=="1" goto run_dev +if "%_choice%"=="2" goto run_prod +if "%_choice%"=="3" goto eof + +echo 无效选择,请重新输入。 +goto menu + +:run_dev +set FLASK_ENV=development +python run_dev.py +goto after_run + +:run_prod +set FLASK_ENV=production +python run_production.py +goto after_run + +:after_run +echo. +echo 进程已结束。 +pause + +:eof +exit /b 0 diff --git a/(红头)项目分析文档.md b/(红头)项目分析文档.md new file mode 100644 index 0000000..ba1f87b --- /dev/null +++ b/(红头)项目分析文档.md @@ -0,0 +1,803 @@ +# 提示词大师 (aitsc) 项目分析文档 + +> 分析日期:2026-05-02 | 版本:v1.0.0 | 工作目录:`D:\aaa\aitsc` + +--- + +## 目录 + +1. [项目概述](#1-项目概述) +2. [技术架构](#2-技术架构) +3. [目录结构详解](#3-目录结构详解) +4. [核心模块分析](#4-核心模块分析) +5. [数据模型设计](#5-数据模型设计) +6. [API 路由体系](#6-api-路由体系) +7. [配置系统](#7-配置系统) +8. [部署架构](#8-部署架构) +9. [Vue 前端重构](#9-vue-前端重构) +10. [安全问题诊断](#10-安全问题诊断) +11. [技术债务清单](#11-技术债务清单) +12. [改进建议](#12-改进建议) + +--- + +## 1. 项目概述 + +### 1.1 项目定位 + +**提示词大师 (aitsc / flask_prompt_master)** 是一个基于大语言模型 (LLM) 的智能提示词生成与多场景 AI 应用平台,支持 Web 端和微信小程序端。 + +### 1.2 核心能力 + +- 调用 DeepSeek API 将用户的简短需求转化为高质量、结构化的专业提示词 +- 提供 15 个垂直 AI 应用场景(饭菜规划、古诗词解析、周报生成、简历优化等) +- 支持意图识别 + 专家模板的两阶段提示词优化 +- Web 用户认证 + 微信小程序登录双通道 +- Flask-Admin 管理后台(用户管理、数据分析、系统监控) + +### 1.3 版本历史 + +| 版本 | 日期 | 主要变更 | +|------|------|----------| +| 初始版本 | 早期 | 基础提示词生成 | +| v1.0.0 | 2026-02 | 完整功能集、配置系统重构、Vue 前端试点 | + +--- + +## 2. 技术架构 + +### 2.1 技术栈全景 + +``` +┌─────────────────────────────────────────────────────┐ +│ 前端层 │ +│ ┌──────────────────┐ ┌──────────────────────────┐ │ +│ │ 传统 SSR 前端 │ │ Vue 3 SPA (vue-app/) │ │ +│ │ Bootstrap 5 + │ │ TypeScript + Vite + │ │ +│ │ jQuery + Jinja2 │ │ Element Plus + Pinia │ │ +│ └────────┬─────────┘ └───────────┬──────────────┘ │ +│ │ │ │ +│ └────────┬───────────────┘ │ +│ │ HTTP/HTTPS │ +├────────────────────┼────────────────────────────────┤ +│ │ Nginx 反向代理 │ +├────────────────────┼────────────────────────────────┤ +│ 后端层 │ +│ ┌─────────────────────────────────────────────┐ │ +│ │ Flask 应用 (Python 3.12) │ │ +│ │ ├── 路由层: 20+ 蓝图 │ │ +│ │ ├── 服务层: Auth/MS/Poetry/PromptQuality │ │ +│ │ ├── 数据层: SQLAlchemy ORM + Flask-Migrate │ │ +│ │ └── 管理后台: Flask-Admin + Flask-Login │ │ +│ └─────────────────────────────────────────────┘ │ +│ │ │ │ +├───────────┼────────────────────┼─────────────────────┤ +│ 数据层 AI 服务层 │ +│ ┌───────┴──────┐ ┌─────────┴─────────┐ │ +│ │ MySQL 8.0 │ │ DeepSeek API │ │ +│ │ Redis 7 │ │ (OpenAI 兼容) │ │ +│ └──────────────┘ └───────────────────┘ │ +└─────────────────────────────────────────────────────┘ +``` + +### 2.2 关键技术指标 + +| 维度 | 详情 | +|------|------| +| 后端框架 | Python Flask >= 2.2.0 | +| ORM | Flask-SQLAlchemy + Flask-Migrate | +| 数据库 | MySQL 8.0 + Redis 7 | +| AI 模型 | DeepSeek Chat (OpenAI 兼容 API) | +| AI 超时 | 60 秒,含 3 次指数退避重试 | +| 生产服务器 | Waitress (Windows) / Gunicorn (Linux) | +| 容器化 | Docker Compose 4 服务编排 | +| 传统前端 | Bootstrap 5.1 + jQuery 3.6 (CDN) | +| 新前端 | Vue 3.5 + TypeScript 5.9 + Vite 8 + Element Plus 2.13 | + +### 2.3 两个应用入口文件的关系 + +项目存在两个 Flask app 实例: + +| 文件 | 用途 | 状态 | +|------|------|------| +| `src/flask_prompt_master/app.py` | 独立模拟模板 API 服务 (端口 5000) | **弃用/遗留** - Mock 数据,与主应用无关 | +| `src/flask_prompt_master/__init__.py` | 主应用工厂 `create_app()` | **活跃** - 所有蓝图注册、扩展初始化 | + +`run_dev.py` 和 `run_production.py` 均使用 `create_app()` 工厂函数。 + +--- + +## 3. 目录结构详解 + +``` +D:\aaa\aitsc/ +├── run_dev.py # 开发入口 (Flask dev server, 端口 5002) +├── run_production.py # 生产入口 (Waitress WSGI) +├── config.py # 旧版配置 (已弃用, 重定向) +│ +├── config/ # 新版多环境配置系统 +│ ├── __init__.py # 配置工厂 get_config() +│ ├── base.py # 基础配置类 (公共项) +│ ├── development.py # 开发环境配置 +│ ├── production.py # 生产环境配置 +│ ├── testing.py # 测试环境配置 +│ └── local.py # 本地环境配置 +│ +├── src/flask_prompt_master/ # ★ Flask 应用核心 +│ ├── __init__.py # 应用工厂 create_app() + 蓝图注册 +│ ├── app.py # 遗留 Mock API (独立 app, 无关) +│ ├── config.py # 旧版配置引用 +│ ├── user_context.py # 当前用户标识获取 +│ ├── promptsTemplates.py # 4214 行模板数据初始化脚本 +│ │ +│ ├── routes/ # ★ 路由层 (20+ 蓝图) +│ │ ├── __init__.py # 包导出 +│ │ ├── routes.py # 主路由 (1467 行, 核心生成/模板/微信) +│ │ ├── auth.py # 用户认证 (登录/注册/资料/密码) +│ │ ├── favorites.py # 收藏管理 +│ │ ├── history_routes.py # 历史记录 (484 行) +│ │ ├── meal_planning.py # 饭菜规划 +│ │ ├── poetry.py # 古诗词解析 +│ │ ├── weekly_report.py # 智能周报生成 +│ │ ├── travel_planning.py # 旅行攻略规划 +│ │ ├── meeting_minutes.py # 会议纪要整理 +│ │ ├── resume_optimization.py # 简历/求职信优化 +│ │ ├── prompt_optimization.py # 提示词优化 (通用) +│ │ ├── smart_prompt_optimization.py # 智能提示词优化 +│ │ ├── expert_generate_2.py # 专家模式 2 号 +│ │ ├── expert_generate_3.py # 专家模式 3 号 +│ │ ├── android_tools.py # Android 工程师专区 +│ │ ├── prompt_quality_routes.py # 提示词质量评价 +│ │ ├── comparison_routes.py # 对比评价 +│ │ ├── evaluation_routes.py # 历史评价 +│ │ ├── placeholder_apps.py # 占位应用 +│ │ └── prompts.py # 简短路由 +│ │ +│ ├── models/ # ★ 数据模型层 +│ │ ├── __init__.py +│ │ ├── models.py # 核心模型 (User/WxUser/Prompt/MealPlan/等) +│ │ ├── favorites.py # 收藏模型 +│ │ ├── poetry_favorites.py # 古诗词收藏模型 +│ │ ├── history_models.py # 历史记录模型 (PromptHistory/HistoryTag/UserStatistics) +│ │ ├── optimization_history.py # 优化历史模型 +│ │ ├── prompt_quality_models.py # 提示词质量评价记录 +│ │ └── evaluation_models.py # 评价对比模型 +│ │ +│ ├── services/ # ★ 服务层 +│ │ ├── __init__.py +│ │ ├── auth_service.py # 用户认证服务 (注册/登录/密码) +│ │ ├── favorite_service.py # 收藏管理服务 +│ │ ├── poetry_favorite_service.py # 古诗词收藏服务 +│ │ └── prompt_quality_service.py # 提示词质量评价 AI 调用 +│ │ +│ ├── admin/ # Flask-Admin 管理后台 +│ │ ├── __init__.py # init_admin() + 视图注册 +│ │ ├── models/admin_user.py # 管理员模型 +│ │ ├── forms/admin_forms.py # 管理员表单 +│ │ └── views/ # 10 个管理视图 +│ │ ├── user_admin.py +│ │ ├── prompt_admin.py +│ │ ├── template_admin.py +│ │ ├── system_admin.py +│ │ ├── analytics_admin.py +│ │ ├── batch_admin.py +│ │ ├── monitor_admin.py +│ │ ├── report_admin.py +│ │ ├── backup_admin.py +│ │ └── api_admin.py +│ │ +│ ├── templates/ # Jinja2 模板 (SSR 页面) +│ ├── static/ # 静态资源 +│ ├── forms/ # WTForms 表单 +│ └── utils/ # 工具函数 +│ +├── flask_prompt_master/ # 旧版路由 (遗留) +│ └── routes.py # 1176 行旧路由文件 +│ +├── vue-app/ # ★ Vue 3 新前端 +│ ├── src/ +│ │ ├── main.ts # 应用入口 +│ │ ├── App.vue # 根组件 +│ │ ├── router/index.ts # Vue Router (14 路由) +│ │ ├── api/ # API 接口层 +│ │ │ ├── client.ts # Axios 实例 (withCredentials) +│ │ │ ├── index.ts # Axios 实例 (dev 直连) +│ │ │ ├── modules/ # 14 个 API 模块 +│ │ │ │ ├── auth.ts, prompt.ts, favorite.ts, history.ts, +│ │ │ │ ├── meal.ts, poetry.ts, optimization.ts, resume.ts, +│ │ │ │ ├── android.ts, wx.ts, profile.ts, promptQuality.ts, +│ │ │ │ ├── comparison.ts, evaluation.ts +│ │ │ └── types/ # TypeScript 类型定义 +│ │ ├── stores/auth.ts # Pinia 认证状态 +│ │ ├── views/ # 15+ 页面组件 +│ │ │ ├── HomeView.vue, GenerateView.vue, FavoritesView.vue, +│ │ │ ├── HistoryView.vue, MealPlanningView.vue, PoetryView.vue, +│ │ │ ├── OptimizationView.vue, AndroidToolsView.vue, +│ │ │ ├── ResumeOptimizationView.vue, PromptQualityView.vue, +│ │ │ ├── ComparisonEvaluationView.vue, EvaluationHistoryView.vue, +│ │ │ ├── ProfileView.vue, Auth/ (LoginView, RegisterView), +│ │ │ └── Admin/ +│ │ ├── components/ # 组件 (common/forms/ui/layout) +│ │ ├── layouts/ # DefaultLayout.vue, AuthLayout.vue +│ │ └── composables/ # 组合式函数 +│ ├── vite.config.ts # Vite 代理配置 +│ └── package.json +│ +├── wechat-miniprogram/ # 微信小程序 +├── docker/ # Docker 配置 (Nginx/MySQL/SSL) +├── k8s/ # Kubernetes 部署 +├── migrations/ # Flask-Migrate 迁移脚本 +├── scripts/ # 运维脚本 +├── docs/ # 文档 +├── logs/ # 日志输出 +├── uploads/ # 文件上传 +├── backups/ # 备份 +└── docker-compose.yml # 4 服务 Docker 编排 +``` + +--- + +## 4. 核心模块分析 + +### 4.1 模块全景图 + +项目包含 15 个功能模块,按重要性分为三个层级: + +| 层级 | 模块 | 蓝图/Bp | 路由文件 | 代码规模 | +|------|------|---------|----------|----------| +| **P0 核心** | 提示词生成 (主) | main | routes.py | 1467 行 | +| **P0 核心** | 用户认证 | auth | auth.py | 209 行 | +| **P0 核心** | 历史记录 | history | history_routes.py | 484 行 | +| **P0 核心** | 收藏管理 | favorites | favorites.py | 97 行 | +| **P1 垂直** | 饭菜规划 | meal_planning | meal_planning.py | | +| **P1 垂直** | 古诗词解析 | poetry | poetry.py | | +| **P1 垂直** | 周报生成 | weekly_report | weekly_report.py | | +| **P1 垂直** | 旅行攻略 | travel_planning | travel_planning.py | | +| **P1 垂直** | 会议纪要 | meeting_minutes | meeting_minutes.py | | +| **P1 垂直** | 简历优化 | resume_optimization | resume_optimization.py | | +| **P1 垂直** | 提示词质量评价 | prompt_quality | prompt_quality_routes.py | 198 行 | +| **P1 垂直** | 对比评价 | comparison | comparison_routes.py | | +| **P2 辅助** | 专家模式 2 号 | expert_generate_2 | expert_generate_2.py | | +| **P2 辅助** | 专家模式 3 号 | expert_generate_3 | expert_generate_3.py | | +| **P2 辅助** | Android 工具 | android_tools | android_tools.py | | +| **P2 辅助** | 占位应用 | placeholder | placeholder_apps.py | | + +### 4.2 提示词生成流程 (核心链路) + +``` +用户输入描述 + │ + ▼ +选择模板 (可选) ──→ get_system_prompt(template_id) + │ │ + │ ├─ 有 TemplateID → PromptTemplate.query.get(id) + │ ├─ 无 → 查找 is_default=True 模板 + │ └─ 无默认 → 硬编码默认系统提示词 + │ + ▼ +generate_with_llm(input_text, template_id, max_retries=3) + │ + ├─ 构建 messages: [system_prompt, user_input] + ├─ 调用 OpenAI client (DeepSeek, model=deepseek-chat) + ├─ 超时: 60s, 温度: 0.7, max_tokens: 500 + ├─ 失败 → 指数退避重试 (2^attempt 秒) + │ + ▼ +save_to_history() → PromptHistory 表 + │ + ▼ +保存 Prompt 表 → UserStatistics 更新 + │ + ▼ +返回 generated_text (Markdown) +``` + +### 4.3 LLM 调用参数汇总 + +| 场景 | temperature | max_tokens | timeout | 重试 | +|------|------------|------------|---------|------| +| 通用提示词生成 | 0.7 | 500 | 60s | 3 次 | +| 意图识别 | 0.1 | - | - | - | +| 专家提示词生成 | 0.7 | 2000 | - | - | +| 提示词质量评价 | 0.35 | 4096 | 120s | - | +| 饭菜规划 | 0.7 | - | - | - | +| 古诗词解析 | 0.7 | - | - | - | + +### 4.4 微信小程序集成架构 + +``` +微信小程序端 + │ + ├── wx.login() → code + │ │ + │ ▼ + │ POST /api/wx/login { code } + │ │ + │ ├── 请求微信 jscode2session API + │ ├── 获取 openid + session_key + │ ├── 查找/创建 WxUser 记录 + │ └── 返回 token + uid + │ + ├── POST /api/wx/generate { uid, input_text, template_id? } + │ + ├── GET /api/wx/templates + ├── GET /api/wx/template/ + ├── GET /api/wx/prompts?uid=xxx + └── POST /api/wx/update_userinfo +``` + +--- + +## 5. 数据模型设计 + +### 5.1 核心模型 ER 关系 + +``` +User (uid PK) + ├── prompts ────────── Prompt (id PK, user_id FK, wx_user_id FK) + │ └── feedbacks ─── Feedback (id PK, user_id FK, prompt_id FK) + ├── feedbacks ──────── Feedback + ├── meal_plans ─────── MealPlan + ├── weekly_reports ─── WeeklyReport + ├── travel_plans ───── TravelPlan + ├── meeting_minutes ─── MeetingMinutes + └── resume_optimizations ── ResumeOptimization + +WxUser (id PK) + ├── prompts ────────── Prompt + ├── feedbacks ──────── Feedback + └── meal_plans ─────── MealPlan + +PromptTemplate (id PK) + └── (独立, 无外键关联) + +PromptHistory (id PK) + └── history_tags ──── HistoryTag (history_id FK) + +PromptQualityRecord (id PK) + └── (独立评价记录) +``` + +### 5.2 模型列表与用途 + +| 模型 | 表名 | 用途 | 来源文件 | +|------|------|------|----------| +| User | user | Web 用户 (登录名/密码/昵称/邮箱/手机) | models.py | +| WxUser | wx_user | 微信用户 (openid/session_key/unionid) | models.py | +| Prompt | prompt | 提示词生成记录 (输入/输出) | models.py | +| Feedback | feedback | 对 Prompt 的评分/评论 | models.py | +| PromptTemplate | prompt_template | 提示词模板 (分类/行业/系统提示词) | models.py | +| MealPlan | meal_plan | 饭菜规划参数与结果 | models.py | +| WeeklyReport | weekly_report | 智能周报/日报 | models.py | +| TravelPlan | travel_plan | 旅行攻略 | models.py | +| MeetingMinutes | meeting_minutes | 会议纪要 | models.py | +| ResumeOptimization | resume_optimization | 简历/求职信优化 | models.py | +| Favorite | favorite | 通用收藏 | favorites.py | +| PoetryFavorite | poetry_favorite | 古诗词收藏 | poetry_favorites.py | +| PromptHistory | prompt_history | 提示词历史 (含标签/评分/收藏) | history_models.py | +| HistoryTag | history_tags | 历史记录标签 | history_models.py | +| UserStatistics | user_statistics | 用户使用统计 | history_models.py | +| PromptQualityRecord | prompt_quality_record | 提示词质量评价记录 | prompt_quality_models.py | +| AdminUser | admin_user | 管理员 (用户名/密码/角色) | admin/models/ | + +### 5.3 密码安全 + +`User.login_pwd` + `User.login_salt` 使用混合哈希策略: + +- **新用户**: `login_salt = 'bcrypt'`, 使用 `bcrypt.hashpw()` 哈希密码 +- **旧用户**: `login_salt = MD5 随机值`, 使用 `MD5(password + salt)` (高危) + +`WxUser` 使用 `MD5(openid + timestamp)` 生成登录 token。 + +--- + +## 6. API 路由体系 + +### 6.1 路由组织架构 + +应用通过 `create_app()` 注册以下蓝图: + +| 蓝图名称 | URL 前缀 | 主要功能 | +|---------|---------|---------| +| main | `/` | 主页生成、模板 API、微信 API、特色功能 | +| auth | `/` | 注册/登录/登出/资料/密码 | +| favorites | `/` | 收藏 CRUD | +| history | `/` | 历史记录查询/更新/删除/统计 | +| meal_planning | `/meal-planning` | 饭菜规划页面+API | +| poetry | `/poetry` | 古诗词解析页面+API | +| weekly_report | `/` | 周报生成 | +| travel_planning | `/` | 旅行攻略 | +| meeting_minutes | `/` | 会议纪要 | +| resume_optimization | `/` | 简历优化 | +| prompt_quality | `/` | 提示词质量评价 | +| prompt_optimization | `/` | 通用提示词优化 | +| smart_prompt_optimization | `/` | 智能提示词优化 | +| expert_generate_2 | `/` | 专家模式 2 | +| expert_generate_3 | `/` | 专家模式 3 | +| android_tools | `/` | Android 工具区 | +| comparison | `/` | 对比评价 | +| evaluation | `/` | 历史评价 | +| placeholder | `/` | 占位应用 | + +### 6.2 关键 API 端点 + +#### 认证类 +``` +POST /api/register # 注册 (JSON body) +POST /api/login # 登录 (JSON body, session 维持) +POST /api/logout # 登出 +GET /api/check-login # 检查登录状态 +GET /api/profile # 获取个人资料 (需登录) +PUT /api/profile # 更新个人资料 (需登录) +POST /api/change-password # 修改密码 (需登录) +GET /api/profile/stats # 用户统计 (需登录) +``` + +#### 生成类 +``` +GET / # 主生成页面 (SSR, GET/POST) +GET /api/generate/meta # 获取筛选维度元数据 (Vue 用) +POST /api/prompt/generate # 生成提示词 (JSON API, Vue 用) +GET /api/templates/ # 按分类获取模板列表 +GET /api/template/ # 获取单个模板详情 +DELETE /api/templates/ # 删除模板 +``` + +#### 微信类 +``` +POST /api/wx/login # 微信登录 (code → openid+token) +POST /api/wx/generate # 微信端生成提示词 +GET /api/wx/templates # 微信端模板列表 +GET /api/wx/template/ # 微信端模板详情 +GET /api/wx/prompts # 微信端用户历史 +POST /api/wx/update_userinfo # 更新微信用户信息 +``` + +#### 收藏/历史类 +``` +GET/POST /api/favorites # 收藏列表/添加 +DELETE /api/favorites/ # 删除收藏 +POST /api/favorites/quick-add # 快速收藏 +GET /api/history # 历史记录列表 +DELETE /api/history/ # 删除历史记录 +PUT /api/history/ # 更新历史记录 +``` + +#### 垂直应用类 +``` +/meal-planning/* # 饭菜规划 +/poetry/* # 古诗词解析 +/api/weekly-report/* # 周报 +/api/travel-planning/* # 旅行 +/api/meeting-minutes/* # 会议纪要 +/api/resume-optimization/* # 简历 +``` + +### 6.3 响应格式混用 + +项目中存在两种 API 响应格式,未统一: + +**格式 A** (主路由, 传统 SSR): +```json +{ "success": true, "data": {...}, "message": "" } +``` + +**格式 B** (微信路由, app.py): +```json +{ "code": 200, "message": "success", "data": {...} } +``` + +--- + +## 7. 配置系统 + +### 7.1 配置架构 + +``` +┌────────────────────────────────────┐ +│ .env 文件 (dotenv) │ +│ SECRET_KEY, DATABASE_URL, │ +│ LLM_API_KEY, WX_APPID, etc. │ +└──────────────┬─────────────────────┘ + │ + ▼ +┌────────────────────────────────────┐ +│ config/__init__.py │ +│ get_config() → 按 FLASK_ENV │ +│ 返回对应配置类 │ +├────────────────────────────────────┤ +│ base.py 基础配置 (所有环境) │ +│ development 开发环境 (DEBUG=True) │ +│ production 生产环境 │ +│ testing 测试环境 │ +│ local 本地环境 │ +└────────────────────────────────────┘ +``` + +### 7.2 关键配置项 + +| 配置项 | 来源 | 生产默认值 | +|--------|------|-----------| +| SECRET_KEY | 环境变量 | 无默认 (必填) | +| DATABASE_URL | 环境变量 | 无默认 (必填) | +| TENCENT_DATABASE_URL | 环境变量 | 可选 | +| LLM_API_URL | 环境变量 | `https://api.deepseek.com/v1` | +| LLM_API_KEY | 环境变量 | 无默认 | +| WX_APPID / WX_SECRET | 环境变量 | 无默认 | +| CORS_ORIGINS | 环境变量 | `*` (开发) | +| SESSION_LIFETIME_HOURS | 环境变量 | 24 | +| CACHE_TYPE | 环境变量 | simple | + +### 7.3 遗留配置 + +`config.py` (根目录) 已被弃用,通过 `DeprecationWarning` 重定向到 `config/` 系统,但保留向后兼容。 + +--- + +## 8. 部署架构 + +### 8.1 Docker Compose 编排 + +``` + ┌──────────┐ + │ Nginx │ :80/:443 + └────┬─────┘ + │ + ┌────────────────┼────────────────┐ + ▼ ▼ ▼ + ┌─────────┐ ┌──────────┐ ┌──────────┐ + │ Flask │ │ MySQL │ │ Redis │ + │ :5000 │ │ :3306 │ │ :6379 │ + └─────────┘ └──────────┘ └──────────┘ +``` + +- **app**: Python 3.9-slim 镜像, Gunicorn + run_dev:app +- **db**: MySQL 8.0, 数据卷持久化, 初始化脚本 `docker/mysql/init.sql` +- **redis**: Redis 7-alpine, AOF 持久化 +- **nginx**: Nginx alpine, 反向代理 + SSL + +### 8.2 两种运行模式 + +| 模式 | 入口 | 服务器 | 端口 | +|------|------|--------|------| +| 开发 | `run_dev.py` | Flask dev server | 5002 | +| 生产 (Windows) | `run_production.py` | Waitress (4 threads) | 5000 | +| 生产 (Linux) | `Dockerfile` CMD | Gunicorn (gunicorn.conf.py) | 5000 | + +### 8.3 Windows 特殊说明 + +根目录有 `windows启动.bat` 和 `windows上唯一启动说明.md`,说明 Windows 环境下需要特殊处理: +- `pywin32>=306` 依赖 +- 使用 Waitress 替代 Gunicorn +- 使用 bash shell (Git Bash/WSL) 运行 shell 脚本 + +--- + +## 9. Vue 前端重构 + +### 9.1 当前进度 + +Vue 3 SPA 前端位于 `vue-app/`,与 Flask 后端并行开发,已完成: + +| 页面 | 路由 | 状态 | +|------|------|------| +| 首页 | `/` | 已完成 | +| 提示词生成 | `/generate` | 已完成 (14 种场景 Tab + 筛选 + 模板选择 + AI 生成) | +| 收藏管理 | `/favorites` | 已完成 | +| 登录/注册 | `/login`, `/register` | 已完成 (Session Cookie 认证) | +| 个人资料 | `/profile` | 已完成 (需登录) | +| 优化历史 | `/history` | 已完成 | +| 饭菜规划 | `/meal-planning` | 已完成 | +| 古诗词 | `/poetry` | 已完成 | +| 提示词优化 | `/optimization` | 已完成 | +| Android 工具 | `/android-tools` | 已完成 | +| 简历优化 | `/resume-optimization` | 已完成 | +| 提示词质量评价 | `/prompt-quality` | 已完成 | + +### 9.2 代理配置 + +Vite 开发服务器 (端口 3000) 通过 `vite.config.ts` 配置代理: +```typescript +proxy: { + '/api': { target: 'http://127.0.0.1:5002' }, + '/static': { target: 'http://127.0.0.1:5002' }, + '/poetry': { target: 'http://127.0.0.1:5002' } +} +``` + +Axios 配置 `withCredentials: true` 以携带 Session Cookie,实现同域下的认证状态共享。 + +### 9.3 构建产物 + +生产构建使用 `npm run build`,产物在 `dist/`,由 Nginx 托管静态文件,API 请求反代到 Flask。 + +### 9.4 API 模块覆盖 + +Vue 前端已有 14 个 API 模块与后端对接: + +- `auth.ts`, `prompt.ts`, `favorite.ts`, `history.ts` +- `meal.ts`, `poetry.ts`, `optimization.ts`, `resume.ts` +- `android.ts`, `wx.ts`, `profile.ts`, `promptQuality.ts` +- `comparison.ts`, `evaluation.ts` + +--- + +## 10. 安全问题诊断 + +### 10.1 高危问题 + +#### (1) API Key 硬编码 + +**位置**: 多个文件中硬编码 DeepSeek API Key + +| 文件 | 行 | 风险 | +|------|-----|------| +| `src/flask_prompt_master/routes/routes.py` | 22 | `api_key='sk-fdf7cc1c73504e628ec0119b7e11b8cc'` | +| `src/flask_prompt_master/routes/expert_generate_2.py` | 22 | 同上 | +| `src/flask_prompt_master/routes/expert_generate_3.py` | 22 | 同上 | +| `config.py` (旧) | 16 | 注释中仍有硬编码值 | + +**风险**: 如果代码泄露,API Key 会被曝光,可能导致额度耗尽或安全事件。 + +#### (2) 密码安全策略不足 + +- **旧用户密码**: MD5(password + salt) — MD5 已被证明不安全 +- **微信 Token**: `hashlib.md5(f'{openid}{int(time.time())}'.encode()).hexdigest()` — 可预测 +- **User.login_salt**: 明文存储 + +### 10.2 中危问题 + +#### (3) CORS 配置过于宽松 + +`config/development.py:51`: +```python +CORS_ORIGINS = ['http://localhost:3000', 'http://127.0.0.1:3000', '*'] +``` + +开发环境包含 `*`,生产环境 CORS_ORIGINS 默认值来自 `.env`,若未配置也可能放宽。 + +#### (4) WeChat API 日志泄露 + +`routes.py:643-647`: +```python +print("\n=== 微信登录配置 ===") +print(f"APPID: {WX_APPID}") +print(f"SECRET: {WX_SECRET}") # 在控制台打印密钥 +print("==================\n") +``` + +以及在 `log_manager.py`、`monitor_manager.py` 中多处 `print` 包含敏感信息。 + +### 10.3 低危问题 + +#### (5) 用户上下文默认回退 + +`user_context.py:23`: +```python +return 1 # 未登录时回退到 user_id=1 +``` + +未登录用户生成的内容会被关联到 user_id=1 (admin),可能污染数据统计。 + +--- + +## 11. 技术债务清单 + +### 11.1 代码重复 + +| 重复项 | 文件 | 说明 | +|--------|------|------| +| 专家提示词逻辑 | `expert_generate_2.py` + `expert_generate_3.py` + `smart_prompt_optimization.py` | 3 个独立实现,意图分析提示词和领域专家模板几乎完全一致 (80%+ 重复) | +| LLM 客户端创建 | `routes.py:22`, `expert_generate_2.py:21`, `expert_generate_3.py:22`, `prompt_quality_service.py:47` | 每个文件独立创建 `OpenAI(...)` 客户端,且硬编码 key | +| 意图分析提示词 | `expert_generate_2.py:27-45` vs `expert_generate_3.py:27-45` | 逐字重复,仅变量名不同 | +| Axios 实例 | `api/index.ts` vs `api/client.ts` | 两个不同的 Axios 实例配置,功能重叠 | +| 提示词模板数据 | `promptsTemplates.py` (4214 行) | 模板数据硬编码在 Python 文件中,应使用数据库 seed 或 JSON 配置 | + +### 11.2 架构问题 + +| 问题 | 影响 | +|------|------| +| `routes.py` 1467 行单文件 | 难以维护,路由职责混杂 (SSR 页面 + API + 微信 + 模板管理) | +| 两个 Flask app 实例 (`__init__.py` + `app.py`) | 新手困惑,app.py 是遗留 Mock 服务 | +| 旧版 `flask_prompt_master/routes.py` (1176 行) 与新版并存 | 不确定是否仍在使用 | +| 服务层覆盖不全 | 只有 4 个 service 文件,大部分业务逻辑在 route 文件中 | +| 错误处理依赖 `print` 和 `flash` | 缺乏统一错误处理中间件 | +| 无自动化测试 | 根目录 30+ 手动测试脚本,无 pytest/unittest | + +### 11.3 前端问题 + +| 问题 | 说明 | +|------|------| +| 双前端并行 | SSR (Jinja2) + Vue 3 SPA 同时存在,维护成本高 | +| 表单使用 SSR | 主生成页面仍走 `POST /` 表单提交 (非 SPA) | +| Element Plus 版本 | 2.13.6 (2025 年版本),非最新 | + +### 11.4 安全问题 (汇总) + +| 等级 | 数量 | 详情 | +|------|------|------| +| 高危 | 2 | API Key 硬编码、MD5 密码 | +| 中危 | 2 | CORS `*`、密钥日志泄露 | +| 低危 | 1 | user_context 默认回退 | + +--- + +## 12. 改进建议 + +### 12.1 安全修复 (优先) + +1. **移除所有硬编码 API Key**: 从环境变量读取,删除 `routes.py:22`、`expert_generate_2.py:22`、`expert_generate_3.py:22` 中的硬编码值 +2. **迁移旧用户密码到 bcrypt**: 在登录时检测 `login_salt == 'bcrypt'`,若非 bcrypt 则透明升级 +3. **微信 Token 改用 secrets.token_urlsafe()**: 替换 MD5 方式 +4. **移除敏感日志**: 删除 WX_SECRET、API Key 等敏感信息的 print 日志 + +### 12.2 代码重构 (中期) + +1. **合并专家模式**: 将 3 个 expert_generate 实现合并为一个,通过参数配置差异 +2. **拆分 routes.py**: 将 SSR 页面路由与 API 路由分离 +3. **统一响应格式**: 全局定义 `{success, data, message}` 或 `{code, message, data}`,二选一 +4. **删除遗留代码**: 确认并移除 `flask_prompt_master/routes.py` 和 `src/flask_prompt_master/app.py` + +### 12.3 架构改进 (长期) + +1. **完成 Vue 迁移**: 移除 Jinja2 SSR 模板,全面切换到 Vue 3 SPA +2. **服务层完善**: 将 routes 中的业务逻辑抽取到 services (如 LLM 调用、模板管理) +3. **统一 LLM 客户端**: 创建 `LLMService` 单例或工厂,所有模块共享 +4. **引入自动化测试**: 至少覆盖核心 API 路由和认证流程 +5. **API 版本管理**: 统一 API 路径为 `/api/v1/...` + +### 12.4 立即可执行项 + +| 优先级 | 操作 | 预估工作量 | +|--------|------|-----------| +| P0 | 移除 API Key 硬编码 | 1 小时 | +| P0 | 删除敏感 print 日志 | 30 分钟 | +| P1 | 配置生产环境 CORS_ORIGINS | 15 分钟 | +| P1 | 统一 LLM 客户端创建方式 | 2 小时 | +| P2 | 清理遗留 app.py | 30 分钟 | +| P2 | 合并 .env 文件 (.env, .env.test, .env.backup, env.example 等 6 个) | 30 分钟 | + +--- + +## 附录 + +### A. 文件规模统计 + +| 文件 | 行数 | 类型 | +|------|------|------| +| promptsTemplates.py | 4214 | 模板数据 | +| routes.py (新) | 1467 | 主路由 | +| routes.py (旧) | 1176 | 旧路由 | +| expert_generate_3.py | ~300 | 专家模式 | +| expert_generate_2.py | ~280 | 专家模式 | +| history_routes.py | 484 | 历史路由 | +| auth_service.py | 293 | 认证服务 | + +### B. 依赖清单 (requirements.txt) + +``` +flask>=2.2.0, flask-cors>=3.0.10, python-dotenv>=1.0.0 +openai>=1.3.0, flask-sqlalchemy>=3.0.2, flask-migrate>=4.0.4 +pymysql>=1.1.0, waitress>=3.0.0, redis>=5.0.1 +pywin32>=306, requests>=2.28.0, psutil>=5.9.0, bcrypt>=4.0.0 +``` + +### C. Git 分支与提交 + +- 当前分支: `main` +- 最新提交: `5dad35d feat(prompt-quality): 质量评价与对比模块 API、脚本与 Vue 页面` +- 总提交数: ~30 次 +- 活跃期: 2026-02 至 2026-04 + +### D. 关联文档 + +- `AI项目功能需求文档.md` — 完整功能需求规格 +- `API_INTERFACE_DOCUMENTATION.md` — API 接口文档 +- `项目现状评估.md` — 第三方项目评估报告 +- `vue重构方案.md` — Vue 渐进式迁移方案 +- `Python项目结构分析与优化报告.md` — 结构分析报告 +- `windows上唯一启动说明.md` — Windows 启动指南 + +--- + +*文档结束 — 基于 2026-05-02 代码库静态分析* diff --git a/.env.example b/.env.example index 4752a56..b31413d 100644 --- a/.env.example +++ b/.env.example @@ -16,6 +16,9 @@ FLASK_ENV=development # 调试模式(开发环境开启,生产环境关闭) DEBUG=True +# HTTP 端口(可选;仅 Waitress 生产 run_production.py 读取;开发 run_dev.py 固定 5002) +# PORT=5000 + # ======================================== # 数据库配置 # ======================================== diff --git a/README.md b/README.md index b03814c..28d0bf7 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ #### 使用说明 -1. xxxx +1. Windows:见 [windows上唯一启动说明.md](windows上唯一启动说明.md),根目录双击 `windows启动.bat`。 2. xxxx 3. xxxx diff --git a/docs/README.md b/docs/README.md index 305bf1f..6170092 100644 --- a/docs/README.md +++ b/docs/README.md @@ -80,7 +80,7 @@ python init_db.py python run_dev.py ``` -访问 http://localhost:5000 开始使用 +访问 http://localhost:5002 开始使用。仅 Windows 本机启停见仓库根目录 `windows上唯一启动说明.md` 与 `windows启动.bat`。 ## 项目结构 diff --git a/docs/development/Windows服务配置总结.md b/docs/development/Windows服务配置总结.md deleted file mode 100644 index 80e48ab..0000000 --- a/docs/development/Windows服务配置总结.md +++ /dev/null @@ -1,259 +0,0 @@ -# Windows 服务配置总结 - -## ✅ 配置完成状态 - -Flask 提示词大师应用已成功配置为 Windows 服务,支持开机自启动和后台运行。 - -## 📦 已创建的文件 - -### 核心服务文件 - -1. **`simple_windows_service.py`** ✅ - - 简化版 Windows 服务脚本 - - 使用 Windows 任务计划程序实现开机自启动 - - 支持服务启动、安装、删除功能 - -2. **`install_startup.bat`** ✅ - - 开机启动安装脚本 - - 需要管理员权限运行 - - 自动配置环境变量 - -3. **`simple_service_manager.bat`** ✅ - - 服务管理脚本 - - 提供图形化菜单操作 - - 支持启动、安装、删除、状态查询 - -### 配置文件 - -4. **`requirements.txt`** ✅ - - 更新了依赖包列表 - - 添加了 `pywin32` 和 `requests` 依赖 - -5. **`docs/development/Windows服务配置指南.md`** ✅ - - 详细的服务配置指南 - - 包含安装、管理、故障排除说明 - -## 🚀 服务特点 - -### ✅ 已实现功能 - -1. **开机自启动** ✅ - - 使用 Windows 任务计划程序 - - 系统启动时自动运行 - - 无需用户登录 - -2. **后台运行** ✅ - - 服务在后台持续运行 - - 支持多线程处理 - - 自动错误恢复 - -3. **日志记录** ✅ - - 详细的服务运行日志 - - 日志文件位置:`logs/simple_service.log` - - 支持日志轮转 - -4. **环境配置** ✅ - - 自动设置生产环境变量 - - 配置 Python 路径 - - 支持虚拟环境 - -5. **健康检查** ✅ - - 服务状态监控 - - 自动健康检查 - - 错误报告机制 - -## 📋 使用方法 - -### 安装开机启动 - -1. **以管理员身份运行**: - ```bash - # 右键点击 install_startup.bat - # 选择"以管理员身份运行" - ``` - -2. **或使用命令行**: - ```bash - python simple_windows_service.py install - ``` - -### 启动服务 - -1. **使用管理脚本**: - ```bash - simple_service_manager.bat - # 选择选项 1 启动服务 - ``` - -2. **或使用命令行**: - ```bash - python simple_windows_service.py start - ``` - -### 管理服务 - -```bash -# 查看任务状态 -schtasks /query /tn "FlaskPromptMasterStartup" - -# 删除开机启动任务 -python simple_windows_service.py remove - -# 启动服务 -python simple_windows_service.py start -``` - -## 🔧 技术实现 - -### 服务架构 - -1. **任务计划程序** - - 使用 `schtasks` 命令创建系统任务 - - 触发条件:系统启动时 - - 运行账户:SYSTEM - -2. **Flask 应用** - - 生产环境配置 - - 多线程支持 - - 健康检查接口 - -3. **日志系统** - - 文件日志和控制台日志 - - 自动创建日志目录 - - 支持中文编码 - -### 环境配置 - -```bash -# 环境变量 -FLASK_ENV=production -PYTHONPATH=项目根目录 - -# 虚拟环境 -.venv\Scripts\Activate.bat - -# 依赖包 -pip install -r requirements.txt -``` - -## 📊 服务状态 - -### 当前运行状态 - -- **服务状态**:✅ 运行中 -- **访问地址**:`http://localhost:5000` -- **健康检查**:✅ 正常 -- **环境**:production -- **端口**:5000 - -### 任务计划状态 - -- **任务名称**:`FlaskPromptMasterStartup` -- **触发条件**:系统启动时 -- **运行账户**:SYSTEM -- **状态**:待安装(需要管理员权限) - -## 🎯 下一步建议 - -### 立即可执行 - -1. **安装开机启动**: - - 以管理员身份运行 `install_startup.bat` - - 验证任务计划创建成功 - -2. **测试服务功能**: - - 访问 `http://localhost:5000` - - 测试所有功能模块 - - 检查日志文件 - -3. **配置防火墙**: - - 允许端口 5000 的入站连接 - - 配置网络安全规则 - -### 可选优化 - -1. **性能监控**: - - 配置服务监控工具 - - 设置性能告警 - -2. **日志管理**: - - 配置日志轮转 - - 设置日志清理策略 - -3. **备份策略**: - - 备份配置文件 - - 设置自动备份 - -## 🔒 安全考虑 - -1. **权限管理** - - 服务以 SYSTEM 账户运行 - - 最小权限原则 - -2. **网络安全** - - 配置防火墙规则 - - 限制访问来源 - -3. **日志安全** - - 避免记录敏感信息 - - 定期清理日志 - -## 📞 技术支持 - -### 常见问题 - -1. **权限不足** - - 确保以管理员身份运行安装脚本 - - 检查用户账户权限 - -2. **端口冲突** - - 检查端口 5000 是否被占用 - - 修改服务脚本中的端口号 - -3. **服务启动失败** - - 查看日志文件获取错误信息 - - 检查环境变量配置 - -### 调试方法 - -1. **查看服务日志**: - ```bash - type logs\simple_service.log - ``` - -2. **检查任务状态**: - ```bash - schtasks /query /tn "FlaskPromptMasterStartup" - ``` - -3. **手动测试服务**: - ```bash - python simple_windows_service.py start - ``` - -## 📈 性能指标 - -### 当前性能 - -- **启动时间**:< 5 秒 -- **内存使用**:约 50MB -- **响应时间**:< 100ms -- **并发支持**:多线程 - -### 优化建议 - -1. **内存优化** - - 监控内存使用情况 - - 配置内存限制 - -2. **连接优化** - - 配置数据库连接池 - - 优化网络连接 - -3. **缓存策略** - - 启用 Redis 缓存 - - 配置静态文件缓存 - ---- - -**总结**:Windows 服务配置已完成,应用现在可以作为系统服务运行,支持开机自启动和后台运行。所有核心功能都已实现并测试通过。🎉 diff --git a/docs/development/Windows服务配置指南.md b/docs/development/Windows服务配置指南.md deleted file mode 100644 index a9ba678..0000000 --- a/docs/development/Windows服务配置指南.md +++ /dev/null @@ -1,248 +0,0 @@ -# Windows 服务配置指南 - -## 📋 概述 - -本指南介绍如何将 Flask 提示词大师应用配置为 Windows 系统服务,实现开机自启动和后台运行。 - -## 🎯 服务特点 - -- **开机自启动**:系统启动时自动运行 -- **后台运行**:无需用户登录即可运行 -- **自动重启**:服务异常时自动重启 -- **日志记录**:详细的服务运行日志 -- **权限管理**:支持系统级权限运行 - -## 📦 文件说明 - -### 核心文件 - -1. **`flask_prompt_master_service.py`** - - Windows 服务主程序 - - 继承 `win32serviceutil.ServiceFramework` - - 实现服务的启动、停止、重启功能 - -2. **`install_service.bat`** - - 服务安装脚本 - - 需要管理员权限运行 - - 自动配置环境变量 - -3. **`service_manager.bat`** - - 服务管理脚本 - - 提供图形化菜单操作 - - 支持启动、停止、重启、状态查询 - -## 🚀 安装步骤 - -### 步骤一:准备环境 - -1. **确保虚拟环境已激活** - ```bash - .venv\Scripts\Activate.bat - ``` - -2. **安装依赖** - ```bash - pip install -r requirements.txt - ``` - -3. **检查管理员权限** - - 右键点击 `install_service.bat` - - 选择"以管理员身份运行" - -### 步骤二:安装服务 - -1. **运行安装脚本** - ```bash - install_service.bat - ``` - -2. **验证安装** - - 打开"服务"管理器(services.msc) - - 查找"Flask 提示词大师服务" - - 确认服务已安装 - -### 步骤三:启动服务 - -1. **使用管理脚本** - ```bash - service_manager.bat - ``` - 选择选项 1 启动服务 - -2. **或使用命令行** - ```bash - python flask_prompt_master_service.py start - ``` - -## 🛠️ 服务管理 - -### 使用图形化菜单 - -运行 `service_manager.bat`,选择相应操作: - -- **1. 启动服务**:启动 Flask 应用服务 -- **2. 停止服务**:停止运行中的服务 -- **3. 重启服务**:重启服务(停止后启动) -- **4. 查看状态**:查询服务运行状态 -- **5. 删除服务**:从系统中删除服务 -- **6. 退出**:退出管理菜单 - -### 使用命令行 - -```bash -# 启动服务 -python flask_prompt_master_service.py start - -# 停止服务 -python flask_prompt_master_service.py stop - -# 重启服务 -python flask_prompt_master_service.py restart - -# 查看状态 -python flask_prompt_master_service.py status - -# 删除服务 -python flask_prompt_master_service.py remove -``` - -## 📊 服务配置 - -### 服务信息 - -- **服务名称**:`FlaskPromptMaster` -- **显示名称**:`Flask 提示词大师服务` -- **描述**:`Flask 提示词大师 Web 应用服务,提供提示词生成功能` -- **启动类型**:自动(开机启动) -- **登录身份**:本地系统账户 - -### 端口配置 - -- **监听地址**:`0.0.0.0`(所有网络接口) -- **端口号**:`5000` -- **访问地址**:`http://localhost:5000` - -## 📝 日志管理 - -### 日志位置 - -- **服务日志**:`logs/service.log` -- **应用日志**:`logs/` 目录下的其他日志文件 - -### 日志内容 - -- 服务启动/停止事件 -- 应用运行状态 -- 错误和异常信息 -- 健康检查结果 - -## 🔧 故障排除 - -### 常见问题 - -1. **服务启动失败** - - 检查端口 5000 是否被占用 - - 确认环境变量配置正确 - - 查看服务日志获取详细错误信息 - -2. **权限不足** - - 确保以管理员身份运行安装脚本 - - 检查服务账户权限设置 - -3. **依赖缺失** - - 确认所有 Python 包已安装 - - 检查虚拟环境是否正确激活 - -4. **端口冲突** - - 修改 `flask_prompt_master_service.py` 中的端口号 - - 或停止占用端口的其他服务 - -### 调试方法 - -1. **查看服务日志** - ```bash - type logs\service.log - ``` - -2. **手动测试服务** - ```bash - python flask_prompt_master_service.py debug - ``` - -3. **检查服务状态** - ```bash - sc query FlaskPromptMaster - ``` - -## 🔒 安全考虑 - -1. **权限最小化** - - 服务以本地系统账户运行 - - 避免使用管理员权限 - -2. **网络安全** - - 配置防火墙规则 - - 限制访问来源 - -3. **日志安全** - - 定期清理日志文件 - - 避免记录敏感信息 - -## 📈 性能优化 - -1. **内存管理** - - 监控服务内存使用 - - 配置适当的内存限制 - -2. **连接池** - - 配置数据库连接池 - - 优化网络连接 - -3. **缓存策略** - - 启用 Redis 缓存 - - 配置静态文件缓存 - -## 🔄 更新维护 - -### 服务更新 - -1. **停止服务** - ```bash - python flask_prompt_master_service.py stop - ``` - -2. **更新代码** - - 替换相关文件 - - 更新依赖包 - -3. **重启服务** - ```bash - python flask_prompt_master_service.py start - ``` - -### 定期维护 - -1. **日志清理** - - 定期清理旧日志文件 - - 监控日志文件大小 - -2. **性能监控** - - 监控服务响应时间 - - 检查资源使用情况 - -3. **备份配置** - - 备份服务配置文件 - - 保存环境变量设置 - -## 📞 技术支持 - -如遇到问题,请: - -1. 查看服务日志文件 -2. 检查系统事件日志 -3. 确认环境配置正确 -4. 联系技术支持团队 - ---- - -**注意**:本服务配置仅适用于 Windows 系统,其他操作系统请参考相应的服务配置方法。 diff --git a/docs/development/Windows生产环境部署指南.md b/docs/development/Windows生产环境部署指南.md deleted file mode 100644 index 37ab8ff..0000000 --- a/docs/development/Windows生产环境部署指南.md +++ /dev/null @@ -1,205 +0,0 @@ -# Windows 生产环境部署指南 - -## 📋 概述 - -本指南介绍如何在 Windows 环境下部署 Flask 提示词大师应用的生产环境。 - -## 🎯 部署方案 - -### 方案一:Waitress 服务器(推荐) - -Waitress 是一个纯 Python 的 WSGI 服务器,完全兼容 Windows 环境。 - -#### 1. 安装依赖 - -```bash -pip install -r requirements.txt -``` - -#### 2. 启动生产环境 - -**方法一:使用 Python 脚本** -```bash -python run_production.py -``` - -**方法二:使用批处理文件** -```bash -start_production.bat -``` - -#### 3. 停止服务器 - -**方法一:Ctrl+C** -在运行窗口按 `Ctrl+C` 停止服务器 - -**方法二:使用批处理文件** -```bash -stop_production.bat -``` - -## ⚙️ 配置说明 - -### 环境变量配置 - -生产环境需要设置以下环境变量: - -```bash -# 设置生产环境 -set FLASK_ENV=production - -# 数据库配置 -set DATABASE_URL=mysql+pymysql://root:123456@localhost:3306/pro_db?charset=utf8mb4 - -# API 配置 -set LLM_API_URL=https://api.deepseek.com/v1 -set LLM_API_KEY=your-actual-api-key - -# 微信小程序配置 -set WX_APPID=your-wx-appid -set WX_SECRET=your-wx-secret - -# 安全配置 -set SECRET_KEY=your-secret-key -``` - -### 服务器配置 - -Waitress 服务器配置(在 `run_production.py` 中): - -```python -serve( - app, - host='0.0.0.0', # 监听所有网络接口 - port=5000, # 端口号 - threads=4, # 线程数 - connection_limit=1000, # 连接限制 - cleanup_interval=30, # 清理间隔 - channel_timeout=120, # 通道超时 - max_request_body_size=1073741824, # 最大请求体大小(1GB) -) -``` - -## 📊 性能优化 - -### 1. 数据库优化 - -- 使用连接池 -- 配置适当的索引 -- 定期清理日志表 - -### 2. 缓存策略 - -- 启用 Redis 缓存 -- 配置模板缓存 -- 实现 API 响应缓存 - -### 3. 日志管理 - -- 配置日志轮转 -- 设置日志级别 -- 监控错误日志 - -## 🔒 安全配置 - -### 1. 网络安全 - -- 配置防火墙规则 -- 使用 HTTPS -- 限制访问 IP - -### 2. 应用安全 - -- 启用 CSRF 保护 -- 配置 CORS 策略 -- 输入验证和过滤 - -### 3. 数据安全 - -- 数据库访问控制 -- 敏感信息加密 -- 定期备份 - -## 📈 监控和维护 - -### 1. 健康检查 - -访问健康检查接口: -``` -GET http://localhost:5000/health -``` - -### 2. 日志监控 - -- 应用日志:`logs/app.log` -- 访问日志:`logs/access.log` -- 错误日志:`logs/error.log` - -### 3. 性能监控 - -- CPU 使用率 -- 内存使用情况 -- 响应时间 -- 并发连接数 - -## 🚀 部署脚本 - -### 启动脚本 - -`start_production.bat` - 生产环境启动脚本 - -### 停止脚本 - -`stop_production.bat` - 生产环境停止脚本 - -### 部署脚本 - -`deploy.sh` - 自动化部署脚本(Linux 环境) - -## 🔧 故障排除 - -### 常见问题 - -1. **端口被占用** - ```bash - netstat -ano | findstr :5000 - taskkill /PID <进程ID> /F - ``` - -2. **数据库连接失败** - - 检查数据库服务状态 - - 验证连接字符串 - - 确认网络连接 - -3. **API 调用失败** - - 检查 API 密钥配置 - - 验证网络连接 - - 查看错误日志 - -### 日志分析 - -```bash -# 查看应用日志 -type logs\app.log - -# 查看错误日志 -type logs\error.log - -# 实时监控日志 -Get-Content logs\app.log -Wait -``` - -## 📞 技术支持 - -如遇到问题,请: - -1. 查看日志文件 -2. 检查配置参数 -3. 验证环境变量 -4. 联系技术支持 - ---- - -**版本**: 1.0 -**更新日期**: 2025-08-17 -**维护者**: 开发团队 diff --git a/docs/development/监控和日志系统使用指南.md b/docs/development/监控和日志系统使用指南.md index 706aaa5..fd96506 100644 --- a/docs/development/监控和日志系统使用指南.md +++ b/docs/development/监控和日志系统使用指南.md @@ -4,21 +4,15 @@ ### 1. 启动监控系统 -#### 方法一:使用批处理脚本(推荐) -```bash -# 双击运行或在命令行执行 -start_monitor.bat -``` +在项目根目录激活虚拟环境后执行: -#### 方法二:直接使用Python ```bash -# 激活虚拟环境 .venv\Scripts\Activate.ps1 - -# 启动监控管理器 python monitor_manager.py ``` +(应用本机启停见仓库根目录 `windows上唯一启动说明.md` 与 `windows启动.bat`。) + ### 2. 基本操作 启动后,您将看到交互式界面,可以输入以下命令: @@ -199,7 +193,7 @@ schtasks /delete /tn "FlaskMonitor" /f ### 2. 服务集成 #### 与Windows服务集成 -可以将监控脚本集成到现有的Windows服务中: +应用安装为系统服务见仓库根目录 `windows上唯一启动说明.md`(`flask_prompt_master_service.py` / `simple_windows_service.py`)。监控可与之配合: 1. 修改 `simple_windows_service.py` 2. 在服务启动时自动启动监控 diff --git a/docs/product/项目部署咨询 b/docs/product/项目部署咨询 index 9c6207a..16cc602 100644 --- a/docs/product/项目部署咨询 +++ b/docs/product/项目部署咨询 @@ -5,8 +5,8 @@ Ran tool Read file: gunicorn.conf.py Read file: uwsgi.ini -Read file: run_production_simple.py -Read file: run_production_public.py +Read file: run_production.py +Read file: run_dev.py Read file: docker-compose.prod.yml 基于对您项目启动配置的分析,我来回答关于高并发访问支持的问题: @@ -14,28 +14,30 @@ Read file: docker-compose.prod.yml ### 🔴 **不支持高并发** 的启动方式: -1. **Flask内置服务器启动** (`run_production_simple.py`, `run_production_public.py`) - - 使用 `app.run()` 启动 - - 虽然启用了 `threaded=True`,但仍然是单进程 - - **并发能力限制**:通常只能处理几十到几百个并发连接 - - **适用场景**:开发测试、小规模部署 +1. **开发内置服务器** (`run_dev.py`) + - 使用 Flask 开发服务器,调试与重载 + - **适用场景**:本地开发 + +2. **Windows 生产 Waitress** (`run_production.py`) + - WSGI 多线程,适合 Windows 单机生产 + - 说明见仓库根目录 `windows上唯一启动说明.md` ### 🟡 **部分支持高并发** 的启动方式: -2. **uWSGI启动** (`uwsgi.ini`) +3. **uWSGI启动** (`uwsgi.ini`) - 配置了4个进程,每个进程2个线程 - **并发能力**:理论上可处理 4×2×1000 = 8000 个并发连接 - **限制**:进程数固定,无法动态扩展 -### �� **支持高并发** 的启动方式: +### 🟢 **支持高并发** 的启动方式: -3. **Gunicorn启动** (`gunicorn.conf.py`) +4. **Gunicorn启动** (`gunicorn.conf.py`) - 工作进程数:`multiprocessing.cpu_count() * 2 + 1` - 每个工作进程连接数:1000 - **并发能力**:在8核服务器上可处理约 17×1000 = 17000 个并发连接 - **优势**:进程数根据CPU核心数自动调整 -4. **Docker容器化部署** (`docker-compose.prod.yml`) +5. **Docker容器化部署** (`docker-compose.prod.yml`) - 包含Nginx反向代理 - 支持水平扩展(可启动多个app容器) - **并发能力**:理论上无上限,取决于服务器资源 diff --git a/install_service.bat b/install_service.bat deleted file mode 100644 index 329063f..0000000 --- a/install_service.bat +++ /dev/null @@ -1,52 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🚀 Flask 提示词大师 - Windows 服务安装脚本 -echo ============================================================ -echo. - -REM 检查管理员权限 -net session >nul 2>&1 -if %errorLevel% == 0 ( - echo ✅ 管理员权限检查通过 -) else ( - echo ❌ 需要管理员权限才能安装服务 - echo 💡 请右键点击此脚本,选择"以管理员身份运行" - pause - exit /b 1 -) - -REM 激活虚拟环境 -call .venv\Scripts\Activate.bat - -REM 设置环境变量 -set FLASK_ENV=production -set PYTHONPATH=%cd% - -echo 📊 环境变量设置完成 -echo 🌐 正在安装 Windows 服务... - -REM 安装服务 -python flask_prompt_master_service.py install - -if %errorLevel% == 0 ( - echo ✅ 服务安装成功! - echo. - echo 📋 服务信息: - echo 服务名称: FlaskPromptMaster - echo 显示名称: Flask 提示词大师服务 - echo 描述: Flask 提示词大师 Web 应用服务 - echo. - echo 🎯 下一步操作: - echo 1. 启动服务: python flask_prompt_master_service.py start - echo 2. 停止服务: python flask_prompt_master_service.py stop - echo 3. 重启服务: python flask_prompt_master_service.py restart - echo 4. 删除服务: python flask_prompt_master_service.py remove - echo. - echo 💡 服务安装后会自动开机启动 -) else ( - echo ❌ 服务安装失败! - echo 💡 请检查错误信息并重试 -) - -pause diff --git a/install_startup.bat b/install_startup.bat deleted file mode 100644 index aebf7d5..0000000 --- a/install_startup.bat +++ /dev/null @@ -1,51 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🚀 Flask 提示词大师 - 开机启动安装脚本 -echo ============================================================ -echo. - -REM 检查管理员权限 -net session >nul 2>&1 -if %errorLevel% == 0 ( - echo ✅ 管理员权限检查通过 -) else ( - echo ❌ 需要管理员权限才能安装开机启动任务 - echo 💡 请右键点击此脚本,选择"以管理员身份运行" - pause - exit /b 1 -) - -REM 激活虚拟环境 -call .venv\Scripts\Activate.bat - -REM 设置环境变量 -set FLASK_ENV=production -set PYTHONPATH=%cd% - -echo 📊 环境变量设置完成 -echo 🌐 正在安装开机启动任务... - -REM 安装开机启动任务 -python simple_windows_service.py install - -if %errorLevel% == 0 ( - echo ✅ 开机启动任务安装成功! - echo. - echo 📋 任务信息: - echo 任务名称: FlaskPromptMasterStartup - echo 触发条件: 系统启动时 - echo 运行账户: SYSTEM - echo. - echo 🎯 下一步操作: - echo 1. 启动服务: python simple_windows_service.py start - echo 2. 删除任务: python simple_windows_service.py remove - echo 3. 查看状态: schtasks /query /tn "FlaskPromptMasterStartup" - echo. - echo 💡 系统重启后会自动启动服务 -) else ( - echo ❌ 开机启动任务安装失败! - echo 💡 请检查错误信息并重试 -) - -pause diff --git a/run_production.py b/run_production.py new file mode 100644 index 0000000..6a8b7a0 --- /dev/null +++ b/run_production.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +"""生产环境启动:Waitress WSGI(Windows 友好)。说明见仓库根目录 windows上唯一启动说明.md。""" +import os +import sys + +from waitress import serve + +from src.flask_prompt_master import create_app + + +def main() -> None: + os.environ.setdefault("FLASK_ENV", "production") + app = create_app() + port = int(os.environ.get("PORT", "5000")) + print("=" * 60) + print("Flask 提示词大师 - 生产环境 (Waitress)") + print("=" * 60) + print(f"监听: 0.0.0.0:{port} 按 Ctrl+C 停止") + print("=" * 60) + serve( + app, + host="0.0.0.0", + port=port, + threads=4, + connection_limit=1000, + cleanup_interval=30, + channel_timeout=120, + max_request_body_size=1073741824, + ) + + +if __name__ == "__main__": + try: + main() + except KeyboardInterrupt: + sys.exit(0) diff --git a/run_production_public.py b/run_production_public.py deleted file mode 100644 index 0afa03f..0000000 --- a/run_production_public.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python3 -""" -生产环境启动脚本 - 支持外网访问 -使用 Flask 内置服务器,配置为生产模式 -""" - -import os -import sys -from src.flask_prompt_master import create_app - -def main(): - """主函数""" - # 设置生产环境变量 - os.environ['FLASK_ENV'] = 'production' - - # 创建应用实例 - app = create_app() - - # 获取端口号(支持环境变量配置) - port = int(os.environ.get('PORT', 5002)) - - print("=" * 60) - print("🚀 Flask 提示词大师 - 生产环境启动(外网访问)") - print("=" * 60) - print(f"📊 环境: {os.environ.get('FLASK_ENV', 'unknown')}") - print(f"🌐 服务器: Flask 内置服务器") - print(f"🔗 内网地址: http://10.0.4.13:5002") - print(f"🌍 外网地址: http://101.43.95.130:5002") - print(f"📝 日志: 控制台输出") - print("=" * 60) - print("✅ 服务器启动中...") - print("💡 按 Ctrl+C 停止服务器") - print("=" * 60) - - try: - # 启动 Flask 内置服务器(生产模式配置) - app.run( - host='0.0.0.0', # 监听所有网络接口 - port=port, - debug=False, # 生产环境关闭调试 - threaded=True, # 启用多线程 - use_reloader=False # 关闭自动重载 - ) - except KeyboardInterrupt: - print("\n" + "=" * 60) - print("🛑 服务器已停止") - print("=" * 60) - except Exception as e: - print(f"\n❌ 启动失败: {str(e)}") - sys.exit(1) - -if __name__ == '__main__': - main() diff --git a/run_production_simple.py b/run_production_simple.py deleted file mode 100644 index 23462ad..0000000 --- a/run_production_simple.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 -""" -简单的生产环境启动脚本 -使用 Flask 内置服务器,但配置为生产模式 -适合 Windows 环境快速部署 -""" - -import os -import sys -from src.flask_prompt_master import create_app - -def main(): - """主函数""" - # 设置生产环境变量 - os.environ['FLASK_ENV'] = 'production' - - # 创建应用实例 - app = create_app() - - print("=" * 60) - print("🚀 Flask 提示词大师 - 生产环境启动") - print("=" * 60) - print(f"📊 环境: {os.environ.get('FLASK_ENV', 'unknown')}") - print(f"🌐 服务器: Flask 内置服务器") - print(f"🔗 地址: http://0.0.0.0:5002") - print(f"📝 日志: 控制台输出") - print("=" * 60) - print("✅ 服务器启动中...") - print("💡 按 Ctrl+C 停止服务器") - print("=" * 60) - - try: - # 启动 Flask 内置服务器(生产模式配置) - app.run( - host='0.0.0.0', - port=5002, # 修改端口为5002 - debug=False, # 生产环境关闭调试 - threaded=True, # 启用多线程 - use_reloader=False # 关闭自动重载 - ) - except KeyboardInterrupt: - print("\n" + "=" * 60) - print("🛑 服务器已停止") - print("=" * 60) - except Exception as e: - print(f"\n❌ 启动失败: {str(e)}") - sys.exit(1) - -if __name__ == '__main__': - main() diff --git a/service_manager.bat b/service_manager.bat deleted file mode 100644 index 46ec199..0000000 --- a/service_manager.bat +++ /dev/null @@ -1,108 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🚀 Flask 提示词大师 - Windows 服务管理脚本 -echo ============================================================ -echo. - -REM 激活虚拟环境 -call .venv\Scripts\Activate.bat - -REM 设置环境变量 -set FLASK_ENV=production -set PYTHONPATH=%cd% - -echo 📊 环境变量设置完成 -echo. - -:menu -echo 请选择操作: -echo 1. 启动服务 -echo 2. 停止服务 -echo 3. 重启服务 -echo 4. 查看服务状态 -echo 5. 删除服务 -echo 6. 退出 -echo. -set /p choice=请输入选项 (1-6): - -if "%choice%"=="1" goto start_service -if "%choice%"=="2" goto stop_service -if "%choice%"=="3" goto restart_service -if "%choice%"=="4" goto status_service -if "%choice%"=="5" goto remove_service -if "%choice%"=="6" goto exit -echo ❌ 无效选项,请重新选择 -goto menu - -:start_service -echo. -echo 🚀 正在启动服务... -python flask_prompt_master_service.py start -if %errorLevel% == 0 ( - echo ✅ 服务启动成功! - echo 💡 访问地址: http://localhost:5000 -) else ( - echo ❌ 服务启动失败! -) -echo. -pause -goto menu - -:stop_service -echo. -echo 🛑 正在停止服务... -python flask_prompt_master_service.py stop -if %errorLevel% == 0 ( - echo ✅ 服务停止成功! -) else ( - echo ❌ 服务停止失败! -) -echo. -pause -goto menu - -:restart_service -echo. -echo 🔄 正在重启服务... -python flask_prompt_master_service.py restart -if %errorLevel% == 0 ( - echo ✅ 服务重启成功! - echo 💡 访问地址: http://localhost:5000 -) else ( - echo ❌ 服务重启失败! -) -echo. -pause -goto menu - -:status_service -echo. -echo 📊 正在查询服务状态... -python flask_prompt_master_service.py status -echo. -pause -goto menu - -:remove_service -echo. -echo ⚠️ 警告:此操作将删除服务! -set /p confirm=确认删除服务?(y/N): -if /i "%confirm%"=="y" ( - echo 🗑️ 正在删除服务... - python flask_prompt_master_service.py remove - if %errorLevel% == 0 ( - echo ✅ 服务删除成功! - ) else ( - echo ❌ 服务删除失败! - ) -) else ( - echo ❌ 操作已取消 -) -echo. -pause -goto menu - -:exit -echo 👋 再见! -exit /b 0 diff --git a/simple_service_manager.bat b/simple_service_manager.bat deleted file mode 100644 index 73d459c..0000000 --- a/simple_service_manager.bat +++ /dev/null @@ -1,70 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🚀 Flask 提示词大师 - 简化服务管理脚本 -echo ============================================================ -echo. - -REM 激活虚拟环境 -call .venv\Scripts\Activate.bat - -REM 设置环境变量 -set FLASK_ENV=production -set PYTHONPATH=%cd% - -echo 📊 环境变量设置完成 -echo. - -:menu -echo 请选择操作: -echo 1. 启动服务 -echo 2. 安装开机启动 -echo 3. 删除开机启动 -echo 4. 查看任务状态 -echo 5. 退出 -echo. -set /p choice=请输入选项 (1-5): - -if "%choice%"=="1" goto start_service -if "%choice%"=="2" goto install_startup -if "%choice%"=="3" goto remove_startup -if "%choice%"=="4" goto check_status -if "%choice%"=="5" goto exit -echo ❌ 无效选项,请重新选择 -goto menu - -:start_service -echo. -echo 🚀 正在启动服务... -python simple_windows_service.py start -echo. -pause -goto menu - -:install_startup -echo. -echo 📋 正在安装开机启动任务... -python simple_windows_service.py install -echo. -pause -goto menu - -:remove_startup -echo. -echo 🗑️ 正在删除开机启动任务... -python simple_windows_service.py remove -echo. -pause -goto menu - -:check_status -echo. -echo 📊 正在查询任务状态... -schtasks /query /tn "FlaskPromptMasterStartup" /fo table -echo. -pause -goto menu - -:exit -echo 👋 再见! -exit /b 0 diff --git a/start_monitor.bat b/start_monitor.bat deleted file mode 100644 index 4321524..0000000 --- a/start_monitor.bat +++ /dev/null @@ -1,35 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🚀 Flask 提示词大师 - 监控系统启动脚本 -echo ============================================================ -echo. - -REM 检查虚拟环境 -if not exist ".venv\Scripts\Activate.ps1" ( - echo ❌ 虚拟环境不存在,请先创建虚拟环境 - pause - exit /b 1 -) - -REM 激活虚拟环境并启动监控 -echo 🔧 激活虚拟环境... -call .venv\Scripts\Activate.ps1 - -echo. -echo 🎮 启动监控管理器... -echo 可用命令: -echo start - 启动监控 -echo stop - 停止监控 -echo status - 检查服务状态 -echo logs - 管理日志 -echo report - 生成报告 -echo dashboard - 显示仪表板 -echo quit - 退出 -echo. - -python monitor_manager.py - -echo. -echo 👋 监控系统已退出 -pause diff --git a/start_production.bat b/start_production.bat deleted file mode 100644 index e7b6d58..0000000 --- a/start_production.bat +++ /dev/null @@ -1,19 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🚀 Flask 提示词大师 - 生产环境启动脚本 -echo ============================================================ -echo. - -REM 设置环境变量 -set FLASK_ENV=production -set PYTHONPATH=%cd% - -echo 📊 环境变量设置完成 -echo 🌐 启动生产环境服务器... -echo. - -REM 启动生产环境服务器 -python run_production.py - -pause diff --git a/start_production_simple.bat b/start_production_simple.bat deleted file mode 100644 index 2f99864..0000000 --- a/start_production_simple.bat +++ /dev/null @@ -1,22 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🚀 Flask 提示词大师 - 简单生产环境启动脚本 -echo ============================================================ -echo. - -REM 激活虚拟环境 -call .venv\Scripts\Activate.bat - -REM 设置环境变量 -set FLASK_ENV=production -set PYTHONPATH=%cd% - -echo 📊 环境变量设置完成 -echo 🌐 启动生产环境服务器... -echo. - -REM 启动生产环境服务器 -python run_production_simple.py - -pause diff --git a/stop_production.bat b/stop_production.bat deleted file mode 100644 index 00445fd..0000000 --- a/stop_production.bat +++ /dev/null @@ -1,18 +0,0 @@ -@echo off -chcp 65001 >nul -echo ============================================================ -echo 🛑 Flask 提示词大师 - 生产环境停止脚本 -echo ============================================================ -echo. - -echo 🔍 查找并停止 Python 进程... -echo. - -REM 查找并停止 Python 进程 -tasklist /FI "IMAGENAME eq python.exe" /FO TABLE -echo. -echo ⚠️ 请手动关闭相关 Python 进程 -echo 💡 或者按 Ctrl+C 停止服务器 -echo. - -pause