delivery Specification
Purpose
Публикация итогов и доставка уведомлений в системе «Обратная связь — регион».
Requirements
Requirement: REQ-DEL-001 — Публикация в личном кабинете
{
"id": "REQ-DEL-001",
"level": "REQ",
"status": "agreed",
"owner": "product-owner",
"parents": [
"HLR-POS-005"
],
"sources": [
"DEC-POS-004",
"docs/models.md"
],
"questions": [],
"required_aspects": [
"published",
"once"
],
"verification": "test",
"risk": "high"
}
Система MUST публиковать итоговый ответ в личном кабинете автора однократно после подтверждения ведущим согласующим полноты комплекта. Публикация фиксирует неизменную версию итога и переводит жалобу в answered. Повтор подтверждения той же версии возвращает прежний результат. Доступность ответа в кабинете не зависит от внешнего уведомления.
Scenario: SCN-POS-001 — Полный путь жалобы в одно ведомство
- GIVEN Жалоба принята от автора; тестовый маршрут LIGHT-01 v7 действует
- WHEN Подтвердить категорию; назначить маршрут; подготовить и согласовать ответ; опубликовать итог; открыть его автором
- THEN Итог доступен автору; жалоба answered
Подробности и данные: acceptance/scenarios/scn-pos-001.json.
Scenario: SCN-POS-008 — Полный комплект двух ведомств и повтор публикации
- GIVEN Оба активных обязательных поручения имеют согласованные ответы
- WHEN Собрать и дважды подтвердить публикацию одной итоговой версии
- THEN Итог опубликован в личном кабинете; Повтор не создал вторую публикацию
Подробности и данные: acceptance/scenarios/scn-pos-008.json.
Requirement: REQ-DEL-002 — Повтор внешнего уведомления
{
"id": "REQ-DEL-002",
"level": "REQ",
"status": "agreed",
"owner": "product-owner",
"parents": [
"HLR-POS-005",
"HLR-POS-008"
],
"sources": [
"DEC-POS-004",
"DEC-POS-007"
],
"questions": [
"Q-POS-005"
],
"required_aspects": [
"retry",
"no_sensitive_text"
],
"verification": "test",
"risk": "high"
}
Система MUST при временном отказе внешнего канала сохранить задачу уведомления и повторить её по расписанию: через 1, 5 и 30 минут после неудачных попыток; после четвёртого отказа перевести в failed и создать сигнал сопровождению. Повтор не создаёт вторую публикацию. Уведомление содержит только факт готовности ответа и ссылку в кабинет; текста жалобы, ответа и имени автора в нём нет.
Scenario: SCN-POS-013 — Отказ внешнего канала
- GIVEN Итог опубликован; управляемые часы; провайдер возвращает503 четыре раза
- WHEN Пройти расписание повторов до исчерпания попыток
- THEN 1,5,30 минут; затем failed; публикаций1; Во внешнем сообщении нет текста и имени
Подробности и данные: acceptance/scenarios/scn-pos-013.json.
Requirement: REQ-DEL-003 — Различение статусов доставки
{
"id": "REQ-DEL-003",
"level": "REQ",
"status": "agreed",
"owner": "product-owner",
"parents": [
"HLR-POS-005"
],
"sources": [
"DEC-POS-004",
"docs/models.md"
],
"questions": [],
"required_aspects": [
"distinct"
],
"verification": "test",
"risk": "high"
}
Система MUST учитывать отдельно публикацию ответа, подтверждение внешнего провайдера и прочтение автором. Подтверждение провайдера переводит notification в accepted, но не устанавливает read_at. read_at появляется только после открытия итогового ответа автором в кабинете. Статус answered означает публикацию и не обещает прочтение.
Scenario: SCN-POS-014 — Принято провайдером и прочитано автором
- GIVEN Провайдер принял уведомление; автор не открывал ответ
- WHEN Прочитать статусы; затем открыть ответ автором
- THEN accepted не устанавливает read_at; открытие автором устанавливает
Подробности и данные: acceptance/scenarios/scn-pos-014.json.