Джина Гайд

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 — Полный путь жалобы в одно ведомство

Подробности и данные: acceptance/scenarios/scn-pos-001.json.

Scenario: SCN-POS-008 — Полный комплект двух ведомств и повтор публикации

Подробности и данные: 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 — Отказ внешнего канала

Подробности и данные: 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 — Принято провайдером и прочитано автором

Подробности и данные: acceptance/scenarios/scn-pos-014.json.