{
    "gerado_em": "2026-05-29T15:59:41-03:00",
    "duracao_segundos": 6.74,
    "origem_csv": "C:\\laragon\\www\\angra.rj.gov.br\\temp\\importacoes_licitacoes_procedimentos",
    "only": "licitacoes",
    "contadores": {
        "licitacoes": {
            "imported": 6310,
            "skipped": 0,
            "errors": 2
        },
        "procedimentos": {
            "imported": 3702,
            "skipped": 0,
            "errors": 8
        }
    },
    "totais": {
        "erros": 10,
        "ignorados": 0
    },
    "resultado": "Importação concluída com ressalvas: 10 erro(s) bloquearam registro(s).",
    "acao_recomendada": [
        "Corrija no CSV os registros principais listados na seção **Erros** (comece pelos grupos com maior contagem).",
        "Salve os CSVs e execute novamente: `php artisan licitacoes:import` (idempotente — limpa e reimporta).",
        "Abra o relatório `.md` gerado nesta pasta para ver linha, ID legado e coluna exata de cada ocorrência."
    ],
    "grupos": [
        {
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "tipo": "erro",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "coluna_csv": "ds_objeto",
            "campo_banco": "ds_objeto",
            "total": 10,
            "itens": [
                {
                    "tipo_registro": "Licitação",
                    "id_legado": 10490,
                    "referencia_curta": "ID legado 10490",
                    "arquivo": "TB_PMAR_LICITACAO-29052026.csv",
                    "linha": 5811,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 10490,
                        "tipo_processo": "licitacao",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 19
                    }
                },
                {
                    "tipo_registro": "Licitação",
                    "id_legado": 14142,
                    "referencia_curta": "ID legado 14142",
                    "arquivo": "TB_PMAR_LICITACAO-29052026.csv",
                    "linha": 6255,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 14142,
                        "tipo_processo": "licitacao",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 20
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 9394,
                    "referencia_curta": "ID legado 9394",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 1749,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 9394,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 19
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 9642,
                    "referencia_curta": "ID legado 9642",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 1961,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 9642,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 45
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 9736,
                    "referencia_curta": "ID legado 9736",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 2041,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 9736,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 55
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 9819,
                    "referencia_curta": "ID legado 9819",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 2120,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 9819,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 61
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 12117,
                    "referencia_curta": "ID legado 12117",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 3155,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 12117,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 59
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 13260,
                    "referencia_curta": "ID legado 13260",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 3311,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 13260,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 44
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 13300,
                    "referencia_curta": "ID legado 13300",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 3347,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 13300,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 59
                    }
                },
                {
                    "tipo_registro": "Procedimento",
                    "id_legado": 13301,
                    "referencia_curta": "ID legado 13301",
                    "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
                    "linha": 3348,
                    "coluna_csv": "ds_objeto",
                    "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
                    "contexto": {
                        "old_id": 13301,
                        "tipo_processo": "procedimento",
                        "nr_licitacao": null,
                        "nr_processo": null,
                        "id_setor": 59
                    }
                }
            ]
        }
    ],
    "issues": [
        {
            "etapa": "licitacoes",
            "tipo": "erro",
            "arquivo": "TB_PMAR_LICITACAO-29052026.csv",
            "linha": 5811,
            "referencia": "old_id=10490",
            "mensagem": "Falha ao inserir licitacao (old_id=10490): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `updated_at`, `created_at`) values (licitacao, 19, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 6, 2026-05-29 15:59:38, 2026-05-29 15:59:38))",
            "contexto": {
                "old_id": 10490,
                "tipo_processo": "licitacao",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 19
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 10490,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Licitação",
            "referencia_curta": "ID legado 10490"
        },
        {
            "etapa": "licitacoes",
            "tipo": "erro",
            "arquivo": "TB_PMAR_LICITACAO-29052026.csv",
            "linha": 6255,
            "referencia": "old_id=14142",
            "mensagem": "Falha ao inserir licitacao (old_id=14142): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `updated_at`, `created_at`) values (licitacao, 20, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 2, 2026-05-29 15:59:38, 2026-05-29 15:59:38))",
            "contexto": {
                "old_id": 14142,
                "tipo_processo": "licitacao",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 20
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 14142,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Licitação",
            "referencia_curta": "ID legado 14142"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 1749,
            "referencia": "old_id=9394",
            "mensagem": "Falha ao inserir procedimento (old_id=9394): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 19, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 6, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:39, 2026-05-29 15:59:39))",
            "contexto": {
                "old_id": 9394,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 19
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 9394,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 9394"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 1961,
            "referencia": "old_id=9642",
            "mensagem": "Falha ao inserir procedimento (old_id=9642): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 45, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 70, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:39, 2026-05-29 15:59:39))",
            "contexto": {
                "old_id": 9642,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 45
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 9642,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 9642"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 2041,
            "referencia": "old_id=9736",
            "mensagem": "Falha ao inserir procedimento (old_id=9736): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 55, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 96, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:39, 2026-05-29 15:59:39))",
            "contexto": {
                "old_id": 9736,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 55
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 9736,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 9736"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 2120,
            "referencia": "old_id=9819",
            "mensagem": "Falha ao inserir procedimento (old_id=9819): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 61, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 154, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:39, 2026-05-29 15:59:39))",
            "contexto": {
                "old_id": 9819,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 61
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 9819,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 9819"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 3155,
            "referencia": "old_id=12117",
            "mensagem": "Falha ao inserir procedimento (old_id=12117): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 59, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 169, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:40, 2026-05-29 15:59:40))",
            "contexto": {
                "old_id": 12117,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 59
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 12117,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 12117"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 3311,
            "referencia": "old_id=13260",
            "mensagem": "Falha ao inserir procedimento (old_id=13260): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 44, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 182, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:40, 2026-05-29 15:59:40))",
            "contexto": {
                "old_id": 13260,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 44
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 13260,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 13260"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 3347,
            "referencia": "old_id=13300",
            "mensagem": "Falha ao inserir procedimento (old_id=13300): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 59, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 32, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:40, 2026-05-29 15:59:40))",
            "contexto": {
                "old_id": 13300,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 59
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 13300,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 13300"
        },
        {
            "etapa": "procedimentos",
            "tipo": "erro",
            "arquivo": "TB_PMAR_PROCEDIMENTOS-29052026.csv",
            "linha": 3348,
            "referencia": "old_id=13301",
            "mensagem": "Falha ao inserir procedimento (old_id=13301): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'ds_objeto' cannot be null (Connection: mysql, SQL: insert into `licitacoes_procedimentos` (`tipo_processo`, `id_setor`, `ds_objeto`, `nr_processo`, `nr_memorando`, `cd_tipo`, `nr_licitacao`, `dt_data`, `dt_hora`, `cd_status`, `id_usuario`, `dt_encerramento`, `ds_favorecido`, `ds_bo`, `ds_urlbo`, `boletins`, `updated_at`, `created_at`) values (procedimento, 59, ?, ?, ?, 0, ?, 1900-01-01 00:00:00, ?, 0, 166, 1900-01-01 00:00:00, ?, 0, ?, [{\"ds_bo\":\"0\",\"ds_urlbo\":null}], 2026-05-29 15:59:40, 2026-05-29 15:59:40))",
            "contexto": {
                "old_id": 13301,
                "tipo_processo": "procedimento",
                "nr_licitacao": null,
                "nr_processo": null,
                "id_setor": 59
            },
            "codigo": "CAMPO_OBRIGATORIO_VAZIO",
            "titulo": "Campo obrigatório vazio: ds_objeto",
            "explicacao": "O banco exige um valor na coluna indicada, mas o CSV veio vazio ou a normalização descartou o conteúdo.",
            "impacto": "O registro principal (licitação\/procedimento) não entra no portal. Uploads ligados a esse ID legado também serão ignorados.",
            "passos": [
                "No CSV, preencha a coluna **ds_objeto** (campo do banco: `ds_objeto`).",
                "Abra o CSV na linha indicada (número da linha = linha física do arquivo, incluindo cabeçalho).",
                "Localize o registro pelo **ID legado** (`cd_licitacao` ou `cd_procedimento`).",
                "Preencha a coluna do CSV indicada em **Coluna CSV** (ex.: `ds_objeto` = descrição do objeto).",
                "Salve o CSV e execute novamente: `php artisan licitacoes:import` (a rotina é idempotente)."
            ],
            "campo_banco": "ds_objeto",
            "coluna_csv": "ds_objeto",
            "id_legado": 13301,
            "detalhe_tecnico": "MySQL: coluna `ds_objeto` não aceita NULL (23000)",
            "tipo_registro": "Procedimento",
            "referencia_curta": "ID legado 13301"
        }
    ]
}