style: 移动

This commit is contained in:
2026-05-08 18:34:02 +08:00
parent 209ba45477
commit 2d8571dee3
29 changed files with 82 additions and 126 deletions
+2 -2
View File
@@ -18,11 +18,11 @@ from pretor.utils.ray_hook import ray_actor_hook
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
from pydantic import BaseModel from pydantic import BaseModel
from pretor.utils.access import Accessor, TokenData 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 fastapi import HTTPException
from typing import Optional, List, Dict from typing import Optional, List, Dict
from pretor.utils.check_user.role_check import RoleChecker 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"]) agent_router = APIRouter(prefix="/api/v1/agent", tags=["agent"])
+1 -1
View File
@@ -19,7 +19,7 @@ from pretor.utils.access import Accessor, TokenData
from fastapi.concurrency import run_in_threadpool from fastapi.concurrency import run_in_threadpool
from pretor.utils.ray_hook import ray_actor_hook from pretor.utils.ray_hook import ray_actor_hook
from pretor.utils.check_user.role_check import RoleChecker 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 from pretor.utils.error import UserNotExistError
auth_router = APIRouter(prefix="/api/v1/auth", tags=["auth"]) auth_router = APIRouter(prefix="/api/v1/auth", tags=["auth"])
+1 -1
View File
@@ -17,7 +17,7 @@ from pydantic import BaseModel
from typing import Literal from typing import Literal
from pretor.utils.access import TokenData, Accessor from pretor.utils.access import TokenData, Accessor
from pretor.utils.check_user.role_check import RoleChecker 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 typing import Dict
from pretor.core.global_state_machine.model_provider.base_provider import Provider from pretor.core.global_state_machine.model_provider.base_provider import Provider
from pretor.utils.ray_hook import ray_actor_hook from pretor.utils.ray_hook import ray_actor_hook
+1 -1
View File
@@ -18,7 +18,7 @@ from pretor.utils.ray_hook import ray_actor_hook
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
from pretor.utils.access import TokenData from pretor.utils.access import TokenData
from pretor.utils.check_user.role_check import RoleChecker 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") resource_router = APIRouter(prefix="/api/v1/resource")
-8
View File
@@ -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")
@@ -1,6 +1,6 @@
from sqlmodel import select from sqlmodel import select
from typing import List, Optional 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 from sqlalchemy.ext.asyncio import async_sessionmaker, AsyncSession
@@ -12,10 +12,10 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # 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 sqlmodel import select
from typing import List, Optional 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 from ulid import ULID
@@ -14,9 +14,9 @@
from typing import List 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 sqlmodel import select
from pretor.core.database.database_exception import database_exception from pretor.core.postgres_database.database_exception import database_exception
class ProviderDatabase: class ProviderDatabase:
@@ -12,10 +12,10 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # 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 sqlmodel import select
from typing import List, Optional 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: class SystemNodeDatabase:
@@ -12,11 +12,11 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # 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 sqlmodel import select
from pretor.utils.error import UserNotExistError, UserPasswordError from pretor.utils.error import UserNotExistError, UserPasswordError
from pretor.core.database.database_exception import database_exception from pretor.core.postgres_database.database_exception import database_exception
from pretor.core.database.table.user import UserAuthority from pretor.core.postgres_database.table.user import UserAuthority
from pretor.utils.access import Accessor from pretor.utils.access import Accessor
+5 -5
View File
@@ -20,11 +20,11 @@ from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from sqlmodel import SQLModel from sqlmodel import SQLModel
from pretor.core.database.module.individual import IndividualDatabase from .module.individual import IndividualDatabase
from pretor.core.database.module.event import EventDatabase from .module.event import EventDatabase
from pretor.core.database.module.user import AuthDatabase from .module.user import AuthDatabase
from pretor.core.database.module.provider import ProviderDatabase from .module.provider import ProviderDatabase
from pretor.core.database.module.system_node import SystemNodeDatabase from .module.system_node import SystemNodeDatabase
@ray.remote @ray.remote
@@ -12,8 +12,8 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from pretor.core.database.table.user import User from pretor.core.postgres_database.table.user import User
from pretor.core.database.table.provider import Provider from pretor.core.postgres_database.table.provider import Provider
from pretor.core.database.table.individual import WorkerIndividual from pretor.core.postgres_database.table.individual import WorkerIndividual
__all__ = ["User", "Provider", "WorkerIndividual"] __all__ = ["User", "Provider", "WorkerIndividual"]
@@ -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
@@ -12,3 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from sqlmodel import SQLModel, Field
class ChatHistory(SQLModel):
__tablename__ = "chat_history"
@@ -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")
+1 -1
View File
@@ -18,7 +18,7 @@ from datetime import datetime, timedelta, timezone
from typing import Optional from typing import Optional
from fastapi import HTTPException, status, Request from fastapi import HTTPException, status, Request
from pydantic import BaseModel, ValidationError 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 from pwdlib import PasswordHash
+1 -1
View File
@@ -14,7 +14,7 @@
from typing import Annotated from typing import Annotated
from fastapi import Depends, HTTPException from fastapi import Depends, HTTPException
from pretor.utils.access import Accessor, TokenData 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 from pretor.utils.ray_hook import ray_actor_hook
@@ -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"]
}
]
}
@@ -3,7 +3,7 @@ from unittest.mock import patch
from sqlalchemy.exc import IntegrityError, OperationalError from sqlalchemy.exc import IntegrityError, OperationalError
from pydantic import ValidationError from pydantic import ValidationError
from pretor.utils.error import UserNotExistError 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 @database_exception
+8 -8
View File
@@ -25,7 +25,7 @@ def mock_session_maker():
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_add_user(mock_session_maker, mock_dependencies): async def test_add_user(mock_session_maker, mock_dependencies):
mock_user_cls, _ = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -51,7 +51,7 @@ async def test_add_user(mock_session_maker, mock_dependencies):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_change_password_success(mock_session_maker, mock_dependencies): async def test_change_password_success(mock_session_maker, mock_dependencies):
mock_user_cls, mock_select = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -80,7 +80,7 @@ async def test_change_password_success(mock_session_maker, mock_dependencies):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_change_password_user_not_exist(mock_session_maker, mock_dependencies): async def test_change_password_user_not_exist(mock_session_maker, mock_dependencies):
mock_user_cls, mock_select = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -96,7 +96,7 @@ async def test_change_password_user_not_exist(mock_session_maker, mock_dependenc
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_change_password_wrong_password(mock_session_maker, mock_dependencies): async def test_change_password_wrong_password(mock_session_maker, mock_dependencies):
mock_user_cls, mock_select = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -118,7 +118,7 @@ async def test_change_password_wrong_password(mock_session_maker, mock_dependenc
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_delete_user_success(mock_session_maker, mock_dependencies): async def test_delete_user_success(mock_session_maker, mock_dependencies):
mock_user_cls, mock_select = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -140,7 +140,7 @@ async def test_delete_user_success(mock_session_maker, mock_dependencies):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_delete_user_not_exist(mock_session_maker, mock_dependencies): async def test_delete_user_not_exist(mock_session_maker, mock_dependencies):
mock_user_cls, mock_select = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -156,7 +156,7 @@ async def test_delete_user_not_exist(mock_session_maker, mock_dependencies):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_login_user_success(mock_session_maker, mock_dependencies): async def test_login_user_success(mock_session_maker, mock_dependencies):
mock_user_cls, mock_select = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -177,7 +177,7 @@ async def test_login_user_success(mock_session_maker, mock_dependencies):
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_login_user_not_exist(mock_session_maker, mock_dependencies): async def test_login_user_not_exist(mock_session_maker, mock_dependencies):
mock_user_cls, mock_select = 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 maker, session = mock_session_maker
db = AuthDatabase(maker) db = AuthDatabase(maker)
@@ -1,4 +1,4 @@
from pretor.core.database.table.provider import Provider from pretor.core.postgres_database.table import Provider
def test_provider_table(): def test_provider_table():
+1 -1
View File
@@ -1,4 +1,4 @@
from pretor.core.database.table.user import User from pretor.core.postgres_database.table import User
def test_user_table(): def test_user_table():