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 pathlib import Path
from typing import List, Optional, Callable from typing import List, Optional, Callable
from gui_ai_developer import config import config
from core.llm_client import LLMClient from core.llm_client import LLMClient
from database.models import FunctionalRequirement, CodeFile from database.models import FunctionalRequirement, CodeFile

View File

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

View File

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

View File

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

View File

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

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 OPENAI_BASE_URL="https://openapi.monica.im/v1" # 或其他兼容接口
export LLM_MODEL="gpt-4o" export LLM_MODEL="gpt-4o"
python main.py python main.py $@

View File

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