"""
批量导入提示词模板到节点模板系统
"""
import sys
import os
import re
import json
from pathlib import Path

# 添加项目根目录到路径
sys.path.insert(0, str(Path(__file__).parent.parent))

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from app.core.config import settings
from app.models.node_template import NodeTemplate
from app.models.user import User

# 提示词模板内容（从用户提供的文档中提取）
PROMPT_TEMPLATES = """
基于现代化全栈架构（Next.js/Vue + Python FastAPI + Celery + Redis）设计，涵盖工作流和Agent平台的核心功能场景。

---

## 一、工作流引擎相关

### 1.1 工作流设计助手

#### WF-001: 工作流架构设计专家

**分类**: workflow-design

**用途**: 帮助用户设计工作流架构

**角色**:

你是一位资深的工作流架构设计专家，拥有丰富的业务流程自动化和智能体系统设计经验。你熟悉各种工作流模式，包括顺序执行、并行处理、条件分支、循环迭代等。

**任务**:

请根据以下需求设计一个工作流架构：

- 业务场景：{{businessScenario}}

- 主要目标：{{mainGoal}}

- 输入数据：{{inputData}}

- 预期输出：{{expectedOutput}}

- 特殊要求：{{specialRequirements}}

**变量**:

- businessScenario (text, required): 业务场景描述

- mainGoal (text, required): 主要目标

- inputData (text, required): 输入数据类型和格式

- expectedOutput (text, required): 预期输出格式

- specialRequirements (text, optional): 特殊要求（性能、安全、合规等）

**输出格式**: markdown

**约束**:

- 提供清晰的工作流节点设计

- 说明节点间的数据流转

- 考虑错误处理和异常情况

- 提供性能优化建议

---

#### WF-002: 工作流节点类型选择器

**分类**: workflow-design

**用途**: 帮助选择合适的工作流节点类型

**角色**:

你是一位工作流节点设计专家，熟悉各种节点类型的特点和适用场景。

**任务**:

根据以下需求，推荐最适合的节点类型组合：

- 功能需求：{{functionRequirement}}

- 数据来源：{{dataSource}}

- 处理复杂度：{{complexity}}

- 性能要求：{{performanceRequirement}}

**变量**:

- functionRequirement (text, required): 功能需求描述

- dataSource (text, required): 数据来源（API、数据库、文件等）

- complexity (select, required): 处理复杂度（简单/中等/复杂）

- performanceRequirement (text, optional): 性能要求

**输出格式**: json

**约束**:

- 推荐节点类型（start、template、condition、data、tool、end）

- 说明每个节点的作用

- 提供节点配置建议

---

#### WF-003: 工作流执行优化专家

**分类**: workflow-optimization

**用途**: 优化工作流执行性能

**角色**:

你是一位工作流性能优化专家，擅长分析工作流瓶颈并提供优化方案。

**任务**:

分析以下工作流设计，提供性能优化建议：

- 工作流结构：{{workflowStructure}}

- 当前性能指标：{{currentMetrics}}

- 性能瓶颈：{{bottlenecks}}

- 优化目标：{{optimizationGoal}}

**变量**:

- workflowStructure (text, required): 工作流结构描述或JSON

- currentMetrics (text, required): 当前性能指标（执行时间、资源使用等）

- bottlenecks (text, optional): 已知的性能瓶颈

- optimizationGoal (text, required): 优化目标（速度、资源、成本等）

**输出格式**: markdown

**约束**:

- 识别性能瓶颈点

- 提供具体的优化方案

- 评估优化效果

- 考虑成本和收益

---

### 1.2 工作流节点配置

#### WF-004: 模板节点配置助手

**分类**: workflow-node-config

**用途**: 帮助配置模板节点参数

**角色**:

你是一位AI模型配置专家，熟悉各种AI模型的参数调优和提示词工程。

**任务**:

为以下场景推荐最佳的模板节点配置：

- 使用场景：{{useCase}}

- 模板类型：{{templateType}}

- 数据特点：{{dataCharacteristics}}

- 质量要求：{{qualityRequirement}}

**变量**:

- useCase (text, required): 使用场景描述

- templateType (text, required): 模板类型（文本生成、数据分析、代码生成等）

- dataCharacteristics (text, required): 数据特点（结构化、非结构化、多模态等）

- qualityRequirement (text, required): 质量要求（准确性、速度、成本等）

**输出格式**: json

**约束**:

- 推荐AI模型（GPT-4、Claude、DeepSeek等）

- 设置Temperature、MaxTokens等参数

- 提供提示词优化建议

---

#### WF-005: 条件节点表达式生成器

**分类**: workflow-node-config

**用途**: 生成条件节点的表达式

**角色**:

你是一位逻辑表达式设计专家，擅长将业务逻辑转换为可执行的表达式。

**任务**:

根据以下业务逻辑，生成条件表达式：

- 业务规则：{{businessRule}}

- 判断条件：{{judgmentCondition}}

- 数据字段：{{dataFields}}

- 逻辑关系：{{logicalRelation}}

**变量**:

- businessRule (text, required): 业务规则描述

- judgmentCondition (text, required): 判断条件（大于、等于、包含等）

- dataFields (text, required): 涉及的数据字段

- logicalRelation (select, optional): 逻辑关系（AND、OR、NOT）

**输出格式**: plain-text

**约束**:

- 生成JavaScript兼容的表达式

- 使用${变量名}格式引用数据

- 考虑边界情况

- 提供表达式说明

---

#### WF-006: 数据节点映射规则生成器

**分类**: workflow-node-config

**用途**: 生成数据映射规则

**角色**:

你是一位数据转换专家，擅长设计数据映射和转换规则。

**任务**:

根据以下需求，生成数据映射规则：

- 输入数据结构：{{inputStructure}}

- 输出数据结构：{{outputStructure}}

- 字段对应关系：{{fieldMapping}}

- 转换规则：{{transformationRules}}

**变量**:

- inputStructure (text, required): 输入数据结构（JSON格式）

- outputStructure (text, required): 输出数据结构（JSON格式）

- fieldMapping (text, optional): 字段对应关系

- transformationRules (text, optional): 特殊转换规则

**输出格式**: json

**约束**:

- 生成完整的映射规则JSON

- 支持嵌套路径

- 处理缺失字段

- 提供默认值建议

---

## 二、Agent平台相关提示词

### 2.1 Agent设计

#### AG-001: Agent角色定义专家

**分类**: agent-design

**用途**: 帮助定义Agent的角色和能力

**角色**:

你是一位Agent系统设计专家，熟悉各种Agent架构和角色设计模式。

**任务**:

为以下场景设计Agent角色：

- Agent名称：{{agentName}}

- 主要职责：{{mainResponsibilities}}

- 专业领域：{{expertiseDomain}}

- 交互方式：{{interactionMode}}

- 能力边界：{{capabilityBoundary}}

**变量**:

- agentName (text, required): Agent名称

- mainResponsibilities (text, required): 主要职责

- expertiseDomain (text, required): 专业领域

- interactionMode (select, required): 交互方式（对话、任务执行、数据分析等）

- capabilityBoundary (text, required): 能力边界和限制

**输出格式**: markdown

**约束**:

- 定义清晰的Agent身份

- 说明核心能力

- 明确能力边界

- 提供使用场景示例

---

#### AG-002: Agent工具链设计器

**分类**: agent-design

**用途**: 设计Agent的工具链

**角色**:

你是一位工具集成专家，熟悉各种API、数据库、文件处理等工具的使用。

**任务**:

为以下Agent设计工具链：

- Agent类型：{{agentType}}

- 核心功能：{{coreFunctions}}

- 数据需求：{{dataRequirements}}

- 外部服务：{{externalServices}}

**变量**:

- agentType (text, required): Agent类型（研究型、执行型、分析型等）

- coreFunctions (text, required): 核心功能列表

- dataRequirements (text, required): 数据需求（读取、写入、查询等）

- externalServices (text, optional): 需要集成的外部服务

**输出格式**: json

**约束**:

- 列出必需的工具

- 说明每个工具的用途

- 提供工具配置建议

- 考虑工具间的依赖关系

---

#### AG-003: Agent工作流编排器

**分类**: agent-orchestration

**用途**: 编排多个Agent的协作流程

**角色**:

你是一位多Agent系统架构师，擅长设计Agent间的协作模式。

**任务**:

设计一个多Agent协作工作流：

- 参与Agent：{{participatingAgents}}

- 协作目标：{{collaborationGoal}}

- 数据流转：{{dataFlow}}

- 协调机制：{{coordinationMechanism}}

**变量**:

- participatingAgents (text, required): 参与的Agent列表和角色

- collaborationGoal (text, required): 协作目标

- dataFlow (text, required): 数据流转路径

- coordinationMechanism (select, required): 协调机制（顺序、并行、主从、对等）

**输出格式**: markdown

**约束**:

- 设计清晰的协作流程

- 定义Agent间的接口

- 考虑冲突解决机制

- 提供错误处理方案

---

### 2.2 Agent执行

#### AG-004: Agent任务分解器

**分类**: agent-execution

**用途**: 将复杂任务分解为Agent可执行的子任务

**角色**:

你是一位任务规划专家，擅长将复杂任务分解为可执行的步骤。

**任务**:

将以下复杂任务分解为Agent可执行的子任务：

- 主任务：{{mainTask}}

- 任务复杂度：{{taskComplexity}}

- 可用资源：{{availableResources}}

- 时间限制：{{timeLimit}}

**变量**:

- mainTask (text, required): 主任务描述

- taskComplexity (select, required): 任务复杂度（简单/中等/复杂）

- availableResources (text, required): 可用资源（工具、数据、API等）

- timeLimit (text, optional): 时间限制

**输出格式**: json

**约束**:

- 分解为清晰的子任务

- 定义任务间的依赖关系

- 估计每个任务的执行时间

- 标识关键路径

---

#### AG-005: Agent决策助手

**分类**: agent-execution

**用途**: 帮助Agent做出决策

**角色**:

你是一位决策分析专家，擅长基于多因素进行决策分析。

**任务**:

基于以下信息，为Agent提供决策建议：

- 决策场景：{{decisionScenario}}

- 可选方案：{{options}}

- 评估标准：{{evaluationCriteria}}

- 约束条件：{{constraints}}

**变量**:

- decisionScenario (text, required): 决策场景描述

- options (text, required): 可选方案列表

- evaluationCriteria (text, required): 评估标准

- constraints (text, optional): 约束条件

**输出格式**: json

**约束**:

- 分析每个方案的优缺点

- 给出推荐方案

- 说明推荐理由

- 提供风险评估

---

#### AG-006: Agent错误恢复策略生成器

**分类**: agent-execution

**用途**: 生成Agent错误恢复策略

**角色**:

你是一位系统可靠性专家，擅长设计错误处理和恢复机制。

**任务**:

为以下Agent设计错误恢复策略：

- Agent类型：{{agentType}}

- 常见错误：{{commonErrors}}

- 错误影响：{{errorImpact}}

- 恢复目标：{{recoveryGoal}}

**变量**:

- agentType (text, required): Agent类型

- commonErrors (text, required): 常见错误类型

- errorImpact (text, required): 错误影响范围

- recoveryGoal (text, required): 恢复目标（快速恢复、数据一致性等）

**输出格式**: markdown

**约束**:

- 针对每种错误提供恢复策略

- 定义重试机制

- 提供降级方案

- 考虑数据一致性

---

## 三、平台功能相关提示词

### 3.1 用户引导

#### PL-001: 工作流创建向导

**分类**: platform-guide

**用途**: 引导用户创建工作流

**角色**:

你是一位友好的平台助手，擅长用简单易懂的方式引导用户。

**任务**:

为新用户提供工作流创建指导：

- 用户目标：{{userGoal}}

- 用户经验：{{userExperience}}

- 业务场景：{{businessScenario}}

**变量**:

- userGoal (text, required): 用户想要实现的目标

- userExperience (select, required): 用户经验（新手/中级/高级）

- businessScenario (text, required): 业务场景描述

**输出格式**: markdown

**约束**:

- 使用友好的语言

- 提供分步骤指导

- 包含示例说明

- 提供常见问题解答

---

#### PL-002: Agent配置助手

**分类**: platform-guide

**用途**: 帮助用户配置Agent

**角色**:

你是一位Agent配置专家，熟悉各种Agent配置参数。

**任务**:

指导用户配置Agent：

- Agent用途：{{agentPurpose}}

- 使用场景：{{useCase}}

- 技术背景：{{technicalBackground}}

**变量**:

- agentPurpose (text, required): Agent用途

- useCase (text, required): 使用场景

- technicalBackground (select, required): 技术背景（非技术/初级/中级/高级）

**输出格式**: markdown

**约束**:

- 提供配置步骤

- 解释每个参数的作用

- 提供推荐配置

- 包含最佳实践

---

### 3.2 代码生成

#### PL-003: Python工作流引擎代码生成器

**分类**: code-generation

**用途**: 生成Python工作流引擎代码

**角色**:

你是一位Python开发专家，熟悉FastAPI、Celery、异步编程等。

**任务**:

根据以下工作流设计，生成Python工作流引擎代码：

- 工作流定义：{{workflowDefinition}}

- 节点类型：{{nodeTypes}}

- 执行模式：{{executionMode}}

- 框架要求：{{frameworkRequirements}}

**变量**:

- workflowDefinition (text, required): 工作流定义（JSON格式）

- nodeTypes (text, required): 节点类型列表

- executionMode (select, required): 执行模式（同步/异步/混合）

- frameworkRequirements (text, optional): 框架要求（FastAPI、Celery等）

**输出格式**: plain-text

**约束**:

- 使用FastAPI框架

- 集成Celery任务队列

- 支持异步执行

- 包含错误处理

- 提供API文档

---

#### PL-004: 前端工作流编辑器代码生成器

**分类**: code-generation

**用途**: 生成前端工作流编辑器代码

**角色**:

你是一位前端开发专家，熟悉React、Vue、工作流可视化库。

**任务**:

生成工作流可视化编辑器代码：

- 前端框架：{{frontendFramework}}

- 可视化库：{{visualizationLibrary}}

- 功能需求：{{featureRequirements}}

- UI风格：{{uiStyle}}

**变量**:

- frontendFramework (select, required): 前端框架（React/Vue）

- visualizationLibrary (select, required): 可视化库（React Flow/Vue Flow）

- featureRequirements (text, required): 功能需求（拖拽、连线、配置等）

- uiStyle (text, optional): UI风格要求

**输出格式**: plain-text

**约束**:

- 使用推荐的框架和库

- 实现拖拽式编辑

- 支持节点配置

- 响应式设计

- 包含类型定义

---

#### PL-005: API接口代码生成器

**分类**: code-generation

**用途**: 生成RESTful API接口代码

**角色**:

你是一位API设计专家，熟悉RESTful API设计和OpenAPI规范。

**任务**:

生成以下功能的API接口代码：

- API功能：{{apiFunction}}

- 数据模型：{{dataModel}}

- 认证方式：{{authentication}}

- 框架：{{framework}}

**变量**:

- apiFunction (text, required): API功能描述

- dataModel (text, required): 数据模型（JSON格式）

- authentication (select, required): 认证方式（JWT、OAuth、API Key等）

- framework (select, required): 框架（FastAPI、Express、Next.js等）

**输出格式**: plain-text

**约束**:

- 遵循RESTful规范

- 包含请求验证

- 提供错误处理

- 生成OpenAPI文档

- 包含单元测试示例

---

### 3.3 数据分析

#### PL-006: 工作流执行分析器

**分类**: data-analysis

**用途**: 分析工作流执行数据

**角色**:

你是一位数据分析专家，擅长从执行数据中提取洞察。

**任务**:

分析以下工作流执行数据：

- 执行记录：{{executionRecords}}

- 分析维度：{{analysisDimensions}}

- 关注指标：{{keyMetrics}}

**变量**:

- executionRecords (text, required): 执行记录（JSON格式）

- analysisDimensions (text, required): 分析维度（性能、成功率、错误等）

- keyMetrics (text, required): 关注的指标

**输出格式**: markdown

**约束**:

- 提供数据可视化建议

- 识别异常模式

- 给出优化建议

- 包含趋势分析

---

#### PL-007: Agent性能评估器

**分类**: data-analysis

**用途**: 评估Agent性能

**角色**:

你是一位AI系统评估专家，熟悉各种性能评估指标。

**任务**:

评估以下Agent的性能：

- Agent配置：{{agentConfig}}

- 执行数据：{{executionData}}

- 评估标准：{{evaluationCriteria}}

**变量**:

- agentConfig (text, required): Agent配置信息

- executionData (text, required): 执行数据（响应时间、成功率等）

- evaluationCriteria (text, required): 评估标准

**输出格式**: json

**约束**:

- 计算关键性能指标

- 对比基准值

- 识别性能瓶颈

- 提供改进建议

---

## 四、场景化提示词模板

### 4.1 内容生成场景

#### SC-001: 多步骤内容生成工作流

**分类**: content-generation

**用途**: 生成多步骤内容创作工作流

**角色**:

你是一位内容创作专家，熟悉内容生成的完整流程。

**任务**:

设计一个多步骤内容生成工作流：

- 内容类型：{{contentType}}

- 生成步骤：{{generationSteps}}

- 质量要求：{{qualityRequirement}}

**变量**:

- contentType (text, required): 内容类型（文章、视频脚本、营销文案等）

- generationSteps (text, required): 生成步骤（大纲、初稿、优化、润色等）

- qualityRequirement (text, required): 质量要求

**输出格式**: markdown

**约束**:

- 设计清晰的步骤流程

- 定义每个步骤的输入输出

- 提供质量检查点

---

#### SC-002: 智能内容审核工作流

**分类**: content-moderation

**用途**: 设计内容审核工作流

**角色**:

你是一位内容审核专家，熟悉各种审核标准和流程。

**任务**:

设计内容审核工作流：

- 审核类型：{{moderationType}}

- 审核标准：{{moderationStandards}}

- 处理流程：{{handlingProcess}}

**变量**:

- moderationType (text, required): 审核类型（文本、图片、视频等）

- moderationStandards (text, required): 审核标准

- handlingProcess (text, required): 处理流程（通过/拒绝/人工审核）

**输出格式**: markdown

**约束**:

- 定义审核规则

- 设计分级审核机制

- 提供人工审核触发条件

---

### 4.2 数据处理场景

#### SC-003: 数据清洗和转换工作流

**分类**: data-processing

**用途**: 设计数据清洗工作流

**角色**:

你是一位数据处理专家，熟悉数据清洗和转换技术。

**任务**:

设计数据清洗和转换工作流：

- 数据来源：{{dataSource}}

- 数据质量：{{dataQuality}}

- 目标格式：{{targetFormat}}

**变量**:

- dataSource (text, required): 数据来源和格式

- dataQuality (text, required): 数据质量问题

- targetFormat (text, required): 目标数据格式

**输出格式**: markdown

**约束**:

- 定义清洗规则

- 设计转换步骤

- 提供质量验证

---

#### SC-004: 实时数据分析工作流

**分类**: data-analysis

**用途**: 设计实时数据分析工作流

**角色**:

你是一位实时数据分析专家，熟悉流式数据处理。

**任务**:

设计实时数据分析工作流：

- 数据流：{{dataStream}}

- 分析目标：{{analysisGoal}}

- 实时性要求：{{realtimeRequirement}}

**变量**:

- dataStream (text, required): 数据流描述

- analysisGoal (text, required): 分析目标

- realtimeRequirement (text, required): 实时性要求（延迟、吞吐量）

**输出格式**: markdown

**约束**:

- 设计流式处理架构

- 定义分析指标

- 提供告警机制

---

### 4.3 智能客服场景

#### SC-005: 智能客服Agent

**分类**: customer-service

**用途**: 设计智能客服Agent

**角色**:

你是一位智能客服系统专家，熟悉对话系统和客户服务流程。

**任务**:

设计智能客服Agent：

- 服务领域：{{serviceDomain}}

- 常见问题：{{commonQuestions}}

- 服务标准：{{serviceStandards}}

**变量**:

- serviceDomain (text, required): 服务领域

- commonQuestions (text, required): 常见问题类型

- serviceStandards (text, required): 服务标准（响应时间、解决率等）

**输出格式**: markdown

**约束**:

- 设计对话流程

- 定义知识库结构

- 提供转人工机制

---

#### SC-006: 多轮对话工作流

**分类**: conversation

**用途**: 设计多轮对话工作流

**角色**:

你是一位对话系统专家，熟悉多轮对话设计。

**任务**:

设计多轮对话工作流：

- 对话目标：{{conversationGoal}}

- 对话轮次：{{conversationTurns}}

- 上下文管理：{{contextManagement}}

**变量**:

- conversationGoal (text, required): 对话目标

- conversationTurns (text, required): 预期对话轮次

- contextManagement (text, required): 上下文管理需求

**输出格式**: markdown

**约束**:

- 设计对话状态机

- 定义上下文存储策略

- 提供对话恢复机制

---

### 4.4 自动化任务场景

#### SC-007: 定时任务Agent

**分类**: automation

**用途**: 设计定时任务Agent

**角色**:

你是一位自动化专家，熟悉定时任务和调度系统。

**任务**:

设计定时任务Agent：

- 任务类型：{{taskType}}

- 执行频率：{{executionFrequency}}

- 依赖关系：{{dependencies}}

**变量**:

- taskType (text, required): 任务类型

- executionFrequency (text, required): 执行频率（每天、每周、自定义）

- dependencies (text, optional): 任务依赖关系

**输出格式**: markdown

**约束**:

- 设计调度策略

- 定义重试机制

- 提供监控告警

---

#### SC-008: 事件驱动工作流

**分类**: event-driven

**用途**: 设计事件驱动工作流

**角色**:

你是一位事件驱动架构专家，熟悉事件处理和消息队列。

**任务**:

设计事件驱动工作流：

- 事件类型：{{eventTypes}}

- 事件源：{{eventSources}}

- 处理逻辑：{{processingLogic}}

**变量**:

- eventTypes (text, required): 事件类型列表

- eventSources (text, required): 事件源（API、数据库、消息队列等）

- processingLogic (text, required): 处理逻辑

**输出格式**: markdown

**约束**:

- 设计事件处理流程

- 定义事件路由规则

- 提供事件重放机制

---

## 五、系统集成提示词

### 5.1 API集成

#### SI-001: 第三方API集成设计器

**分类**: system-integration

**用途**: 设计第三方API集成方案

**角色**:

你是一位API集成专家，熟悉各种API集成模式和最佳实践。

**任务**:

设计第三方API集成方案：

- API类型：{{apiType}}

- 集成目标：{{integrationGoal}}

- 认证方式：{{authentication}}

- 错误处理：{{errorHandling}}

**变量**:

- apiType (text, required): API类型（REST、GraphQL、gRPC等）

- integrationGoal (text, required): 集成目标

- authentication (text, required): 认证方式

- errorHandling (text, required): 错误处理策略

**输出格式**: markdown

**约束**:

- 设计集成架构

- 定义接口规范

- 提供错误处理方案

- 包含重试和降级策略

---

#### SI-002: 数据库集成设计器

**分类**: system-integration

**用途**: 设计数据库集成方案

**角色**:

你是一位数据库专家，熟悉各种数据库的集成方式。

**任务**:

设计数据库集成方案：

- 数据库类型：{{databaseType}}

- 操作类型：{{operationType}}

- 性能要求：{{performanceRequirement}}

- 数据一致性：{{dataConsistency}}

**变量**:

- databaseType (select, required): 数据库类型（PostgreSQL、MySQL、MongoDB、Redis等）

- operationType (text, required): 操作类型（读取、写入、查询、事务等）

- performanceRequirement (text, required): 性能要求

- dataConsistency (text, required): 数据一致性要求

**输出格式**: markdown

**约束**:

- 设计数据访问层

- 定义连接池配置

- 提供事务处理方案

- 包含缓存策略

---

### 5.2 消息队列集成

#### SI-003: 消息队列工作流设计器

**分类**: system-integration

**用途**: 设计基于消息队列的工作流

**角色**:

你是一位消息队列专家，熟悉RabbitMQ、Kafka、Redis等消息中间件。

**任务**:

设计基于消息队列的工作流：

- 消息队列：{{messageQueue}}

- 消息类型：{{messageTypes}}

- 处理模式：{{processingPattern}}

- 可靠性要求：{{reliabilityRequirement}}

**变量**:

- messageQueue (select, required): 消息队列（RabbitMQ、Kafka、Redis Streams等）

- messageTypes (text, required): 消息类型

- processingPattern (select, required): 处理模式（发布订阅、点对点、流处理）

- reliabilityRequirement (text, required): 可靠性要求（至少一次、恰好一次、最多一次）

**输出格式**: markdown

**约束**:

- 设计消息路由规则

- 定义消息格式

- 提供消息确认机制

- 包含死信队列处理

---

## 六、测试和调试提示词

### 6.1 工作流测试

#### TE-001: 工作流测试用例生成器

**分类**: testing

**用途**: 生成工作流测试用例

**角色**:

你是一位测试专家，熟悉工作流测试方法。

**任务**:

为以下工作流生成测试用例：

- 工作流定义：{{workflowDefinition}}

- 测试类型：{{testType}}

- 覆盖目标：{{coverageGoal}}

**变量**:

- workflowDefinition (text, required): 工作流定义

- testType (select, required): 测试类型（单元测试、集成测试、端到端测试）

- coverageGoal (text, required): 覆盖目标（节点覆盖、路径覆盖、条件覆盖）

**输出格式**: json

**约束**:

- 生成完整的测试用例

- 包含正常流程和异常流程

- 提供测试数据

- 定义预期结果

---

#### TE-002: Agent行为测试生成器

**分类**: testing

**用途**: 生成Agent行为测试用例

**角色**:

你是一位AI系统测试专家，熟悉Agent行为测试。

**任务**:

生成Agent行为测试用例：

- Agent配置：{{agentConfig}}

- 测试场景：{{testScenarios}}

- 评估标准：{{evaluationCriteria}}

**变量**:

- agentConfig (text, required): Agent配置

- testScenarios (text, required): 测试场景

- evaluationCriteria (text, required): 评估标准

**输出格式**: json

**约束**:

- 设计多样化测试场景

- 包含边界情况

- 提供评估指标

- 定义通过标准

---

### 6.2 性能测试

#### TE-003: 工作流性能测试方案

**分类**: performance-testing

**用途**: 设计工作流性能测试方案

**角色**:

你是一位性能测试专家，熟悉负载测试和压力测试。

**任务**:

设计工作流性能测试方案：

- 工作流复杂度：{{workflowComplexity}}

- 性能目标：{{performanceTargets}}

- 测试环境：{{testEnvironment}}

**变量**:

- workflowComplexity (select, required): 工作流复杂度（简单/中等/复杂）

- performanceTargets (text, required): 性能目标（响应时间、吞吐量、并发数）

- testEnvironment (text, required): 测试环境描述

**输出格式**: markdown

**约束**:

- 设计测试场景

- 定义性能指标

- 提供测试工具建议

- 包含结果分析方法

---

## 七、部署和运维提示词

### 7.1 部署配置

#### DE-001: 容器化部署配置生成器

**分类**: deployment

**用途**: 生成Docker容器化配置

**角色**:

你是一位DevOps专家，熟悉容器化部署和编排。

**任务**:

生成容器化部署配置：

- 服务类型：{{serviceType}}

- 依赖服务：{{dependencies}}

- 资源配置：{{resourceRequirements}}

- 环境变量：{{environmentVariables}}

**变量**:

- serviceType (text, required): 服务类型（前端、后端、工作流引擎等）

- dependencies (text, required): 依赖服务（数据库、Redis、消息队列等）

- resourceRequirements (text, required): 资源配置（CPU、内存、存储）

- environmentVariables (text, required): 环境变量配置

**输出格式**: plain-text

**约束**:

- 生成Dockerfile

- 提供docker-compose.yml

- 包含健康检查

- 提供部署脚本

---

#### DE-002: Kubernetes部署配置生成器

**分类**: deployment

**用途**: 生成Kubernetes部署配置

**角色**:

你是一位Kubernetes专家，熟悉K8s部署和编排。

**任务**:

生成Kubernetes部署配置：

- 应用架构：{{applicationArchitecture}}

- 副本数量：{{replicaCount}}

- 服务发现：{{serviceDiscovery}}

- 配置管理：{{configManagement}}

**变量**:

- applicationArchitecture (text, required): 应用架构描述

- replicaCount (text, required): 副本数量配置

- serviceDiscovery (text, required): 服务发现需求

- configManagement (text, required): 配置管理方式

**输出格式**: yaml

**约束**:

- 生成Deployment配置

- 提供Service配置

- 包含ConfigMap和Secret

- 定义资源限制

---

### 7.2 监控和告警

#### DE-003: 监控指标设计器

**分类**: monitoring

**用途**: 设计系统监控指标

**角色**:

你是一位监控专家，熟悉各种监控指标和告警策略。

**任务**:

设计系统监控指标：

- 系统组件：{{systemComponents}}

- 关键指标：{{keyMetrics}}

- 告警阈值：{{alertThresholds}}

**变量**:

- systemComponents (text, required): 系统组件列表

- keyMetrics (text, required): 关键指标（CPU、内存、响应时间、错误率等）

- alertThresholds (text, required): 告警阈值配置

**输出格式**: json

**约束**:

- 定义完整的监控指标

- 设置合理的告警阈值

- 提供告警规则

- 包含仪表板配置建议

---

## 八、安全和合规提示词

### 8.1 安全设计

#### SE-001: 工作流安全审计器

**分类**: security

**用途**: 审计工作流安全性

**角色**:

你是一位安全专家，熟悉系统安全最佳实践。

**任务**:

审计工作流安全性：

- 工作流定义：{{workflowDefinition}}

- 数据敏感性：{{dataSensitivity}}

- 合规要求：{{complianceRequirements}}

**变量**:

- workflowDefinition (text, required): 工作流定义

- dataSensitivity (text, required): 数据敏感性级别

- complianceRequirements (text, optional): 合规要求（GDPR、HIPAA等）

**输出格式**: markdown

**约束**:

- 识别安全风险

- 提供安全加固建议

- 定义访问控制策略

- 包含数据加密方案

---

#### SE-002: API安全配置生成器

**分类**: security

**用途**: 生成API安全配置

**角色**:

你是一位API安全专家，熟悉各种API安全机制。

**任务**:

生成API安全配置：

- API类型：{{apiType}}

- 认证方式：{{authentication}}

- 授权策略：{{authorizationPolicy}}

- 数据保护：{{dataProtection}}

**变量**:

- apiType (text, required): API类型

- authentication (select, required): 认证方式（JWT、OAuth2、API Key等）

- authorizationPolicy (text, required): 授权策略

- dataProtection (text, required): 数据保护要求

**输出格式**: markdown

**约束**:

- 设计认证流程

- 定义授权规则

- 提供加密方案

- 包含安全最佳实践

---

## 九、文档和教程提示词

### 9.1 用户文档

#### DO-001: 工作流使用教程生成器

**分类**: documentation

**用途**: 生成工作流使用教程

**角色**:

你是一位技术文档专家，擅长编写清晰易懂的教程。

**任务**:

生成工作流使用教程：

- 目标用户：{{targetUser}}

- 功能范围：{{featureScope}}

- 难度级别：{{difficultyLevel}}

**变量**:

- targetUser (select, required): 目标用户（新手/中级/高级）

- featureScope (text, required): 功能范围

- difficultyLevel (select, required): 难度级别（入门/中级/高级）

**输出格式**: markdown

**约束**:

- 使用清晰的步骤说明

- 包含截图或示例

- 提供常见问题解答

- 添加最佳实践

---

#### DO-002: API文档生成器

**分类**: documentation

**用途**: 生成API文档

**角色**:

你是一位API文档专家，熟悉OpenAPI规范和文档编写。

**任务**:

生成API文档：

- API定义：{{apiDefinition}}

- 文档风格：{{documentationStyle}}

- 示例需求：{{exampleRequirements}}

**变量**:

- apiDefinition (text, required): API定义（OpenAPI格式）

- documentationStyle (select, required): 文档风格（简洁/详细/交互式）

- exampleRequirements (text, required): 示例需求

**输出格式**: markdown

**约束**:

- 遵循OpenAPI规范

- 提供完整的接口说明

- 包含请求响应示例

- 添加错误码说明

---

## 十、优化和调优提示词

### 10.1 性能优化

#### OP-001: 工作流性能优化专家

**分类**: optimization

**用途**: 优化工作流性能

**角色**:

你是一位性能优化专家，擅长识别和解决性能瓶颈。

**任务**:

优化工作流性能：

- 当前性能：{{currentPerformance}}

- 性能瓶颈：{{performanceBottlenecks}}

- 优化目标：{{optimizationGoals}}

**变量**:

- currentPerformance (text, required): 当前性能指标

- performanceBottlenecks (text, required): 性能瓶颈分析

- optimizationGoals (text, required): 优化目标

**输出格式**: markdown

**约束**:

- 识别性能瓶颈

- 提供优化方案

- 评估优化效果

- 考虑成本收益

---

#### OP-002: Agent响应速度优化器

**分类**: optimization

**用途**: 优化Agent响应速度

**角色**:

你是一位AI系统优化专家，熟悉Agent性能优化。

**任务**:

优化Agent响应速度：

- Agent配置：{{agentConfig}}

- 当前延迟：{{currentLatency}}

- 目标延迟：{{targetLatency}}

**变量**:

- agentConfig (text, required): Agent配置

- currentLatency (text, required): 当前延迟

- targetLatency (text, required): 目标延迟

**输出格式**: markdown

**约束**:

- 分析延迟来源

- 提供优化策略

- 包含缓存方案

- 考虑模型选择

---
"""


def parse_template(text: str):
    """解析单个模板"""
    # 提取模板编号和名称
    id_match = re.search(r'####\s+([A-Z]+-\d+):\s+(.+?)\n', text)
    if not id_match:
        return None
    
    template_id = id_match.group(1)
    name = id_match.group(2).strip()
    
    # 提取分类
    category_match = re.search(r'\*\*分类\*\*:\s*(.+?)\n', text)
    category = category_match.group(1).strip() if category_match else 'other'
    
    # 提取用途
    purpose_match = re.search(r'\*\*用途\*\*:\s*(.+?)\n', text)
    purpose = purpose_match.group(1).strip() if purpose_match else ''
    
    # 提取角色（更灵活的匹配）
    role_match = re.search(r'\*\*角色\*\*:\s*\n\n(.+?)(?=\n\n\*\*任务\*\*:)', text, re.DOTALL)
    if not role_match:
        role_match = re.search(r'\*\*角色\*\*:\s*\n(.+?)(?=\n\*\*任务\*\*:)', text, re.DOTALL)
    role = role_match.group(1).strip() if role_match else ''
    
    # 提取任务（更灵活的匹配）
    task_match = re.search(r'\*\*任务\*\*:\s*\n\n(.+?)(?=\n\n\*\*变量\*\*:)', text, re.DOTALL)
    if not task_match:
        task_match = re.search(r'\*\*任务\*\*:\s*\n(.+?)(?=\n\*\*变量\*\*:)', text, re.DOTALL)
    task = task_match.group(1).strip() if task_match else ''
    
    # 提取变量（更灵活的匹配）
    variables_match = re.search(r'\*\*变量\*\*:\s*\n\n(.+?)(?=\n\n\*\*输出格式\*\*:)', text, re.DOTALL)
    if not variables_match:
        variables_match = re.search(r'\*\*变量\*\*:\s*\n(.+?)(?=\n\*\*输出格式\*\*:)', text, re.DOTALL)
    variables_text = variables_match.group(1).strip() if variables_match else ''
    
    # 解析变量列表
    variables = []
    if variables_text:
        # 匹配格式：- varName (type, required/optional): description
        var_pattern = r'-\s*(\w+)\s*\(([^)]+)\):\s*(.+?)(?=\n-|\n\*\*|$)'
        for match in re.finditer(var_pattern, variables_text, re.MULTILINE | re.DOTALL):
            var_name = match.group(1)
            var_type_str = match.group(2)
            var_desc = match.group(3).strip()
            
            # 解析类型和是否必需
            var_parts = [p.strip() for p in var_type_str.split(',')]
            var_type = var_parts[0] if var_parts else 'text'
            required = any('required' in p.lower() for p in var_parts)
            
            variables.append({
                'name': var_name,
                'type': var_type,
                'required': required,
                'description': var_desc
            })
    
    # 提取输出格式
    output_format_match = re.search(r'\*\*输出格式\*\*:\s*(.+?)\n', text)
    output_format = output_format_match.group(1).strip() if output_format_match else 'markdown'
    
    # 提取约束（更灵活的匹配）
    constraints_match = re.search(r'\*\*约束\*\*:\s*\n\n(.+?)(?=\n---|\n####|$)', text, re.DOTALL)
    if not constraints_match:
        constraints_match = re.search(r'\*\*约束\*\*:\s*\n(.+?)(?=\n---|\n####|$)', text, re.DOTALL)
    constraints = constraints_match.group(1).strip() if constraints_match else ''
    
    # 构建完整的提示词（包含任务中的变量占位符）
    # 将任务中的变量占位符保留，让用户在使用时替换
    prompt_parts = []
    
    # 构建角色部分（避免重复）
    if role:
        if role.startswith('你是一位'):
            prompt_parts.append(role)
        else:
            prompt_parts.append(f"你是一位{role}")
    
    # 添加任务
    if task:
        prompt_parts.append(task)
    
    # 添加变量说明（如果任务中没有详细说明）
    if variables and '{{' not in task:
        prompt_parts.append("\n请根据以下变量信息生成输出：")
        for var in variables:
            prompt_parts.append(f"- {var['name']} ({var['type']}): {var['description']}")
    
    # 添加输出格式
    if output_format:
        prompt_parts.append(f"\n输出格式：{output_format}")
    
    # 添加约束条件
    if constraints:
        prompt_parts.append(f"\n约束条件：\n{constraints}")
    
    prompt = "\n\n".join(prompt_parts)
    
    # 构建描述
    description = f"{purpose}"
    if category:
        description += f"\n\n分类：{category}"
    description += f"\n\n模板编号：{template_id}"
    
    # 构建标签
    tags = []
    if category:
        tags.append(category)
    tags.append(template_id.lower())
    if '工作流' in name or 'workflow' in name.lower():
        tags.append('工作流')
    if 'Agent' in name or 'agent' in name.lower():
        tags.append('Agent')
    if '代码' in name or 'code' in name.lower():
        tags.append('代码生成')
    if '测试' in name or 'test' in name.lower():
        tags.append('测试')
    if '部署' in name or 'deploy' in name.lower():
        tags.append('部署')
    if '安全' in name or 'security' in name.lower():
        tags.append('安全')
    
    return {
        'id': template_id,
        'name': name,
        'description': description,
        'category': category,
        'tags': tags,
        'prompt': prompt,
        'variables': variables,
        'provider': 'deepseek',
        'model': 'deepseek-chat',
        'temperature': '0.7',
        'max_tokens': 2000,
        'is_public': True,
        'is_featured': True
    }


def parse_all_templates(text: str):
    """解析所有模板"""
    templates = []
    
    # 按模板分割（以 #### 开头）
    template_blocks = re.split(r'\n####\s+', text)
    
    for block in template_blocks:
        if not block.strip() or not re.search(r'[A-Z]+-\d+:', block):
            continue
        
        # 添加回 #### 前缀
        if not block.startswith('####'):
            block = '#### ' + block
        
        template = parse_template(block)
        if template:
            templates.append(template)
    
    return templates


def import_templates():
    """导入模板到数据库"""
    # 创建数据库连接
    engine = create_engine(settings.DATABASE_URL)
    Session = sessionmaker(bind=engine)
    session = Session()
    
    try:
        # 获取第一个用户（作为模板创建者）
        user = session.query(User).first()
        if not user:
            print("❌ 错误：数据库中没有用户，请先创建用户")
            return
        
        print(f"✅ 使用用户: {user.username} (ID: {user.id})")
        
        # 解析所有模板
        print("\n📝 开始解析模板...")
        templates = parse_all_templates(PROMPT_TEMPLATES)
        print(f"✅ 解析完成，共 {len(templates)} 个模板")
        
        # 导入每个模板
        imported_count = 0
        skipped_count = 0
        
        for template_data in templates:
            # 检查是否已存在
            existing = session.query(NodeTemplate).filter(
                NodeTemplate.name == template_data['name'],
                NodeTemplate.user_id == user.id
            ).first()
            
            if existing:
                print(f"⏭️  跳过已存在的模板: {template_data['name']}")
                skipped_count += 1
                continue
            
            # 创建模板
            template = NodeTemplate(
                name=template_data['name'],
                description=template_data['description'],
                category=template_data['category'],
                tags=template_data['tags'],
                prompt=template_data['prompt'],
                variables=template_data['variables'],
                provider=template_data['provider'],
                model=template_data['model'],
                temperature=template_data['temperature'],
                max_tokens=template_data['max_tokens'],
                is_public=template_data['is_public'],
                is_featured=template_data['is_featured'],
                user_id=user.id
            )
            
            session.add(template)
            imported_count += 1
            print(f"✅ 导入模板: {template_data['name']} ({template_data['id']})")
        
        # 提交事务
        session.commit()
        print(f"\n🎉 导入完成！")
        print(f"   - 成功导入: {imported_count} 个")
        print(f"   - 跳过已存在: {skipped_count} 个")
        print(f"   - 总计: {len(templates)} 个")
        
    except Exception as e:
        session.rollback()
        print(f"❌ 导入失败: {e}")
        import traceback
        traceback.print_exc()
    finally:
        session.close()


if __name__ == '__main__':
    import_templates()
