# Mapa Completo de Arquivos — Diário Oficial

> _Atualizado para o **v6** (`update_diario_v5_to_v6`) em 2026-09-11. Alterações desta versão: `DIARIO_OFICIAL_ALTERACOES.md` e `plan/2026-09-11-diario-upgrade-backlog.md`._

> ⚠️ Este documento foi corrigido. Para o inventário canônico e arquivo a arquivo, ver
> [`19-INVENTARIO_COMPLETO.md`](./19-INVENTARIO_COMPLETO.md). Contagem real: **~125 arquivos**.

Este documento lista **todos os arquivos** envolvidos no módulo Diário Oficial, organizados por categoria.

---

## 1. Models (6 + tabela órfã)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Http/Model/Prefecture/Diario.php` |
| 2 | `app/Http/Model/Prefecture/DiarioArea.php` |
| 3 | `app/Http/Model/Prefecture/DiarioSubArea.php` |
| 4 | `app/Http/Model/Prefecture/DiarioHasAreas.php` |
| 5 | `app/Http/Model/Prefecture/DiarioConfig.php` |
| 6 | `app/Http/Model/Prefecture/DiarioCerticado.php` — **nome do arquivo com typo**; a classe interna é `DiarioCertificado` |

> Não há model nem tabela `diario_adendos` no v6.

---

## 2. Controllers (6)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Http/Controllers/Prefecture/DiarioController.php` |
| 2 | `app/Http/Controllers/Prefecture/DiarioAreaController.php` |
| 3 | `app/Http/Controllers/Prefecture/DiarioSubAreaController.php` |
| 4 | `app/Http/Controllers/Prefecture/DiarioCertificadosController.php` |
| 5 | `app/Http/Controllers/Prefecture/DatatableController.php` (3 métodos Diario) |
| 6 | `app/Http/Controllers/Portal/DiarioController.php` |

---

## 3. Views — CMS Diário Oficial (7)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/diario-oficial/index.blade.php` |
| 2 | `resources/views/prefecture/contents/diario-oficial/create.blade.php` |
| 3 | `resources/views/prefecture/contents/diario-oficial/form.blade.php` |
| 4 | `resources/views/prefecture/contents/diario-oficial/loading.blade.php` |
| 5 | `resources/views/prefecture/contents/diario-oficial/pdf/index.blade.php` |
| 6 | `resources/views/prefecture/contents/diario-oficial/pdf/summernote.blade.php` |
| 7 | `resources/views/prefecture/contents/diario-oficial/pdf/style.blade.php` |

> Não listadas no mapa antigo:
> - `prefecture/contents/diario-oficial/modal/areas/index.blade.php`
> - `prefecture/contents/diario-oficial/modal/areas/modal.blade.php`
> - `prefecture/contents/diario-oficial/components/image.blade.php`
> - `prefecture/contents/diario-oficial/components/pdf-file-upload.blade.php`
> - `prefecture/contents/diario-oficial/components/cover-image.blade.php` (**nova no v6**)
>
> ⚠️ `pdf/summernote.blade.php` e `components/preview/diario-oficial/summernote.blade.php`
> **não são Summernote**: são bundles CSS (normalize + Bootstrap 3 + Glyphicons) de 7371 linhas,
> duplicados; o par em `components/preview/` é órfão.

---

## 3-A. Views — CMS Certificado (3)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/certificado/index.blade.php` |
| 2 | `resources/views/prefecture/contents/certificado/create.blade.php` |
| 3 | `resources/views/prefecture/contents/certificado/form.blade.php` |

---

## 4. Views — CMS Áreas (3)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/diario-oficial/diario-areas/index.blade.php` |
| 2 | `resources/views/prefecture/contents/diario-oficial/diario-areas/create.blade.php` |
| 3 | `resources/views/prefecture/contents/diario-oficial/diario-areas/form.blade.php` |

---

## 5. Views — CMS Subáreas (3)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/diario-oficial/diario-subareas/index.blade.php` |
| 2 | `resources/views/prefecture/contents/diario-oficial/diario-subareas/create.blade.php` |
| 3 | `resources/views/prefecture/contents/diario-oficial/diario-subareas/form.blade.php` |

---

## 6. Views — CMS Configurações (2)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/diario-oficial/configuracoes/create.blade.php` |
| 2 | `resources/views/prefecture/contents/diario-oficial/configuracoes/form.blade.php` |

---

## 7. Views — CMS Modal de Áreas (2)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/diario-oficial/modal/areas/modal.blade.php` |
| 2 | `resources/views/prefecture/contents/diario-oficial/modal/areas/index.blade.php` |

---

## 8. Views — CMS Componentes (2)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/diario-oficial/components/pdf-file-upload.blade.php` |
| 2 | `resources/views/prefecture/contents/diario-oficial/components/image.blade.php` |

---

## 9. Views — CMS Preview (3)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/prefecture/contents/components/preview/diario-oficial/index.blade.php` |
| 2 | `resources/views/prefecture/contents/components/preview/diario-oficial/summernote.blade.php` |
| 3 | `resources/views/prefecture/contents/components/preview/diario-oficial/style.blade.php` |

---

## 10. Views — Portal (2)

| # | Arquivo |
|:-:|---------|
| 1 | `resources/views/portal/layouts/diario-oficial/index.blade.php` |
| 2 | `resources/views/portal/layouts/diario-oficial/show-pdf.blade.php` |

---

## 11. Repositories (5)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Repositories/Eloquent/Prefecture/DiarioOficial/DiarioOficialRepository.php` |
| 2 | `app/Repositories/Eloquent/Prefecture/DiarioOficial/Area/AreaRepository.php` |
| 3 | `app/Repositories/Eloquent/Prefecture/DiarioOficial/DiarioArea/DiarioAreaRepository.php` |
| 4 | `app/Repositories/Eloquent/Prefecture/DiarioOficial/DiarioSubArea/DiarioSubAreaRepository.php` |
| 5 | `app/Repositories/Eloquent/Prefecture/DiarioConfig/DiarioConfigRepository.php` |

---

## 12. Repository Contracts (3)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Repositories/Contracts/IDiarioAreaRepository.php` |
| 2 | `app/Repositories/Contracts/IDiarioSubAreaRepository.php` |
| 3 | `app/Repositories/Contracts/IDiarioConfigRepository.php` |

---

## 13. Requests (6)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Http/Requests/DiarioOficialRequest.php` |
| 2 | `app/Http/Requests/DiarioAreasRequest.php` |
| 3 | `app/Http/Requests/CertificadoRequest.php` — **não listado no mapa antigo** |
| 4 | `app/Http/Requests/DiarioOficial/SortRequest.php` |
| 5 | `app/Http/Requests/DiarioOficial/SaveConfigRequest.php` |
| 6 | `app/Http/Requests/DiarioOficial/SaveAreaRequest.php` |

---

## 14. Resources (API Transformers) (3)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Http/Resources/DiarioOficial/GetDiarioResource.php` |
| 2 | `app/Http/Resources/DiarioOficial/ListAreasAndSubareasResource.php` |
| 3 | `app/Http/Resources/DiarioOficial/ListAreaContentResource.php` |

---

## 15. Services (3)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Services/FPdfService.php` — serviço monolítico (374 linhas; herda Fpdi/TCPDF) |
| 2 | `app/Services/Pdf/PdfConverter.php` — PDF → JPEG (Imagick + Ghostscript) |
| 3 | `app/Services/Pdf/ImageProcessor.php` — dimensionamento de imagens (mm) |

> `LayoutManager.php`, `HeaderRenderer.php` e `CoverHandler.php` **não existem no v6**.

---

## 16. Component (1)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Http/Components/Prefecture/Contents/Preview/DiarioOficialComponent.php` |

---

## 17. Presenter (1)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Http/Presenters/DiarioPresenter.php` |

---

## 18. Enum (0)

**Nenhum.** O `DiarioHasAreasTypesEnum` citado em docs antigos **não existe no v6**;
os tipos de matéria usam os literais `'text'` e `'file'`.

---

## 19. JavaScript — CMS (9)

| # | Arquivo |
|:-:|---------|
| 1 | `public/assets/js/custom/contents/diario-oficial/index.js` |
| 2 | `public/assets/js/custom/contents/diario-oficial/datatable.js` |
| 3 | `public/assets/js/custom/contents/diario-oficial/generation-status.js` |
| 4 | `public/assets/js/custom/contents/diario-oficial/config.js` |
| 5 | `public/assets/js/custom/contents/diario-oficial/areas.js` |
| 6 | `public/assets/js/custom/contents/diario-oficial/cover-image.js` — upload/preview/remoção da capa |
| 7 | `public/assets/js/custom/contents/diario-oficial/areas-diario/index.js` |
| 8 | `public/assets/js/custom/contents/areas-do-diario/datatable.js` — DataTable de Áreas |
| 9 | `public/assets/js/custom/contents/sub-areas-diario/datatable.js` — DataTable de Subáreas |

> O mapa antigo apontava `.../contents/areas-diario/index.js` (inexistente). O caminho correto
> é `.../contents/diario-oficial/areas-diario/index.js`.

---

## 20. JavaScript — Portal (2)

| # | Arquivo |
|:-:|---------|
| 1 | `public/assets/js/custom/portal/diario-oficial/viewer.js` |
| 2 | `public/assets/js/custom/contents/diario-oficial/diario_portal.js` |

---

## 21. JavaScript — Utilitários (1, órfão)

| # | Arquivo |
|:-:|---------|
| 1 | `public/assets/js/custom/utilities/helpers/preview-diario.js` — existe, mas **não é mais incluído** em `create.blade.php` |

> O fork `summernote-diario.js` citado no mapa antigo **foi removido** no v6.

---

## 22. CSS (1)

| # | Arquivo |
|:-:|---------|
| 1 | `public/assets/css/portal/diario-oficial-viewer.css` |

---

## 23. Routes (3)

| # | Arquivo |
|:-:|---------|
| 1 | `routes/basepro.php` (CMS routes) |
| 2 | `routes/web.php` (Portal routes + refresh) |
| 3 | `routes/breadcrumbs.php` (Breadcrumbs) |

---

## 24. Migrations relacionadas ao Diário (28)

| # | Arquivo |
|:-:|---------|
| 1 | `database/migrations/2023_01_16_152754_create_diario_certificados_table.php` |
| 2 | `database/migrations/2023_01_17_151845_create_diarios_table.php` |
| 3 | `database/migrations/2023_01_17_152132_create_diario_areas_table.php` |
| 4 | `database/migrations/2023_01_17_152336_create_diario_sub_areas_table.php` |
| 5 | `database/migrations/2023_01_17_152557_create_diario_has_areas_table.php` |
| 6 | `database/migrations/2023_01_31_091405_alter_edicao_to_diario_oficial.php` |
| 7 | `database/migrations/2023_02_06_152058_add_to_diario_oficial_itens.php` |
| 8 | `database/migrations/2023_04_10_090049_create_view_to_diario_oficial.php` |
| 9 | `database/migrations/2023_04_19_091650_update_view_diario_oficial.php` |
| 10 | `database/migrations/2023_05_22_142218_create_view_to_diario_oficial_pdf.php` |
| 11 | `database/migrations/2023_05_29_133343_create_view_to_areas_do_diario.php` |
| 12 | `database/migrations/2023_05_29_135015_create_view_to_sub_areas_do_diario.php` |
| 13 | `database/migrations/2023_05_31_144619_create_diario_configs_table.php` |
| 14 | `database/migrations/2023_09_18_110912_update_view_diario_pdf.php` |
| 15 | `database/migrations/2024_07_03_221222_update_lei_validadora_in_diarios_table.php` |
| 16 | `database/migrations/2024_07_31_025708_add_columns_number_column_to_diario_has_areas_table.php` |
| 17 | `database/migrations/2024_09_17_090831_add_permission_edit_to_diario_oficial.php` |
| 18 | `database/migrations/2024_09_17_092831_update_view_diario_oficial_with_permission_edit.php` |
| 19 | `database/migrations/2024_10_31_022347_add_has_line_column_to_diarios_table.php` |
| 20 | `database/migrations/2024_11_19_100001_add_logo_position_and_header_img_columns_to_diario_configs_table.php` |
| 21 | `database/migrations/2025_01_29_004016_add_order_column_to_diario_has_areas_table.php` |
| 22 | `database/migrations/2026_09_03_100000_add_workflow_to_diarios_table.php` |
| 23 | `database/migrations/2026_09_03_100100_update_view_diario_oficial_with_status_workflow.php` |
| 24 | `database/migrations/2026_09_04_150000_add_file_attachment_to_diario_has_areas_table.php` |
| 25 | `database/migrations/2026_09_10_100000_add_line_customs_to_diarios_table.php` |
| 26 | `database/migrations/2026_09_10_100100_add_cover_image_to_diarios_table.php` |
| 27 | `database/migrations/2026_09_10_100200_add_generation_status_to_diarios_table.php` |
| 28 | `database/migrations/2026_09_10_100300_update_view_diario_oficial_with_generation_status.php` |

> No v6 **não há** migration de adendo nem as migrations `2025_09_*` de `adendo_id`/`file_in`/`path`, `central_line_customs`, `cover_image` ou as views `*_two` citadas no mapa antigo. Todas foram re-datadas/consolidadas nas de 2026.

---

## 25. Seeds dedicados ao Diário (6)

| # | Arquivo |
|:-:|---------|
| 1 | `database/seeds/AtualizacaoDiario.php` |
| 2 | `database/seeds/DiarioCaturiteSeeder.php` |
| 3 | `database/seeds/UpdateManualAreasDiarioSeeder.php` |
| 4 | `database/seeds/AddDiarioOficialPublishPermissionSeeder.php` |
| 5 | `database/seeds/AddDiarioOficialSegregacaoFuncoesConfigSeeder.php` |
| 6 | `database/seeds/AddDiarioOficialWorkflowRolesSeeder.php` |

---

## 26. Service Providers (3)

| # | Arquivo |
|:-:|---------|
| 1 | `app/Providers/RepositoryServiceProvider.php` (bindings) |
| 2 | `app/Providers/ConfigHeaderServiceProvider.php` (view namespace) |
| 3 | `app/Providers/MenuServiceProvider.php` (menu item) |

---

## 27. Image Assets (7)

| # | Arquivo |
|:-:|---------|
| 1 | `public/assets/images/diario-oficial/diario_oficial.png` |
| 2 | `public/assets/images/diario-oficial/uma-coluna.png` |
| 3 | `public/assets/images/diario-oficial/duas-colunas.png` |
| 4 | `public/assets/images/diario-oficial/com-linha.png` |
| 5 | `public/assets/images/diario-oficial/logo-meio.png` |
| 6 | `public/assets/images/diario-oficial/logo-esquerda.png` |
| 7 | `public/assets/images/diario-oficial/logo-direita.png` |

### Imagens usadas nos templates HTML/PDF (`public/img/`)

| Arquivo | Uso |
|---------|-----|
| `public/img/diario-oficial(diario).png` | Cabeçalho do template `pdf/index.blade.php` |
| `public/img/diario-oficial(oficial).png` | Cabeçalho do template `pdf/index.blade.php` |
| `public/img/qrcode.png` | QR Code — **gerado em runtime** por `generatePdfFile()` (SimpleQrCode, com `config('app.url')`), consumido pelo `FPdfService::Header()` |

---

## 28. Wiki (já existente)

| # | Arquivo |
|:-:|---------|
| 1 | `wiki/modules/DiarioOficial/CadeiaDeErros_ColunasPDF.md` |

---

## 29. Outros Arquivos com Referências

| # | Arquivo | Referência |
|:-:|---------|------------|
| 1 | `app/Rules/ConditionalRequiredSlug.php` | String `'diario-oficial'` |
| 2 | `database/seeds/CategoryContentTableSeeder.php` | Slug `'diario-oficial'` |
| 3 | `database/seeds/ChangeLogTableSeeder.php` | Changelog do Diário |
| 4 | `database/seeds/DatabaseSeeder.php` | Chama DiarioSeeders |
| 5 | `database/seeds/RolesTableSeeder.php` | Permissões `diario-*` |

---

## 30. Testes / validação (novo no v6)

| # | Arquivo |
|:-:|---------|
| 1 | `tests-e2e/` — suíte Playwright CMS/Portal (`tests/diario-cms.spec.ts`, etc.) + `BASELINE.md` |
| 2 | `tests-e2e/scenarios.cjs` / `scenarios-refetch.cjs` — harness da matriz de cenários |
| 3 | `tests-e2e/fixtures/scenario/` — PDFs de 1/2/3/5/8/18 págs, landscape e imagem inline |
| 4 | `tests-e2e/scripts/sniff-visuals.sh` + `tests-e2e/sniff/baselines/` / `sniff/current/` — gate visual (sniffCSS) |
