КОНТРОЛЬ КАЧЕСТВАP1L3

Принятый операционный результат и повторная работа

Как отделить результат от попытки обработки, закрепить критерии приёмки и учесть доработку и отзыв без двойного счёта выпуска.

Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.

Задача и границы#

Три завершённые попытки обработки одной заявки не означают три принятых результата. Знаменатель управленческих удельных расходов должен различать работу, техническое завершение и подтверждённый выпуск. Здесь определяется проектный контракт принятого результата, без оценки сотрудников, весов сложности, распределения затрат и изменения лаборатории.

W3C PROV-DM, рекомендация 2013 года, различает сущности, действия, происхождение и ответственность. Это основа для описания связей результата с обработкой и решением о приёмке, но спецификация не задаёт бизнес-критерии качества или формулу знаменателя. Все правила включения ниже являются предлагаемыми решениями EDWH, не требованиями IFRS, ISO или конкретной СУБД. SQL/Python отсутствуют.

Зерно и идентичность#

Ключ результата (source_system, service_id, result_id) обозначает один ожидаемый результат услуги. Ключ попытки (source_system, attempt_id) обозначает один запуск работы. В выбранной модели попытка относится ровно к одному результату, результат может иметь несколько попыток. Если пакетная попытка производит несколько результатов, сначала нужен явный мост с составом пакета; прямой подсчёт строк соединения непригоден.

Содержимое результата имеет отдельную result_version. Решение приёмки с уникальным decision_id ссылается на точную версию результата, подтверждающую попытку, версию критериев, полномочие принимающей стороны и доказательства проверок. Новый идентификатор попытки или версия содержимого не создают новую единицу выпуска. Новый самостоятельный результат допускается только по определению услуги, например для отдельной заявки, с прослеживаемым основанием идентичности.

Зерно витрины - услуга, юридическое лицо, подразделение, неперекрывающийся бизнес-интервал, версия определения выпуска, снимок источника и release_id. Единица - один принятый результат, без валюты и без отрицательного количества в снимке. Денежный числитель отдельно сохраняет валюту, масштаб и знаки. Совместимость периметра и времени с ним проверяют по контракту удельных расходов.

Критерии и времена#

Версия критериев содержит проверяемые условия, область услуги, интервал действия, владельца и свидетельство утверждения. Например, синтетическая услуга требует наличия обязательных полей и положительного заключения контроля. Флаг «завершено» не доказывает эти условия. Новые критерии не применяют к старым решениям молча: сохраняют исходное решение и отдельный результат переоценки по новой версии.

Различайте completed_at попытки, accepted_at решения, бизнес-время возврата или отзыва и observed_at, когда EDWH узнал событие. Метки времени имеют явный часовой пояс; календарь услуги определяет дату включения. Для этой модели принятие не может предшествовать завершению подтверждающей попытки. Момент загрузки не заменяет момент приёмки.

Выпуск закрепляет два среза: бизнес-cutoff состояния и cutoff известности. Событие влияет на него только при попадании в оба среза. Равные времена упорядочивают по авторитетной последовательности источника; конфликтующие решения без такого порядка блокируют результат. Одного максимального timestamp недостаточно.

Доработка и отзыв#

Ниже принят контракт активного принятого выпуска: результат включается один раз, если на бизнес-cutoff действует приёмка его текущей версии и её исходная дата первого принятия принадлежит выбранному интервалу. Эта дата остаётся закреплённой за результатом после повторной приёмки. Это не счётчик событий приёмки за период.

Событие Состояние результата Вклад в снимок
Попытка завершена, проверки не пройдены Требует доработки 0
Приёмка версии подтверждена Принят 1 при попадании первой приёмки в интервал
Возврат после приёмки Требует доработки, прежняя приёмка прекращена 0
Новая попытка и повторная приёмка Принят с новой версией Не более 1, в исходном интервале
Отзыв приёмки Приёмка недействительна 0

Возврат до первого принятия сохраняет нулевой вклад. Возврат после принятия и отзыв оформляют событиями с причиной и ссылкой на прекращаемое решение. Повторная доставка того же события не меняет состояние. Новую версию содержимого нельзя считать принятой по решению для прежней версии.

Синтетический пример: результат R имеет неуспешную попытку A1 и принятую A2 в январе. В январском выпуске известных тогда данных вклад R равен 1, попыток завершено 2. В феврале приёмку отзывают, затем принимают исправление A3. В новом снимке до повторной приёмки вклад R в январском интервале равен 0, после неё равен 1; новый февральский результат не возникает. Исходный январский выпуск сохраняется неизменным. Позднее известие об отзыве меняет новый пересчёт, а не архивный выпуск.

Альтернатива - считать первые приёмки как исторический поток, не вычитая последующий отзыв, и показывать отзыв отдельно. Она отвечает на вопрос «сколько впервые приняли тогда», тогда как выбранный контракт отвечает «сколько из принятого тогда остаётся действительным на срез». Эти показатели нельзя смешивать. Пересчёт периода принятия требует проверки сопоставимости с денежным числителем, а не автоматического переноса затрат между месяцами.

Сверка и покрытие#

Сначала сверяют ожидаемые результаты, попытки и журнал решений в закреплённом периметре. Каждая попытка имеет известный результат; каждое решение приёмки имеет существующую завершённую попытку, точную версию и доказательства по указанным критериям. Отсутствие журналов решений означает неизвестный принятый объём, а не ноль.

Каждый результат на срезе принадлежит ровно одной группе: принят, ожидает обработки или приёмки, требует доработки, отозван либо неразрешён. Сумма количеств групп равна количеству уникальных ожидаемых результатов. Принятый набор сверяют по ключам с действующими решениями, затем считают уникальные результаты; соединение с несколькими попытками не должно размножить вклад.

Отдельно сохраняют количество попыток, повторных попыток и результатов с доработкой. Попытки не складывают с результатами. Если критерии или версия результата неизвестны, итог по затронутому периметру не допускают как полный. Положительный счётчик завершений не доказывает полноту принятого выпуска. Взвешивание применяют лишь после выбора допущенного набора, сохраняя отличие результатов, попыток и эквивалентов.

Критерии допуска#

  1. Определены единица результата, ключи и связи с попытками и версиями; повторная работа не создаёт дополнительную единицу.
  2. Каждая действующая приёмка имеет версию критериев, полномочие и доказательства; версия содержимого совпадает с принятой.
  3. Закреплены календарь, оба cutoff, порядок событий и политика первой приёмки; незавершённая попытка не подтверждает приёмку.
  4. Возврат и отзыв прекращают конкретное решение, повторная приёмка не удваивает выпуск; исходные выпуски сохранены.
  5. Наборы и состояния сверены по ключам, отсутствующие решения не подменены нулём; частичный объём явно обозначен.
  6. Сохраняется lineage до попыток и доказательств. Смена политики оформлена через версию определения выпуска.

Это критерии проектной приёмки, не заявление о выполненных тестах. При нарушении условия показывают диагностику вместо окончательного знаменателя.

Вопросы для самопроверки#

  • Почему три завершённые попытки могут давать один или ноль принятых результатов?
  • В каком интервале учитывается повторная приёмка после отзыва по выбранному контракту?
  • Почему неизвестный журнал решений нельзя заменить нулём даже при полной поставке попыток?

Источники и документация

  1. W3C - PROV-DM, Recommendation 30 April 2013 ↗

Источники нужны для самостоятельной проверки. Примеры и интерпретации на сайте могут быть учебными упрощениями.