# SDR — Site HTML e rastreabilidade editorial


> **Eixo:** `Ambos` (Modelo de Servicos | Arquitetura Contratual | Ambos)

| Campo | Valor |
|-------|-------|
| **SSoT** | Sim — dono das regras para agentes manterem o site, paginas HTML e rastreio com documentos Markdown |
| **Estado** | âncora para `arquitetura-contratual/modelo-central-servicos.html` e `site/` |

---

## 1. Finalidade

Garantir que o site seja uma interface de navegacao e explicacao do modelo, alinhada aos SDRs e aos documentos de contratacao.

## 2. Regras canônicas

- O site nao deve ser dono de regra normativa quando houver `sdr-*` dono.
- Paginas HTML podem conter resumo, visualizacao e texto explicativo, mas devem apontar a fonte.
- A versao multipagina em `site/` deve manter navegacao por temas: inicio, governanca, operacao, seguranca, planejamento, aspectos comuns, mapa de localidades e outros.
- O arquivo continuo `modelo-central-servicos.html` pode funcionar como documento de referencia ampliado.
- Alteracao em SDR que afete site deve atualizar links, resumos e blocos de texto integral quando existirem.

## 3. Estrutura minima do site

- pagina inicial com arquitetura C1/C2/C3;
- pagina de governanca com IMR, ANS, RACI, glosas e PPSI/LGPD;
- pagina de operacao com escopo C2, niveis e capacidade;
- pagina de seguranca com escopo C3, SOC, IAM, backup e continuidade;
- pagina de planejamento com DFD, ETP, TR, riscos, precos e SDRs;
- pagina de aspectos comuns com evidencia, preco, transicao, ARRC e integracao.
- pagina de mapa de localidades (`mapa-ibama.html`) com Leaflet, dados gerados e legenda de precisao de coordenada.
- **Marca / titulo do site:** texto unico **Central de Serviços de TI** em `<title>` das paginas (padrao `{Secao} — Central de Serviços de TI` quando couber), `<h1>` da pagina inicial (`site/index.html`), rodape (`<footer>`) das paginas HTML e no documento `modelo-central-servicos.html`. **Nao** usar a expressao legada *Modelo de Contratação de Operações de TI* (misturava eixo de serviços com contratação; ver [`glossario-eixos.md`](./glossario-eixos.md)).
- **Busca** nas paginas multipagina em `site/`: interface em `site/assets/js/site-search.js`, indice estatico em `site/assets/js/site-search-index.js` (gerado; nao editar manualmente como fonte), geracao pelo script `arquitetura-contratual/scripts/gerar_site_search_index.py` a partir dos HTML do site. Ao alterar titulos ou conteudo relevante para busca, regenerar o indice e validar na UI.
- **Siglas (tooltip de texto):** script `arquitetura-contratual/site/assets/js/siglas.js`, incluido com `<script src="./assets/js/siglas.js" defer></script>` nas paginas multipagina do `site/` (e em `ver-md.html`) que devem oferecer o glossario. O **tooltip** e o atributo nativo **`title`** do HTML em `<abbr class="sigla" title="…">…</abbr>` (comportamento do navegador, nao biblioteca de UI). O script percorre o texto visivel **fora** de `code`, `pre` e `svg`, envolvendo ocorrencias **exatas** das chaves do objeto `GLOSSARIO` definido no proprio `siglas.js`; em SVG, usar o mecanismo documentado no arquivo (`SVG_TITULOS`). HTML ja marcado com `<abbr class="sigla" …>` (ex.: tabela RACI) permanece. **Nova sigla:** acrescentar chave e texto do `title` no `GLOSSARIO`; manter comentario de cabecalho do arquivo alinhado a este SDR. Nao duplicar aqui a lista inteira de entradas — a fonte operacional das chaves e o JS.
- **Espelho estatico no Firebase (`site/repositorio/`):** gerado por [`arquitetura-contratual/scripts/sync_site_repositorio.py`](../arquitetura-contratual/scripts/sync_site_repositorio.py) antes do deploy — copia `SDRs/`, `Informacoes-gerais/`, `PPSI/`, arquivos-chave de `processo-contratacao/`, Markdown de apoio em `Dados-ibama/` e minutas em `arquitetura-contratual/` para URLs profundas sob o mesmo `public` do Hosting. Os links `ver-md.html?f=` devem usar caminhos **relativos a `site/`** (ex.: `repositorio/SDRs/sdr-0001-….md`). O documento ampliado e publicado como `site/modelo-central-servicos.html` (copia pelo mesmo script, com reescrita de links internos). **Limitacao:** arquivos `.md` servidos como estaticos **nao** passam pelo `access-gate.js`; o token protege sobretudo a entrada pelas paginas HTML que carregam o gate (ver comentario em `site/assets/js/access-gate.js`).
- **HTML estatico por SDR (`site/sdr/`):** gerado por [`arquitetura-contratual/scripts/gerar_html_estatico_sdrs.py`](../arquitetura-contratual/scripts/gerar_html_estatico_sdrs.py) a partir de `SDRs/sdr-*.md` — uma pagina `.html` por SDR com **conteudo completo no primeiro carregamento** (importacao por URL em ferramentas que nao executam o fetch do `ver-md.js`). Inclui `site/sdr/index.html` (catalogo). Dependencia Python: `markdown` (lista em [`requirements-gerar-html-sdr.txt`](../arquitetura-contratual/scripts/requirements-gerar-html-sdr.txt)). Guia para Notebook LM: [`docs/notebook-lm-fontes.md`](../docs/notebook-lm-fontes.md). **Ordem sugerida com deploy:** `sync_site_repositorio.py` → `gerar_html_estatico_sdrs.py` → `gerar_site_search_index.py`.
- **Lista de URLs para Notebook LM (`site/sdr/urls.txt`):** gerado pelo script [`arquitetura-contratual/scripts/gerar_site_search_index.py`](../arquitetura-contratual/scripts/gerar_site_search_index.py) ao final de sua execucao — contem uma URL absoluta por linha cobrindo todas as paginas do site (`site/*.html` + `site/sdr/*.html`), exceto paginas utilitarias (`ver-md.html`, `planejamento-redirect.html`). URL publica: `https://centralservicos.web.app/sdr/urls.txt`. Usar essa URL diretamente no campo "Adicionar fonte por URL" do Notebook LM (ou equivalente) para importar todo o corpus do site de uma vez. O arquivo e regenerado automaticamente a cada deploy; nao editar manualmente.
- **Verificacao de links e inventario de URLs (Notebook LM):** script [`arquitetura-contratual/scripts/verificar_links_e_inventario_site.py`](../arquitetura-contratual/scripts/verificar_links_e_inventario_site.py) — varre `href`/`src` nos HTML do `site/`, valida destinos no disco (inclui `ver-md.html?f=`), grava `site/diagnostico/relatorio-links-falhas.{md,json}` e gera `site/notebook-lm-urls.txt` (uma URL absoluta **.html** por linha, virgula no final; opcional `--include-repo-md` mapeia espelho `repositorio/SDRs/sdr-*.md` para URL `sdr/sdr-*.html`, nunca `.md` no inventario). Rodar apos sync + HTML estatico; `--base-url` (default `https://centralservicos.web.app`).
- **Roadmap CS:** pagina [`roadmap-cs.html`](../arquitetura-contratual/site/roadmap-cs.html) (subitem de **Outros**); registro em [`SDRs/cs-roadmap/registro.yaml`](./cs-roadmap/registro.yaml); geracao da tabela por [`gerar_roadmap_cs_html.py`](../arquitetura-contratual/scripts/gerar_roadmap_cs_html.py). Esquema normativo: [sdr-0027](./sdr-0027-roadmap-central-servicos.md) — **nao** abrir segundo SDR so para o roadmap.

## 4. Regras para agentes

- Ao editar site, preservar links relativos e navegacao.
- Nao duplicar tabelas longas sem indicar fonte.
- Se uma regra mudar, atualizar primeiro o SDR dono e depois o site; a ordem **SDR → consumidores** (site, minutas, `processo-contratacao/`) em processos de agente está em [sdr-0025](./sdr-0025-propagacao-sdr-consumidores-site-contratacao.md) — edição de `sdr-*.md` em pedido dedicado: [sdr-0021 §8.4](./sdr-0021-planejamento-pre-alteracao-agente.md#84-alteração-exclusiva-de-sdrs-normativos).
- Usar linguagem curta, navegavel e coerente com o documento tecnico.
- Ao incluir nova pagina HTML em `site/` que deva ter glossario de siglas, carregar `siglas.js` como as demais e validar tooltip em termos do `GLOSSARIO`.
- Ao alterar `.md` embutidos no visualizador offline, rodar `node arquitetura-contratual/tools/gerar-bundle-md-portatil.mjs` para atualizar `portable-md-bundle.js`.

## 5. Consumidores

Site HTML, README de `arquitetura-contratual/`, apresentacoes e revisoes de arquitetura contratual e de serviços.

## 6. Mapa Leaflet (Ibama — localidades)

A pagina **`arquitetura-contratual/site/mapa-ibama.html`**, os scripts **`site/assets/js/mapa-ibama-data.js`** (gerado) e **`site/assets/js/mapa-ibama-init.js`**, o link em **`site/outros.html`**, e os KML em **`Dados-ibama/`** estao especificados em **[sdr-0020](./sdr-0020-dados-ibama-mapa-ativos-cmdb-kml.md)** (comandos de regeneracao, casamento de nomes, variante byCodex e variante dimensionamento). **Nao** duplicar aqui o procedimento completo.

Ao regenerar o site/mapa a partir dos SDRs:

1. Rodar `python Dados-ibama/gerar_mapa_ativos_bycodex.py`.
2. Rodar `python Dados-ibama/_calc_mapa_ativos.py`.
3. Rodar `python Dados-ibama/gerar_kml_mapa_ibama.py`.
4. Confirmar que `site/mapa-ibama.html` carrega `assets/js/mapa-ibama-data.js` e `assets/js/mapa-ibama-init.js`.

## Ligacoes

- [sdr-0003-indice-fonte-unica.md](./sdr-0003-indice-fonte-unica.md)
- [sdr-0015-rastreabilidade-normativa.md](./sdr-0015-rastreabilidade-normativa.md)
- [sdr-0020-dados-ibama-mapa-ativos-cmdb-kml.md](./sdr-0020-dados-ibama-mapa-ativos-cmdb-kml.md)

---

## Agentes de conformidade (Cursor)

Os três agentes abaixo aplicam-se à edição e à revisão dos arquivos `SDRs/sdr-*.md` (exceto `SDRs/templates/` e normas em `SDRs/governance/`). Este bloco é **informativo**; use o script na raiz do repositório para diagnóstico estrutural.

| Agente | Regra Cursor | Norma em `SDRs/governance/rules/` |
|--------|----------------|-------------------------------------|
| Verificador de conformidade SDR | [`sdr-conformity-checker.mdc`](../.cursor/rules/sdr-conformity-checker.mdc) | [`sdr-conformity-checker.md`](./governance/rules/sdr-conformity-checker.md) |
| Detector de implementação sem vínculo SDR | [`implementation-without-sdr-detector.mdc`](../.cursor/rules/implementation-without-sdr-detector.mdc) | [`implementation-without-sdr-detector.md`](./governance/rules/implementation-without-sdr-detector.md) |
| Anti-vibecoding sem SDR | [`no-vibecoding-without-sdr.mdc`](../.cursor/rules/no-vibecoding-without-sdr.mdc) | [`no-vibecoding-without-sdr.md`](./governance/rules/no-vibecoding-without-sdr.md) |

**Processo:** [`governance/README.md`](./governance/README.md) · **Rastreabilidade código:** [`traceability.md`](./traceability.md) · **Checagem:** `python scripts/check_sdr_conformity.py` (na raiz do repositório).

