# PROMPT MESTRE: [Nome da Solução]
Adicione uma NOVA PÁGINA/ABA ao ifc4all (Vite + TypeScript puro), seguindo o
mesmo stack, a mesma estrutura e o visual do shell existente.
## Passo 0 (obrigatório, antes de qualquer tela)
Verificar se window.ifc4all.getCronograma() existe; se não existir, criar a
ponte em viewer/src/main.ts (código incluído no prompt) e validar com
console.log com um modelo IFC carregado.
## Adaptador + contrato canônico
Normalizar a ponte OU o CSV do Gantt para { id, nome, dataInicio, dataFim,
durationDays, eap, building, pavimento, summary1..4 } (datas ISO). Todo consumo
usa só o dado normalizado. Status derivado das datas (não há % de progresso).
## Funcionalidades (100% do PRD, nesta execução)
1. [Funcionalidade A] ... 2. [B] ... 3. [C] — cada BOTÃO com nome, posição e
ação; cada estado de tela (vazio, carregando, com dados, erro).
## Agente de IA (somente se o PRD definir)
System prompt literal do agente + endpoint do provedor escolhido pela equipe
(Gemini/OpenAI/Anthropic — endpoints e headers exatos, testados p/ navegador) +
tela de Config com campo de chave (type="password", localStorage; nunca .env).
## Qualidade e navegação
UX minimalista e funcional; responsivo; acessível; visual do ifc4all.
Todo botão de voltar/fechar/transição 100% funcional, sem recarregar a página
nem perder o modelo carregado; nenhum botão sem ação.
## Persistência (nada se perde no F5)
Inputs e snapshot do cronograma em localStorage; arquivos IFC importados em
IndexedDB com recarga automática ao abrir; "Limpar histórico" apaga os dois.
## Contrato de aceite (o OpenCode prova antes de declarar pronto)
typecheck/build sem erros; página aberta com modelo IFC carregado mostrando o
cronograma; F5 devolve modelo + dados sem novo import; todos os botões de
voltar/transição testados; cada critério do PRD apontado e testável em 1 clique.