Сверить перенесённые документы и отделить четыре разных результата

Данные получены настоящими запросами через native-расширение cubrid. После наблюдений собственные учебные объекты удалены.

Результат выполнения
НаблюдениеРезультат
701Совпадает: оставить
702Другие байты: сверить исходник
703Нет строки: проверить перед импортом
704SQL NULL: выяснить отсутствие документа
Проверено по ведомости4
Строк в базе после сверки3
Файлreconciliation.csv
Полученные строки и дополнительные наблюдения
{
    "findings": [
        {
            "business_id": 701,
            "status": "matched",
            "action": "keep",
            "expected_sha256": "4efe6f645d9246152a160eedcc0ca37d8c086fdb860e66726400ae82b2ae20ea",
            "actual_sha256": "4efe6f645d9246152a160eedcc0ca37d8c086fdb860e66726400ae82b2ae20ea"
        },
        {
            "business_id": 702,
            "status": "hash_mismatch",
            "action": "review_source",
            "expected_sha256": "26299c69f10fc74cc5412604c7528071d03f090974edc1459faeca94d59c7763",
            "actual_sha256": "342db1d45d38cdc843f54f33fc45ca4713f1663ecec96fb5f5ffb05974c861f8"
        },
        {
            "business_id": 703,
            "status": "missing_row",
            "action": "import_after_review",
            "expected_sha256": "1cd9afeef35deb79ae87adde6625dc092ddccd9b8510439fe975783546696583",
            "actual_sha256": null
        },
        {
            "business_id": 704,
            "status": "null_body",
            "action": "review_missing_document",
            "expected_sha256": "60e0418adef2f0e394118dd125c89b838d719780dc32f8e32ec69934c073f54a",
            "actual_sha256": null
        }
    ],
    "policy": "report only, no repair or deletion",
    "expected_count": 4,
    "actual_count": 3
}

result.json содержит те же данные; metrics.json — проверки. Реквизиты входа в эти файлы не записываются.