# config.py - 全局配置 import os from dotenv import load_dotenv load_dotenv() # ── LLM ────────────────────────────────────────────── LLM_API_KEY = os.getenv("OPENAI_API_KEY", "sk-AUmOuFI731Ty5Nob38jY26d8lydfDT-QkE2giqb0sCuPCAE2JH6zjLM4lZLpvL5WMYPOocaMe2FwVDmqM_9KimmKACjR") LLM_API_BASE = os.getenv("OPENAI_BASE_URL", "https://openapi.monica.im/v1") LLM_MODEL = os.getenv("LLM_MODEL", "gpt-4o") LLM_TIMEOUT = int(os.getenv("LLM_TIMEOUT", "60")) LLM_MAX_RETRY = int(os.getenv("LLM_MAX_RETRY", "3")) # ── 数据库 ──────────────────────────────────────────── DB_PATH = os.getenv("DB_PATH", "data/requirement_analyzer.db") # ── 输出目录 ────────────────────────────────────────── OUTPUT_BASE_DIR = os.getenv("OUTPUT_BASE_DIR", "output") DEFAULT_LANGUAGE = os.getenv("DEFAULT_LANGUAGE", "python") DEFAULT_MODULE = os.getenv("DEFAULT_MODULE", "default") # ── Prompt 模板 ─────────────────────────────────────── DECOMPOSE_PROMPT_TEMPLATE = """\ 你是一名资深软件架构师,请将以下原始需求分解为独立的功能需求列表。 【原始需求】 {raw_requirement} {knowledge_section} 【输出要求】 以 JSON 数组格式输出,每个元素包含以下字段: - title: 功能标题(简短,10字以内) - description: 功能描述(详细说明该功能的职责与边界,50字以内) - function_name: 对应的函数名(snake_case,动词开头) - priority: 优先级(high / medium / low) - module: 所属功能模块名称(snake_case,如 user_auth / order_service) 【示例输出】 [ {{ "title": "用户注册", "description": "接收用户名、密码、邮箱,校验合法性后创建用户账号并返回用户ID", "function_name": "register_user", "priority": "high", "module": "user_auth" }} ] 只输出 JSON 数组,不要有任何额外说明。 """ FUNC_SIGNATURE_PROMPT_TEMPLATE = """\ 你是一名资深软件工程师,请根据以下功能需求生成标准函数签名信息。 【功能需求】 - 需求编号: {requirement_id} - 标题: {title} - 描述: {description} - 函数名: {function_name} - 所属模块: {module} {knowledge_section} 【输出要求】 以 JSON 对象格式输出,包含以下字段: - name: 函数名(与上方一致) - requirement_id: 需求编号 - description: 函数功能描述(英文,一句话) - type: 固定为 "function" - module: 所属模块名称 - parameters: 参数字典,key 为参数名,value 包含: - type: 数据类型(integer/string/boolean/float/list/dict/object/void/any) - inout: in / out / inout - required: true / false - description: 参数说明 - return: - type: 返回类型 - on_success: {{ "value": "...", "description": "..." }} 或 null(void) - on_failure: {{ "value": "...", "description": "..." }} 或 null(void) 只输出 JSON 对象,不要有任何额外说明。 """ CODE_GEN_PROMPT_TEMPLATE = """\ 你是一名资深 {language} 工程师,请根据以下函数签名和功能描述生成完整的函数实现代码。 【函数签名】 {signature_json} 【功能描述】 {description} {knowledge_section} 【输出要求】 1. 只输出 {language} 代码,不要有任何 Markdown 标记(不要 ```) 2. 包含完整的函数实现(含必要的 import) 3. 包含函数文档注释(docstring / JSDoc 等) 4. 包含基本的参数校验与错误处理 5. 代码风格遵循 {language} 最佳实践 """ MODULE_CLASSIFY_PROMPT_TEMPLATE = """\ 你是一名资深软件架构师,请将以下功能需求列表分类到合适的功能模块中。 【功能需求列表】 {requirements_json} 【输出要求】 以 JSON 数组格式输出,每个元素包含: - function_name: 函数名(与输入一致) - module: 所属模块名称(snake_case,如 user_auth / order_service / payment) 模块划分原则: 1. 功能相近的需求归入同一模块 2. 模块名使用英文 snake_case 3. 模块数量控制在 2~8 个之间 4. 若某需求确实无法归类,使用 "default" 模块 只输出 JSON 数组,不要有任何额外说明。 """