feat: 添加任务历史记录、持久化会话、WebSocket支持和数据持久化功能

This commit is contained in:
2026-03-10 18:58:03 +08:00
parent f56ba5559d
commit 7fdd31b07b
22 changed files with 2006 additions and 4 deletions

70
tests/test_history.py Normal file
View File

@@ -0,0 +1,70 @@
import pytest
from datetime import datetime
from app.models.session import SessionType, TaskStatus, Task
from app.services.history import HistoryService, history_service
class TestHistoryService:
@pytest.fixture(autouse=True)
def setup(self, mock_settings, monkeypatch):
from app.services import storage
self.storage = storage.storage
self.history = history_service
self.history._history = []
def test_add_task_history(self):
task = Task(
id="task-1",
type=SessionType.EPHEMERAL,
prompt="test prompt",
status=TaskStatus.COMPLETED,
created_at=datetime.now(),
finished_at=datetime.now()
)
self.history.add_task_history(task)
assert len(self.history._history) == 1
assert self.history._history[0]["id"] == "task-1"
def test_get_history(self):
for i in range(5):
task = Task(
id=f"task-{i}",
type=SessionType.EPHEMERAL,
prompt=f"prompt {i}",
status=TaskStatus.COMPLETED,
created_at=datetime.now()
)
self.history.add_task_history(task)
history = self.history.get_history()
assert len(history) == 5
def test_get_history_with_limit(self):
for i in range(10):
task = Task(
id=f"task-{i}",
type=SessionType.EPHEMERAL,
prompt=f"prompt {i}",
status=TaskStatus.COMPLETED,
created_at=datetime.now()
)
self.history.add_task_history(task)
history = self.history.get_history(limit=3)
assert len(history) == 3
def test_clear_history(self):
task = Task(
id="task-1",
type=SessionType.EPHEMERAL,
prompt="test",
status=TaskStatus.COMPLETED,
created_at=datetime.now()
)
self.history.add_task_history(task)
self.history.clear_history()
assert len(self.history._history) == 0