{
  "summary": {
    "input_rows": 12,
    "unique_rows": 11,
    "duplicate_rows": 1,
    "review_rows": 7,
    "issue_counts": {
      "EXACT_DUPLICATE": 1,
      "FORMULA_LIKE_TEXT": 1,
      "INVALID_EMAIL": 1,
      "INVALID_PHONE": 1,
      "INVALID_WEBSITE": 1,
      "MISSING_COMPANY": 1,
      "MISSING_CONTACT": 1,
      "NORMALIZED": 5
    },
    "severity_counts": {
      "error": 4,
      "info": 5,
      "warning": 3
    },
    "missing_values": {
      "company": 1,
      "website": 0,
      "email": 2,
      "phone": 6,
      "city": 0,
      "note": 0
    }
  },
  "records": [
    {
      "source_row": 2,
      "duplicate_of": null,
      "original": {
        "company": " ООО Лира ",
        "website": "https://lira.example/",
        "email": "sales@lira.example",
        "phone": "+1 (202) 555-0100",
        "city": " Москва ",
        "note": "синтетическая запись"
      },
      "normalized": {
        "company": "ООО Лира",
        "website": "https://lira.example/",
        "email": "sales@lira.example",
        "phone": "+12025550100",
        "city": "Москва",
        "note": "синтетическая запись"
      }
    },
    {
      "source_row": 3,
      "duplicate_of": 2,
      "original": {
        "company": "ООО Лира",
        "website": "lira.example",
        "email": "sales@lira.example",
        "phone": "+12025550100",
        "city": "Москва",
        "note": "синтетическая запись"
      },
      "normalized": {
        "company": "ООО Лира",
        "website": "https://lira.example/",
        "email": "sales@lira.example",
        "phone": "+12025550100",
        "city": "Москва",
        "note": "синтетическая запись"
      }
    },
    {
      "source_row": 4,
      "duplicate_of": null,
      "original": {
        "company": "ООО Вектор",
        "website": "https://vector.example/",
        "email": "sales@@vector.example",
        "phone": "",
        "city": "Казань",
        "note": "ошибка email"
      },
      "normalized": {
        "company": "ООО Вектор",
        "website": "https://vector.example/",
        "email": "sales@@vector.example",
        "phone": "",
        "city": "Казань",
        "note": "ошибка email"
      }
    },
    {
      "source_row": 5,
      "duplicate_of": null,
      "original": {
        "company": "ООО Орион",
        "website": "https://orion.example/",
        "email": "info@orion.example",
        "phone": "123",
        "city": "Тула",
        "note": "слишком короткий телефон"
      },
      "normalized": {
        "company": "ООО Орион",
        "website": "https://orion.example/",
        "email": "info@orion.example",
        "phone": "123",
        "city": "Тула",
        "note": "слишком короткий телефон"
      }
    },
    {
      "source_row": 6,
      "duplicate_of": null,
      "original": {
        "company": "",
        "website": "https://noname.example/",
        "email": "info@noname.example",
        "phone": "",
        "city": "Тула",
        "note": "нет названия компании"
      },
      "normalized": {
        "company": "",
        "website": "https://noname.example/",
        "email": "info@noname.example",
        "phone": "",
        "city": "Тула",
        "note": "нет названия компании"
      }
    },
    {
      "source_row": 7,
      "duplicate_of": null,
      "original": {
        "company": "ООО Сфера",
        "website": "ftp://sfera.example/",
        "email": "info@sfera.example",
        "phone": "",
        "city": "Омск",
        "note": "неподдерживаемый протокол сайта"
      },
      "normalized": {
        "company": "ООО Сфера",
        "website": "ftp://sfera.example/",
        "email": "info@sfera.example",
        "phone": "",
        "city": "Омск",
        "note": "неподдерживаемый протокол сайта"
      }
    },
    {
      "source_row": 8,
      "duplicate_of": null,
      "original": {
        "company": "=1+1",
        "website": "https://formula.example/",
        "email": "info@formula.example",
        "phone": "",
        "city": "Москва",
        "note": "проверка защиты CSV от формулы"
      },
      "normalized": {
        "company": "=1+1",
        "website": "https://formula.example/",
        "email": "info@formula.example",
        "phone": "",
        "city": "Москва",
        "note": "проверка защиты CSV от формулы"
      }
    },
    {
      "source_row": 9,
      "duplicate_of": null,
      "original": {
        "company": "ООО Лира — филиал",
        "website": "https://lira.example/",
        "email": "sales@lira.example",
        "phone": "+12025550100",
        "city": "Москва",
        "note": "другой филиал сохраняется"
      },
      "normalized": {
        "company": "ООО Лира — филиал",
        "website": "https://lira.example/",
        "email": "sales@lira.example",
        "phone": "+12025550100",
        "city": "Москва",
        "note": "другой филиал сохраняется"
      }
    },
    {
      "source_row": 10,
      "duplicate_of": null,
      "original": {
        "company": "ООО Меридиан",
        "website": "https://meridian.example/",
        "email": "",
        "phone": "+1 202 555 0101",
        "city": "Самара",
        "note": "контакт только по телефону"
      },
      "normalized": {
        "company": "ООО Меридиан",
        "website": "https://meridian.example/",
        "email": "",
        "phone": "+12025550101",
        "city": "Самара",
        "note": "контакт только по телефону"
      }
    },
    {
      "source_row": 11,
      "duplicate_of": null,
      "original": {
        "company": "ООО Контур",
        "website": "https://kontur.example/",
        "email": "",
        "phone": "",
        "city": "Казань",
        "note": "нет email и телефона"
      },
      "normalized": {
        "company": "ООО Контур",
        "website": "https://kontur.example/",
        "email": "",
        "phone": "",
        "city": "Казань",
        "note": "нет email и телефона"
      }
    },
    {
      "source_row": 12,
      "duplicate_of": null,
      "original": {
        "company": "<img src=x onerror=alert(1)>",
        "website": "https://markup.example/",
        "email": "info@markup.example",
        "phone": "",
        "city": "Омск",
        "note": "проверка безопасного отображения HTML"
      },
      "normalized": {
        "company": "<img src=x onerror=alert(1)>",
        "website": "https://markup.example/",
        "email": "info@markup.example",
        "phone": "",
        "city": "Омск",
        "note": "проверка безопасного отображения HTML"
      }
    },
    {
      "source_row": 13,
      "duplicate_of": null,
      "original": {
        "company": "ООО Лира",
        "website": "https://lira.example/",
        "email": "sales@lira.example",
        "phone": "+12025550100",
        "city": "Москва",
        "note": "другая заметка: не объединять"
      },
      "normalized": {
        "company": "ООО Лира",
        "website": "https://lira.example/",
        "email": "sales@lira.example",
        "phone": "+12025550100",
        "city": "Москва",
        "note": "другая заметка: не объединять"
      }
    }
  ],
  "issues": [
    {
      "source_row": 2,
      "field": "company",
      "code": "NORMALIZED",
      "severity": "info",
      "message": "Формат нормализован; исходное значение сохранено в JSON.",
      "original_value": " ООО Лира "
    },
    {
      "source_row": 2,
      "field": "phone",
      "code": "NORMALIZED",
      "severity": "info",
      "message": "Формат нормализован; исходное значение сохранено в JSON.",
      "original_value": "+1 (202) 555-0100"
    },
    {
      "source_row": 2,
      "field": "city",
      "code": "NORMALIZED",
      "severity": "info",
      "message": "Формат нормализован; исходное значение сохранено в JSON.",
      "original_value": " Москва "
    },
    {
      "source_row": 3,
      "field": "website",
      "code": "NORMALIZED",
      "severity": "info",
      "message": "Формат нормализован; исходное значение сохранено в JSON.",
      "original_value": "lira.example"
    },
    {
      "source_row": 3,
      "field": "",
      "code": "EXACT_DUPLICATE",
      "severity": "warning",
      "message": "Совпали все нормализованные поля; первая CSV-запись: 2",
      "original_value": ""
    },
    {
      "source_row": 4,
      "field": "email",
      "code": "INVALID_EMAIL",
      "severity": "error",
      "message": "Не соответствует поддерживаемому формату email.",
      "original_value": "sales@@vector.example"
    },
    {
      "source_row": 5,
      "field": "phone",
      "code": "INVALID_PHONE",
      "severity": "error",
      "message": "Ожидаются 7–15 цифр и обычные разделители.",
      "original_value": "123"
    },
    {
      "source_row": 6,
      "field": "company",
      "code": "MISSING_COMPANY",
      "severity": "error",
      "message": "Не указано название компании.",
      "original_value": ""
    },
    {
      "source_row": 7,
      "field": "website",
      "code": "INVALID_WEBSITE",
      "severity": "error",
      "message": "Ожидается HTTP(S)-адрес без встроенного логина.",
      "original_value": "ftp://sfera.example/"
    },
    {
      "source_row": 8,
      "field": "company",
      "code": "FORMULA_LIKE_TEXT",
      "severity": "warning",
      "message": "Похоже на формулу. CSV-экспорт защищен; проверьте значение.",
      "original_value": "=1+1"
    },
    {
      "source_row": 10,
      "field": "phone",
      "code": "NORMALIZED",
      "severity": "info",
      "message": "Формат нормализован; исходное значение сохранено в JSON.",
      "original_value": "+1 202 555 0101"
    },
    {
      "source_row": 11,
      "field": "contact",
      "code": "MISSING_CONTACT",
      "severity": "warning",
      "message": "Нет email и телефона; контакт необходимо уточнить вручную.",
      "original_value": ""
    }
  ],
  "tool_version": "0.1.2",
  "input_file": "companies_demo.csv",
  "input": {
    "sha256": "c72dcb006362a778e316c976d99cb31d804dfe1e4a6be7b05e14978bfb592fd7",
    "encoding": "utf-8-sig",
    "delimiter": ";",
    "original_headers": [
      "company",
      "website",
      "email",
      "phone",
      "city",
      "note"
    ],
    "bytes": 1507
  },
  "columns": [
    "company",
    "website",
    "email",
    "phone",
    "city",
    "note"
  ],
  "is_demo": true,
  "generated_at_utc": "2026-11-10T07:57:48+00:00"
}
