feat: build_test_script + mode=test
This commit is contained in:
+7
-1
@@ -16,7 +16,7 @@ from flask import jsonify, request
|
||||
from api.config import load
|
||||
from api.db import Database
|
||||
from api.parser import format_no_llm, parse_batch
|
||||
from api.scripts import build_default_script, build_full_script, build_script_for_level, build_dynamic_script
|
||||
from api.scripts import build_default_script, build_full_script, build_script_for_level, build_dynamic_script, build_test_script
|
||||
from brain.client import Diagnoser, LLMError
|
||||
from brain.prompts import SYSTEM_PROMPT, DYNAMIC_PROMPT
|
||||
|
||||
@@ -93,6 +93,12 @@ def register(app):
|
||||
script = build_default_script()
|
||||
elif mode == "dynamic":
|
||||
script = build_dynamic_script()
|
||||
elif mode == "test":
|
||||
wait = int(request.args.get("wait", 400))
|
||||
pid_str = request.args.get("pids", "")
|
||||
pids = pid_str.split(",") if pid_str else None
|
||||
repeat = int(request.args.get("repeat", 10))
|
||||
script = build_test_script(wait_ms=wait, pids=pids, repeat=repeat)
|
||||
elif mode == "full":
|
||||
script = build_full_script()
|
||||
else:
|
||||
|
||||
@@ -131,3 +131,42 @@ def build_dynamic_script() -> dict:
|
||||
{"id": "pid_1F", "cmd": "011F", "desc": "Время работы"},
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def build_test_script(wait_ms: int = 400, pids: list[str] | None = None, repeat: int = 10) -> dict:
|
||||
"""Тестовый скрипт для отладки таймингов ELM327.
|
||||
|
||||
Сервер управляет таймингами — можно менять wait_ms/pids/repeat без передеплоя APK.
|
||||
|
||||
Args:
|
||||
wait_ms: пауза ПЕРЕД каждой OBD-командой (ms)
|
||||
pids: список PID для опроса (по умолчанию 010C,0110,0106)
|
||||
repeat: сколько раз повторить цикл
|
||||
"""
|
||||
if pids is None:
|
||||
pids = ["010C", "0110", "0106"]
|
||||
|
||||
pid_names = {"010C": "RPM", "0110": "MAF", "0106": "STFT", "0105": "ОЖ",
|
||||
"0104": "Нагрузка", "0107": "LTFT", "0111": "Дроссель",
|
||||
"010D": "Скорость", "010B": "MAP", "010F": "IAT"}
|
||||
|
||||
steps = []
|
||||
# Статика — один проход по всем PID для калибровки
|
||||
for pid in pids:
|
||||
name = pid_names.get(pid, pid)
|
||||
steps.append({"id": f"static_{pid}", "cmd": pid, "desc": f"{name} (статик)", "wait": 0})
|
||||
|
||||
# Динамика — repeat циклов
|
||||
for cycle in range(repeat):
|
||||
for pid in pids:
|
||||
name = pid_names.get(pid, pid)
|
||||
steps.append({"id": f"dyn{cycle}_{pid}", "cmd": pid, "desc": f"{name}", "wait": wait_ms})
|
||||
|
||||
return {
|
||||
"version": 1,
|
||||
"mode": "test",
|
||||
"title": f"Тест: {len(pids)} PID × {repeat}, пауза {wait_ms}ms",
|
||||
"wait_ms": wait_ms,
|
||||
"repeat": repeat,
|
||||
"steps": steps,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user