Files
portal/tools/router-test-prompts.json
T
Дмитрий 7ed72a09f7 feat(router): 20-prompt accuracy runner — Phase A baseline (stage 3 task 5)
Ground truth: tools/router-test-prompts.json (20 промптов).
Runner: tools/router-accuracy-runner.mjs.

Baseline accuracy regex-only (Layer 1, без ANTHROPIC_API_KEY):
type=55.0%, node=55.0%, micro=95.0%.

Overall score: (11+11+19)/(60) = 68.3% — ниже порога 75%.

Систематические разрывы (наблюдения, не фиксы):
1. «опечатка/поправь» → bugfix ожидается, regex не ловит «поправь»
2. «составь email-рассылку» → marketing ожидается, regex не ловит «составь»
3. «проверь ... перед выходом» → #73 go-live ожидается, но #68 ZAP
   перебивает (оба security-узлы, ZAP имеет «проникновение» ≠ «выход»
   — weight tie-breaker в пользу первого найденного узла)
4. domain-узлы (#62, #71, #72) матчат правильно, но taskType не детектится
   («проверь ПДн» → type=unknown, node=#71 верно)
5. «запусти Pest тесты» → type=unknown (нет «баг/fix» в промпте)
6. «удали мёртвый код» → node=#3 (GitHub MCP матчит «issues» в тексте?)

NB: Layer 2 (Sonnet) подняла бы node-accuracy на спорных доменных
промптах — отложена до получения ключа (вариант 2).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 10:40:20 +03:00

27 lines
3.2 KiB
JSON

{
"$schema_version": 1,
"description": "Ground truth для классификатора. Stage 3 acceptance: ≥75% точности на этом наборе.",
"prompts": [
{"text": "сделай фичу — карточка тенанта показывает баланс в копейках", "expectedType": "feature", "expectedNode": "#19", "expectedMicro": false},
{"text": "напиши план рефакторинга AdminTenantsController", "expectedType": "planning", "expectedNode": "#19", "expectedMicro": false},
{"text": "почини двойное списание лида у клиента id=7", "expectedType": "bugfix", "expectedNode": "#62", "expectedMicro": false},
{"text": "составь email-рассылку для тарифа Бизнес", "expectedType": "marketing", "expectedNode": "#74", "expectedMicro": false},
{"text": "проверь безопасность портала перед выходом в интернет", "expectedType": "security", "expectedNode": "#73", "expectedMicro": false},
{"text": "опечатка в imports.ts — поправь", "expectedType": "bugfix", "expectedNode": null, "expectedMicro": true},
{"text": "переименуй функцию calc в computeBalance", "expectedType": "unknown", "expectedNode": null, "expectedMicro": true},
{"text": "удали мёртвый код из ProjectService", "expectedType": "cleanup", "expectedNode": null, "expectedMicro": true},
{"text": "формат-проход pint по app/", "expectedType": "refactor", "expectedNode": "#11", "expectedMicro": true},
{"text": "что такое RLS в постгресе?", "expectedType": "question", "expectedNode": null, "expectedMicro": false},
{"text": "обнови память по этапу 3", "expectedType": "memory-sync", "expectedNode": null, "expectedMicro": false},
{"text": "проверь что таблица lead_charges имеет правильный индекс по tenant_id", "expectedType": "analysis", "expectedNode": "#62", "expectedMicro": false},
{"text": "проанализируй медленный запрос /api/deals", "expectedType": "analysis", "expectedNode": null, "expectedMicro": false},
{"text": "напиши STRIDE для админ-зоны", "expectedType": "security", "expectedNode": "#72", "expectedMicro": false},
{"text": "проверь ПДн в выгрузках CSV", "expectedType": "security", "expectedNode": "#71", "expectedMicro": false},
{"text": "поставь postiz и подключи vk", "expectedType": "marketing", "expectedNode": "#81", "expectedMicro": false},
{"text": "запусти Pest тесты", "expectedType": "bugfix", "expectedNode": "#18", "expectedMicro": false},
{"text": "увеличь max-tokens в config", "expectedType": "unknown", "expectedNode": null, "expectedMicro": true},
{"text": "сделай мониторинг для очередей через Sentry", "expectedType": "monitoring", "expectedNode": "#34", "expectedMicro": false},
{"text": "разбери почему билы упали в pipeline", "expectedType": "bugfix", "expectedNode": null, "expectedMicro": false}
]
}