From 2d8571dee38f85e0b2cf3afd4d2b2eca3ca12535 Mon Sep 17 00:00:00 2001 From: zhaoxi Date: Fri, 8 May 2026 18:34:02 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E7=A7=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pretor/api/agent.py | 4 +- pretor/api/auth.py | 2 +- pretor/api/provider.py | 2 +- pretor/api/resource.py | 2 +- pretor/core/database/table/event.py | 8 -- .../database_exception.py | 0 .../module}/__init__.py | 0 .../module/event.py | 2 +- .../module/individual.py | 4 +- .../module/provider.py | 4 +- .../module/system_node.py | 4 +- .../module/user.py | 6 +- pretor/core/postgres_database/postgres.py | 10 +-- .../table/__init__.py | 6 +- pretor/core/postgres_database/table/base.py | 19 +++++ .../table/chat_history.py} | 4 + pretor/core/postgres_database/table/event.py | 23 ++++++ .../table/individual.py | 0 .../table/memory.py | 0 .../table/provider.py | 0 .../table/system_node.py | 0 .../table/user.py | 0 pretor/utils/access.py | 2 +- pretor/utils/check_user/role_check.py | 2 +- .../programme_workflow_template.json | 82 ------------------- .../core/database/database_exception_test.py | 2 +- tests/core/database/module/user_test.py | 16 ++-- .../database/table/table_provider_test.py | 2 +- tests/core/database/table/table_user_test.py | 2 +- 29 files changed, 82 insertions(+), 126 deletions(-) delete mode 100644 pretor/core/database/table/event.py rename pretor/core/{database => postgres_database}/database_exception.py (100%) rename pretor/core/{database => postgres_database/module}/__init__.py (100%) rename pretor/core/{database => postgres_database}/module/event.py (96%) rename pretor/core/{database => postgres_database}/module/individual.py (97%) rename pretor/core/{database => postgres_database}/module/provider.py (96%) rename pretor/core/{database => postgres_database}/module/system_node.py (96%) rename pretor/core/{database => postgres_database}/module/user.py (97%) rename pretor/core/{database => postgres_database}/table/__init__.py (76%) create mode 100644 pretor/core/postgres_database/table/base.py rename pretor/core/{database/module/__init__.py => postgres_database/table/chat_history.py} (85%) create mode 100644 pretor/core/postgres_database/table/event.py rename pretor/core/{database => postgres_database}/table/individual.py (100%) rename pretor/core/{database => postgres_database}/table/memory.py (100%) rename pretor/core/{database => postgres_database}/table/provider.py (100%) rename pretor/core/{database => postgres_database}/table/system_node.py (100%) rename pretor/core/{database => postgres_database}/table/user.py (100%) delete mode 100644 pretor/workflow_template/programme_workflow_template.json diff --git a/pretor/api/agent.py b/pretor/api/agent.py index d8f7122..4997d22 100644 --- a/pretor/api/agent.py +++ b/pretor/api/agent.py @@ -18,11 +18,11 @@ from pretor.utils.ray_hook import ray_actor_hook from fastapi import APIRouter, Depends from pydantic import BaseModel from pretor.utils.access import Accessor, TokenData -from pretor.core.database.table.individual import AgentType +from pretor.core.postgres_database.table import AgentType from fastapi import HTTPException from typing import Optional, List, Dict from pretor.utils.check_user.role_check import RoleChecker -from pretor.core.database.table.user import UserAuthority +from pretor.core.postgres_database.table import UserAuthority agent_router = APIRouter(prefix="/api/v1/agent", tags=["agent"]) diff --git a/pretor/api/auth.py b/pretor/api/auth.py index 061538a..44fdba5 100644 --- a/pretor/api/auth.py +++ b/pretor/api/auth.py @@ -19,7 +19,7 @@ from pretor.utils.access import Accessor, TokenData from fastapi.concurrency import run_in_threadpool from pretor.utils.ray_hook import ray_actor_hook from pretor.utils.check_user.role_check import RoleChecker -from pretor.core.database.table.user import UserAuthority +from pretor.core.postgres_database.table import UserAuthority from pretor.utils.error import UserNotExistError auth_router = APIRouter(prefix="/api/v1/auth", tags=["auth"]) diff --git a/pretor/api/provider.py b/pretor/api/provider.py index 3c1e4cf..828c2ae 100644 --- a/pretor/api/provider.py +++ b/pretor/api/provider.py @@ -17,7 +17,7 @@ from pydantic import BaseModel from typing import Literal from pretor.utils.access import TokenData, Accessor from pretor.utils.check_user.role_check import RoleChecker -from pretor.core.database.table.user import UserAuthority +from pretor.core.postgres_database.table import UserAuthority from typing import Dict from pretor.core.global_state_machine.model_provider.base_provider import Provider from pretor.utils.ray_hook import ray_actor_hook diff --git a/pretor/api/resource.py b/pretor/api/resource.py index 02eaf52..a4f1656 100644 --- a/pretor/api/resource.py +++ b/pretor/api/resource.py @@ -18,7 +18,7 @@ from pretor.utils.ray_hook import ray_actor_hook from fastapi import APIRouter, Depends from pretor.utils.access import TokenData from pretor.utils.check_user.role_check import RoleChecker -from pretor.core.database.table.user import UserAuthority +from pretor.core.postgres_database.table import UserAuthority resource_router = APIRouter(prefix="/api/v1/resource") diff --git a/pretor/core/database/table/event.py b/pretor/core/database/table/event.py deleted file mode 100644 index f91d369..0000000 --- a/pretor/core/database/table/event.py +++ /dev/null @@ -1,8 +0,0 @@ -from sqlmodel import SQLModel, Field - - -class EventRecord(SQLModel, table=True): - trace_id: str = Field( - primary_key=True, description="The unique trace ID of the PretorEvent" - ) - event_data_json: str = Field(description="The JSON serialized PretorEvent data") diff --git a/pretor/core/database/database_exception.py b/pretor/core/postgres_database/database_exception.py similarity index 100% rename from pretor/core/database/database_exception.py rename to pretor/core/postgres_database/database_exception.py diff --git a/pretor/core/database/__init__.py b/pretor/core/postgres_database/module/__init__.py similarity index 100% rename from pretor/core/database/__init__.py rename to pretor/core/postgres_database/module/__init__.py diff --git a/pretor/core/database/module/event.py b/pretor/core/postgres_database/module/event.py similarity index 96% rename from pretor/core/database/module/event.py rename to pretor/core/postgres_database/module/event.py index a258288..f0edb14 100644 --- a/pretor/core/database/module/event.py +++ b/pretor/core/postgres_database/module/event.py @@ -1,6 +1,6 @@ from sqlmodel import select from typing import List, Optional -from pretor.core.database.table.event import EventRecord +from pretor.core.postgres_database.table.event import EventRecord from sqlalchemy.ext.asyncio import async_sessionmaker, AsyncSession diff --git a/pretor/core/database/module/individual.py b/pretor/core/postgres_database/module/individual.py similarity index 97% rename from pretor/core/database/module/individual.py rename to pretor/core/postgres_database/module/individual.py index 57288d8..3a89606 100644 --- a/pretor/core/database/module/individual.py +++ b/pretor/core/postgres_database/module/individual.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from pretor.core.database.table.individual import WorkerIndividual +from pretor.core.postgres_database.table.individual import WorkerIndividual from sqlmodel import select from typing import List, Optional -from pretor.core.database.database_exception import database_exception +from pretor.core.postgres_database.database_exception import database_exception from ulid import ULID diff --git a/pretor/core/database/module/provider.py b/pretor/core/postgres_database/module/provider.py similarity index 96% rename from pretor/core/database/module/provider.py rename to pretor/core/postgres_database/module/provider.py index 01331af..a2de9c3 100644 --- a/pretor/core/database/module/provider.py +++ b/pretor/core/postgres_database/module/provider.py @@ -14,9 +14,9 @@ from typing import List -from pretor.core.database.table.provider import Provider +from pretor.core.postgres_database.table.provider import Provider from sqlmodel import select -from pretor.core.database.database_exception import database_exception +from pretor.core.postgres_database.database_exception import database_exception class ProviderDatabase: diff --git a/pretor/core/database/module/system_node.py b/pretor/core/postgres_database/module/system_node.py similarity index 96% rename from pretor/core/database/module/system_node.py rename to pretor/core/postgres_database/module/system_node.py index 50d43a0..f6f0350 100644 --- a/pretor/core/database/module/system_node.py +++ b/pretor/core/postgres_database/module/system_node.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from pretor.core.database.table.system_node import SystemNodeConfig +from pretor.core.postgres_database.table.system_node import SystemNodeConfig from sqlmodel import select from typing import List, Optional -from pretor.core.database.database_exception import database_exception +from pretor.core.postgres_database.database_exception import database_exception class SystemNodeDatabase: diff --git a/pretor/core/database/module/user.py b/pretor/core/postgres_database/module/user.py similarity index 97% rename from pretor/core/database/module/user.py rename to pretor/core/postgres_database/module/user.py index 3f98c13..aef7076 100644 --- a/pretor/core/database/module/user.py +++ b/pretor/core/postgres_database/module/user.py @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from pretor.core.database.table.user import User +from pretor.core.postgres_database.table.user import User from sqlmodel import select from pretor.utils.error import UserNotExistError, UserPasswordError -from pretor.core.database.database_exception import database_exception -from pretor.core.database.table.user import UserAuthority +from pretor.core.postgres_database.database_exception import database_exception +from pretor.core.postgres_database.table.user import UserAuthority from pretor.utils.access import Accessor diff --git a/pretor/core/postgres_database/postgres.py b/pretor/core/postgres_database/postgres.py index baa962a..994cf36 100644 --- a/pretor/core/postgres_database/postgres.py +++ b/pretor/core/postgres_database/postgres.py @@ -20,11 +20,11 @@ from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker from sqlmodel import SQLModel -from pretor.core.database.module.individual import IndividualDatabase -from pretor.core.database.module.event import EventDatabase -from pretor.core.database.module.user import AuthDatabase -from pretor.core.database.module.provider import ProviderDatabase -from pretor.core.database.module.system_node import SystemNodeDatabase +from .module.individual import IndividualDatabase +from .module.event import EventDatabase +from .module.user import AuthDatabase +from .module.provider import ProviderDatabase +from .module.system_node import SystemNodeDatabase @ray.remote diff --git a/pretor/core/database/table/__init__.py b/pretor/core/postgres_database/table/__init__.py similarity index 76% rename from pretor/core/database/table/__init__.py rename to pretor/core/postgres_database/table/__init__.py index 9f6eda0..d0220e0 100644 --- a/pretor/core/database/table/__init__.py +++ b/pretor/core/postgres_database/table/__init__.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from pretor.core.database.table.user import User -from pretor.core.database.table.provider import Provider -from pretor.core.database.table.individual import WorkerIndividual +from pretor.core.postgres_database.table.user import User +from pretor.core.postgres_database.table.provider import Provider +from pretor.core.postgres_database.table.individual import WorkerIndividual __all__ = ["User", "Provider", "WorkerIndividual"] diff --git a/pretor/core/postgres_database/table/base.py b/pretor/core/postgres_database/table/base.py new file mode 100644 index 0000000..e364561 --- /dev/null +++ b/pretor/core/postgres_database/table/base.py @@ -0,0 +1,19 @@ +# Copyright 2026 zhaoxi826 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from sqlalchemy.ext.asyncio import AsyncAttrs +from sqlalchemy.orm import DeclarativeBase + +class BaseDataModel(DeclarativeBase, AsyncAttrs): + pass \ No newline at end of file diff --git a/pretor/core/database/module/__init__.py b/pretor/core/postgres_database/table/chat_history.py similarity index 85% rename from pretor/core/database/module/__init__.py rename to pretor/core/postgres_database/table/chat_history.py index 5fa7362..1f22f88 100644 --- a/pretor/core/database/module/__init__.py +++ b/pretor/core/postgres_database/table/chat_history.py @@ -12,3 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +from sqlmodel import SQLModel, Field + +class ChatHistory(SQLModel): + __tablename__ = "chat_history" \ No newline at end of file diff --git a/pretor/core/postgres_database/table/event.py b/pretor/core/postgres_database/table/event.py new file mode 100644 index 0000000..1656b31 --- /dev/null +++ b/pretor/core/postgres_database/table/event.py @@ -0,0 +1,23 @@ +# Copyright 2026 zhaoxi826 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from sqlmodel import SQLModel, Field + + +class EventRecord(SQLModel, table=True): + trace_id: str = Field( + primary_key=True, description="The unique trace ID of the PretorEvent" + ) + event_data_json: str = Field(description="The JSON serialized PretorEvent data") diff --git a/pretor/core/database/table/individual.py b/pretor/core/postgres_database/table/individual.py similarity index 100% rename from pretor/core/database/table/individual.py rename to pretor/core/postgres_database/table/individual.py diff --git a/pretor/core/database/table/memory.py b/pretor/core/postgres_database/table/memory.py similarity index 100% rename from pretor/core/database/table/memory.py rename to pretor/core/postgres_database/table/memory.py diff --git a/pretor/core/database/table/provider.py b/pretor/core/postgres_database/table/provider.py similarity index 100% rename from pretor/core/database/table/provider.py rename to pretor/core/postgres_database/table/provider.py diff --git a/pretor/core/database/table/system_node.py b/pretor/core/postgres_database/table/system_node.py similarity index 100% rename from pretor/core/database/table/system_node.py rename to pretor/core/postgres_database/table/system_node.py diff --git a/pretor/core/database/table/user.py b/pretor/core/postgres_database/table/user.py similarity index 100% rename from pretor/core/database/table/user.py rename to pretor/core/postgres_database/table/user.py diff --git a/pretor/utils/access.py b/pretor/utils/access.py index 7f5799f..35bc65a 100644 --- a/pretor/utils/access.py +++ b/pretor/utils/access.py @@ -18,7 +18,7 @@ from datetime import datetime, timedelta, timezone from typing import Optional from fastapi import HTTPException, status, Request from pydantic import BaseModel, ValidationError -from pretor.core.database.table.user import User +from pretor.core.postgres_database.table import User from pwdlib import PasswordHash diff --git a/pretor/utils/check_user/role_check.py b/pretor/utils/check_user/role_check.py index 630f279..7f70803 100644 --- a/pretor/utils/check_user/role_check.py +++ b/pretor/utils/check_user/role_check.py @@ -14,7 +14,7 @@ from typing import Annotated from fastapi import Depends, HTTPException from pretor.utils.access import Accessor, TokenData -from pretor.core.database.table.user import UserAuthority +from pretor.core.postgres_database.table import UserAuthority from pretor.utils.ray_hook import ray_actor_hook diff --git a/pretor/workflow_template/programme_workflow_template.json b/pretor/workflow_template/programme_workflow_template.json deleted file mode 100644 index 973d52c..0000000 --- a/pretor/workflow_template/programme_workflow_template.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "programme", - "desc": "一个示范型的编程工作流", - "work_link": [ - { - "step": 1, - "node": "consciousness_node", - "action": "architect", - "desc": "【人类规范】分析用户需求,构建程序整体架构,定义需要拉起的子个体名称与数量。" - }, - { - "step": 2, - "node": "control_node", - "action": "spawn_actors", - "desc": "【人类规范】根据架构要求,拉起对应的开发与测试工作组,并挂载 /workspace 目录。" - }, - { - "step": 3, - "node": "composite_individual", - "action": "decompose", - "desc": "【人类规范】将整体架构拆解为可独立执行的原子任务包 (Task Packets)。", - "output": "task_packets" - }, - { - "step": 4, - "node": "primary_individual", - "action": "execute_code", - "desc": "【人类规范】执行编码任务,必须确保所有代码写入指定的挂载目录。", - "input": "task_packets", - "output": "source_code" - }, - { - "step": 5, - "node": "composite_individual", - "action": "audit", - "desc": "【人类规范】对产出的源码进行静态逻辑检查与 PEP8 代码规范审计。", - "input": "source_code", - "output": "audit_report" - }, - { - "step": 6, - "node": "control_node", - "action": "resource_recycle", - "desc": "【安全规范】暂存当前编码子个体的状态,释放非必要显存,为测试环境腾出算力。", - "input": "audit_report" - }, - { - "step": 7, - "node": "consciousness_node", - "action": "design_test", - "desc": "【人类规范】基于源码设计测试用例架构,覆盖边缘场景。", - "input": "source_code", - "output": "test_spec" - }, - { - "step": 8, - "node": "primary_individual", - "action": "run_test", - "desc": "【人类规范】在独立的 Docker 沙箱中运行 test,并生成结构化的实验报告。", - "input": "test_spec", - "output": "test_report" - }, - { - "step": 9, - "node": "consciousness_node", - "action": "analyze_report", - "desc": "【逻辑网关】研究测试报告。如果存在 Error 或 Fail,必须触发逻辑跳转,重写代码。", - "input": "test_report", - "logic_gate": { - "if_fail": "jump_to_step_4", - "if_pass": "continue" - } - }, - { - "step": 10, - "node": "supervisory_node", - "action": "terminate_workflow", - "desc": "【系统规范】核对所有产出物,关闭工作流管道,向宿主机发送 .done 信号。", - "input": ["source_code", "test_report"] - } - ] -} \ No newline at end of file diff --git a/tests/core/database/database_exception_test.py b/tests/core/database/database_exception_test.py index 8dd1ce3..33ee330 100644 --- a/tests/core/database/database_exception_test.py +++ b/tests/core/database/database_exception_test.py @@ -3,7 +3,7 @@ from unittest.mock import patch from sqlalchemy.exc import IntegrityError, OperationalError from pydantic import ValidationError from pretor.utils.error import UserNotExistError -from pretor.core.database.database_exception import database_exception +from pretor.core.postgres_database import database_exception @database_exception diff --git a/tests/core/database/module/user_test.py b/tests/core/database/module/user_test.py index 1e9fca1..1d6bafe 100644 --- a/tests/core/database/module/user_test.py +++ b/tests/core/database/module/user_test.py @@ -25,7 +25,7 @@ def mock_session_maker(): @pytest.mark.asyncio async def test_add_user(mock_session_maker, mock_dependencies): mock_user_cls, _ = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) @@ -51,7 +51,7 @@ async def test_add_user(mock_session_maker, mock_dependencies): @pytest.mark.asyncio async def test_change_password_success(mock_session_maker, mock_dependencies): mock_user_cls, mock_select = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) @@ -80,7 +80,7 @@ async def test_change_password_success(mock_session_maker, mock_dependencies): @pytest.mark.asyncio async def test_change_password_user_not_exist(mock_session_maker, mock_dependencies): mock_user_cls, mock_select = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) @@ -96,7 +96,7 @@ async def test_change_password_user_not_exist(mock_session_maker, mock_dependenc @pytest.mark.asyncio async def test_change_password_wrong_password(mock_session_maker, mock_dependencies): mock_user_cls, mock_select = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) @@ -118,7 +118,7 @@ async def test_change_password_wrong_password(mock_session_maker, mock_dependenc @pytest.mark.asyncio async def test_delete_user_success(mock_session_maker, mock_dependencies): mock_user_cls, mock_select = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) @@ -140,7 +140,7 @@ async def test_delete_user_success(mock_session_maker, mock_dependencies): @pytest.mark.asyncio async def test_delete_user_not_exist(mock_session_maker, mock_dependencies): mock_user_cls, mock_select = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) @@ -156,7 +156,7 @@ async def test_delete_user_not_exist(mock_session_maker, mock_dependencies): @pytest.mark.asyncio async def test_login_user_success(mock_session_maker, mock_dependencies): mock_user_cls, mock_select = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) @@ -177,7 +177,7 @@ async def test_login_user_success(mock_session_maker, mock_dependencies): @pytest.mark.asyncio async def test_login_user_not_exist(mock_session_maker, mock_dependencies): mock_user_cls, mock_select = mock_dependencies - from pretor.core.database.module.user import AuthDatabase + from pretor.core.postgres_database.module import AuthDatabase maker, session = mock_session_maker db = AuthDatabase(maker) diff --git a/tests/core/database/table/table_provider_test.py b/tests/core/database/table/table_provider_test.py index 060e7e6..1fc4e60 100644 --- a/tests/core/database/table/table_provider_test.py +++ b/tests/core/database/table/table_provider_test.py @@ -1,4 +1,4 @@ -from pretor.core.database.table.provider import Provider +from pretor.core.postgres_database.table import Provider def test_provider_table(): diff --git a/tests/core/database/table/table_user_test.py b/tests/core/database/table/table_user_test.py index ef700c0..daa27d1 100644 --- a/tests/core/database/table/table_user_test.py +++ b/tests/core/database/table/table_user_test.py @@ -1,4 +1,4 @@ -from pretor.core.database.table.user import User +from pretor.core.postgres_database.table import User def test_user_table():