Prompt Slicing Service Spec
- 1. Назначение и граница сервиса
- 2. Потребители и зависимости
- 3. Методы и точки вызова
- 4. Входной контракт
- 5. Выходной контракт
- 6. Правила доменного контракта
- 7. Иерархия источников и prompt policy
- 8. Ошибки и retry policy
- 9. Routing и quality gates
- 10. Edge cases и fallback behavior
- 11. Связанные документы
1. Назначение и граница сервиса
Назначение функции:
-
разложить source prompt на набор block suggestions;
-
поддержать update mode с preservation hints;
-
не публиковать результат автоматически;
-
вернуть batch, пригодный для review и publish-all workflow.
Потребители:
-
GUI slicing workflow;
-
composition update workflow.
Не-цели:
-
direct persistence без review;
-
deterministic parser для любого произвольного формата;
-
implicit migration без участия пользователя.
2. Потребители и зависимости
Потребители:
-
BlockSliceViewModel -
composition update workflow
Зависимости:
-
IBlockGenerator -
provider API
-
engine batch generation
-
workflow-level validation
3. Методы и точки вызова
Основные методы:
-
Engine.GenerateBlockBatchData(const PromptSlicingRequest&) -
Engine.GenerateBlockDrafts(const PromptSlicingRequest&)
Связанный локальный fast path:
-
deterministic parse tagged sections в
BlockSliceViewModel
Он не является отдельным engine API, но является важной частью фактического поведения функции.
4. Входной контракт
Основная структура входа: PromptSlicingRequest
Обязательные поля:
-
source_text
Необязательные поля:
-
preferred_language -
namespace_prefix -
existing_block_ids -
reusable_block_ids -
reusable_block_summaries -
preserve_reuse_percent -
preserve_order -
allow_id_collision
Семантика ключевых полей:
-
source_textИсходный prompt, который нужно декомпозировать. -
namespace_prefixПодсказка для формируемых block ids. -
existing_block_idsСписок id, которых нужно избегать. -
reusable_block_idsСписок id, которые можно переиспользовать в update mode. -
reusable_block_summariesКраткий контекст существующей структуры для стабилизации update mode. -
preserve_reuse_percentЖелаемая сила сохранения существующей структуры. -
preserve_orderПодсказка не перестраивать порядок блоков без необходимости.
5. Выходной контракт
Основные выходы:
-
GeneratedBlockBatch -
std::vector<BlockDraft> -
GUI-local preview text derived from generated batch
Семантика:
-
GeneratedBlockBatchОсновной batch suggestion для review и возможной публикации. -
std::vector<BlockDraft>Draft-представление того же результата. -
preview text Локальный вспомогательный UI-артефакт, не являющийся persisted contract.
6. Правила доменного контракта
Функция обязана соблюдать следующие правила:
-
generated ids должны быть уникальны;
-
batch должен быть пригоден к review before publish;
-
collisions with existing ids должны быть явными ошибками;
-
reuse existing ids допускается только в явно разрешённом update mode;
-
empty batch считается ошибкой;
-
отсутствие AI не отменяет deterministic fast path для tagged sections.
7. Иерархия источников и prompt policy
Приоритеты источников:
-
source prompt - первичный артефакт;
-
в update mode добавляется контекст текущей composition structure;
-
provider-specific prompt policy живёт в generator implementation;
-
workflow-level preservation heuristics применяются после AI response.
8. Ошибки и retry policy
Ошибки, которые должны доходить до вызывающего слоя:
-
provider errors;
-
transport errors;
-
parsing errors;
-
duplicate id errors;
-
validation failures;
-
empty source prompt;
-
empty generated batch.
Политика retry:
-
retry - на уровне transport/provider;
-
persistence retry отсутствует, потому что publish выполняется отдельно.
9. Routing и quality gates
Текущая реализация:
-
использует один configured generator path;
-
не публикует отдельный confidence score;
-
использует preservation heuristics как practical quality gate.
Дополнительный gate:
-
workflow-level validation before publish.
10. Edge cases и fallback behavior
Основные edge cases:
-
empty source prompt Немедленная validation failure.
-
duplicate ids Batch отклоняется до publish.
-
tagged source Используется deterministic fast path без AI rewriting.
-
слишком агрессивный update result Пользователь review-ит и при необходимости возвращается к manual editing.