source optimization

This commit is contained in:
sontolau 2026-03-06 22:25:18 +08:00
parent 09db08af78
commit b5b59cb40a
7 changed files with 19 additions and 19 deletions

View File

@ -4,7 +4,7 @@ import json
from pathlib import Path
from typing import List, Optional, Callable
from gui_ai_developer import config
import config
from core.llm_client import LLMClient
from database.models import FunctionalRequirement, CodeFile

View File

@ -4,7 +4,7 @@ import json
from openai import OpenAI, APIError, APITimeoutError, RateLimitError
from gui_ai_developer import config
import config
class LLMClient:

View File

@ -1,8 +1,7 @@
# core/requirement_analyzer.py - 需求分解、模块分类、函数签名生成
import json
from typing import List, Optional, Callable
from gui_ai_developer import config
import config
from core.llm_client import LLMClient
from database.models import FunctionalRequirement, ChangeHistory
from database.db_manager import DBManager

View File

@ -5,7 +5,7 @@ from typing import List, Optional
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, Session
from gui_ai_developer import config
import config
from database.models import Base, Project, RawRequirement, FunctionalRequirement, CodeFile, ChangeHistory

View File

@ -1,4 +1,6 @@
#!/usr/bin/env python3
# encoding: utf-8
# main.py - 主入口:支持交互式 & 非交互式两种运行模式
import os
import sys
@ -561,7 +563,7 @@ def step_generate_code(
func_name_to_url: {函数名: 代码文件绝对路径}
"""
console.print(
"\n[bold]Step 6B · 生成代码文件[/bold]"
"\n[bold]【生成代码文件】[/bold]"
+ (" [dim](非交互)[/dim]" if non_interactive else ""),
style="blue",
)
@ -615,8 +617,7 @@ def step_generate_code(
console.print(Panel(
f"[bold green]✅ 代码生成完成![/bold green]\n"
f"成功: {success_count} 失败: {fail_count}\n"
f"输出目录: [cyan]{os.path.abspath(output_dir)}[/cyan]\n"
f"签名文件: [cyan]{os.path.abspath(json_path)}[/cyan]",
f"输出目录: [cyan]{os.path.abspath(output_dir)}[/cyan]\n",
border_style="green",
))
return func_name_to_url
@ -635,7 +636,7 @@ def step_patch_signatures_url(
non_interactive: bool = False,
) -> str:
console.print(
"\n[bold]Step 6C · 回写代码路径url到签名 JSON[/bold]"
"\n[bold]【回写代码路径url到签名 JSON】[/bold]"
+ (" [dim](非交互)[/dim]" if non_interactive else ""),
style="blue",
)
@ -685,7 +686,6 @@ def list_projects():
def print_project_details(project_id = None, non_interactive: bool = False):
"""打印项目详细信息"""
console.print("\n[bold]Step 3 · 查询项目[/bold]", style="blue")
if project_id is None and non_interactive:
return
if project_id is None:
@ -717,7 +717,6 @@ def print_project_details(project_id = None, non_interactive: bool = False):
# ══════════════════════════════════════════════════════
def step_delete_project(project_id = None, non_interactive: bool = False):
console.print("\n[bold]Step 3 · 删除项目[/bold]", style="blue")
if project_id is None and non_interactive:
return
@ -740,12 +739,11 @@ def step_change_requirements(
project_id = None,
non_interactive: bool = False,
) -> List[FunctionalRequirement]:
console.print("\n[bold]Step 4 · 变更需求[/bold]", style="blue")
if project_id is None and non_interactive:
return []
if project_id is None:
project_id = Prompt.ask("请输入要删除的项目 ID", default=None)
project_id = Prompt.ask("请输入要变更的项目 ID", default=None)
project = db.get_project_by_id(int(project_id))
func_reqs = db.list_functional_requirements(project.id)
@ -996,9 +994,9 @@ class ProjectManager:
step_delete_project(project_id)
def view_current_project_info(self):
def view_current_project_info(self, project_id=None):
"""查看当前项目信息"""
print_project_details()
print_project_details(project_id=project_id)
def change_current_project_requirements(self):
"""变更当前项目需求"""
@ -1042,6 +1040,10 @@ def main():
manager.delete_project()
manager.list_projects()
elif command == 'view':
try:
_, project_id = command.split(maxsplit=1)
manager.view_current_project_info(project_id)
except:
manager.view_current_project_info()
elif command.startswith('change'):
manager.change_current_project_requirements()

2
requirements_generator/run.sh Normal file → Executable file
View File

@ -8,4 +8,4 @@ export OPENAI_API_KEY="sk-AUmOuFI731Ty5Nob38jY26d8lydfDT-QkE2giqb0sCuPCAE2JH6zjL
export OPENAI_BASE_URL="https://openapi.monica.im/v1" # 或其他兼容接口
export LLM_MODEL="gpt-4o"
python main.py
python main.py $@

View File

@ -3,8 +3,7 @@ import os
import json
from pathlib import Path
from typing import Dict, List
from gui_ai_developer import config
import config
VALID_TYPES = {
"integer", "string", "boolean", "float",