chore: add smoke checks and refactor notes
This commit is contained in:
parent
dcba8d9d76
commit
5c92f93e8c
@ -39,6 +39,11 @@
|
|||||||
- **static/**:Vue + Socket.IO 单页应用;`chat/monitor` 为虚拟显示器动画层。
|
- **static/**:Vue + Socket.IO 单页应用;`chat/monitor` 为虚拟显示器动画层。
|
||||||
- **docker/**:终端镜像 Dockerfile 及工具容器依赖清单。
|
- **docker/**:终端镜像 Dockerfile 及工具容器依赖清单。
|
||||||
|
|
||||||
|
重构后的主链路分层(2026-03):
|
||||||
|
- `core/main_terminal.py` + `core/main_terminal_parts/`(主终端入口 + 功能 mixin)
|
||||||
|
- `server/chat_flow.py` + `server/chat_flow_runner.py` + `server/chat_flow_helpers.py`
|
||||||
|
- `server/conversation.py` + `server/conversation_stats.py`
|
||||||
|
|
||||||
更多目录说明请查阅 `tree -L 2` 或仓库内注释。
|
更多目录说明请查阅 `tree -L 2` 或仓库内注释。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
# Legacy segmented snapshot: active implementation lives in
|
||||||
|
# `server/conversation.py`, `server/chat_flow.py`, and `server/conversation_stats.py`.
|
||||||
@app.route('/api/conversations', methods=['GET'])
|
@app.route('/api/conversations', methods=['GET'])
|
||||||
@api_login_required
|
@api_login_required
|
||||||
@with_terminal
|
@with_terminal
|
||||||
|
|||||||
56
test/test_server_refactor_smoke.py
Normal file
56
test/test_server_refactor_smoke.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from types import SimpleNamespace
|
||||||
|
|
||||||
|
|
||||||
|
class ServerRefactorSmokeTest(unittest.TestCase):
|
||||||
|
def test_chat_flow_imports_and_runner_binding(self):
|
||||||
|
import server.chat_flow as chat_flow
|
||||||
|
import server.chat_flow_runner as runner
|
||||||
|
|
||||||
|
self.assertIs(chat_flow.handle_task_with_sender, runner.handle_task_with_sender)
|
||||||
|
self.assertTrue(callable(chat_flow.start_chat_task))
|
||||||
|
self.assertTrue(callable(chat_flow.run_chat_task_sync))
|
||||||
|
|
||||||
|
def test_chat_flow_helper_functions(self):
|
||||||
|
import server.chat_flow_helpers as helpers
|
||||||
|
|
||||||
|
terminal = SimpleNamespace(
|
||||||
|
deep_thinking_mode=False,
|
||||||
|
thinking_mode=True,
|
||||||
|
api_client=SimpleNamespace(
|
||||||
|
force_thinking_next_call=False,
|
||||||
|
skip_thinking_next_call=False,
|
||||||
|
last_call_used_thinking=False,
|
||||||
|
),
|
||||||
|
thinking_fast_interval=2,
|
||||||
|
)
|
||||||
|
|
||||||
|
helpers.apply_thinking_schedule(terminal, default_interval=2, debug_logger=lambda _: None)
|
||||||
|
helpers.update_thinking_after_call(terminal, debug_logger=lambda _: None)
|
||||||
|
state = helpers.get_thinking_state(terminal)
|
||||||
|
|
||||||
|
self.assertIsInstance(state, dict)
|
||||||
|
self.assertIn("fast_streak", state)
|
||||||
|
self.assertTrue(helpers.detect_tool_failure({"success": False}))
|
||||||
|
self.assertFalse(helpers.detect_tool_failure({"success": True}))
|
||||||
|
|
||||||
|
def test_runner_helpers_pure_functions(self):
|
||||||
|
import server.chat_flow_runner_helpers as helpers
|
||||||
|
|
||||||
|
self.assertEqual(helpers.extract_intent_from_partial('{"intent": "fix"}'), "fix")
|
||||||
|
self.assertEqual(helpers.resolve_monitor_path({"file_path": " a.txt "}), "a.txt")
|
||||||
|
self.assertEqual(helpers.resolve_monitor_memory([1, 2, 3], entry_limit=2), ["1", "2"])
|
||||||
|
|
||||||
|
def test_conversation_stats_exports(self):
|
||||||
|
import server.conversation as conversation
|
||||||
|
import server.conversation_stats as stats
|
||||||
|
|
||||||
|
self.assertTrue(callable(stats.build_admin_dashboard_snapshot))
|
||||||
|
self.assertTrue(callable(conversation.compute_workspace_storage))
|
||||||
|
self.assertTrue(callable(conversation.collect_upload_events))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
||||||
Loading…
Reference in New Issue
Block a user