# Arch Panel Extensao Chrome Manifest V3 que injeta o Arch Panel em paginas Oracle usadas pelo time de arquitetura, incluindo Workload Workbench e HCM FuseWelcome. ## Entry points - `manifest.json`: fonte oficial da versao, permissoes e content scripts. - `src/shared/config.js`: configuracao centralizada, constantes, IDs, endpoints e chaves de cache. - `src/shared/utils.js`: helpers compartilhados de strings, numeros, datas, DOM, escaping e extração de payloads. - `src/background/config.js`: configuracao especifica do service worker e URLs usadas pelos proxies de background. - `src/content/styles.css`: estilos da UI injetados pelo Manifest V3. - `src/content/shell-view.js`: shell visual injetado na pagina, incluindo tema, cores, alvo de insercao e scroll lock. - `src/content/templates.js`: templates estaticos de DOM usados pelo content script. - `src/content/hcm-page.js`: integracao com FuseWelcome, injecao do tile HCM e captura do token Worklist via iframe. - `src/content/modal-events.js`: controller de eventos delegados da modal, incluindo clicks, inputs e navegacao por teclado. - `src/content/workbench-controller.js`: controller de Workbench, dataset, refresh, detalhes, actions, forecast e calendario. - `src/content/manage-time-controller.js`: controller da modal Manage Time, incluindo carregamento, diff, foco, validacao e gravacao. - `src/content/export-html.js`: geracao do relatorio HTML standalone baixado pelo usuario. - `src/repositories/workbench-repository.js`: acesso e normalizacao de dados do Workload Workbench e Worklist user API. - `src/repositories/comcip-repository.js`: acesso e normalizacao de dados COMCIP, Manage Time e Service Requests. - `src/repositories/cache-repository.js`: persistencia dos payloads de dashboard, task types e token Worklist no IndexedDB. - `src/domain/ramp-forecast.js`: regras puras de calculo de ramp, delta de forecast e payload de atualizacao de forecast. - `src/domain/workload-dataset.js`: regras puras de normalizacao de workloads, snapshots, export payloads e indicadores do dashboard. - `src/domain/workload-calendar.js`: regras puras para calendario mensal/semanal de inicio dos workloads. - `src/domain/time-management.js`: regras puras de diff, assinatura, payload, validacao e datas do Manage time. - `src/domain/time-management-data.js`: normalizacao de payloads, options e DTOs usados pela modal Manage time. - `src/services/storage-service.js`: infraestrutura generica de IndexedDB. - `src/services/chrome-service.js`: wrappers Promise-based para APIs do Chrome usadas pelo content script. - `src/services/preferences-service.js`: persistencia local de preferencias visuais e ultima data selecionada no Manage Time. - `src/services/transport-service.js`: camada de transporte, page bridge, iframes autenticados e requests via background. - `src/views/render-helpers.js`: helpers reutilizaveis de apresentacao para tabelas, links e resumo do header. - `content-script.js`: entrypoint principal da UI e orquestracao de estado, eventos e requests. - `page-bridge.js`: bridge executada no contexto da pagina SPA para capturar e reutilizar headers autorizados. - `background.js`: service worker responsavel por proxy de requests, descoberta de frames e execucao em frames autenticados. - `tools/bump-extension-version.ps1`: script obrigatorio para atualizar a versao da extensao. ## Estrutura atual ```text src/ background/ config.js content/ export-html.js hcm-page.js manage-time-controller.js modal-events.js shell-view.js styles.css templates.js workbench-controller.js domain/ ramp-forecast.js workload-dataset.js workload-calendar.js time-management.js time-management-data.js repositories/ cache-repository.js comcip-repository.js workbench-repository.js views/ dashboard-view.js manage-time-view.js render-helpers.js workbench-modals-view.js services/ chrome-service.js preferences-service.js storage-service.js transport-service.js shared/ config.js utils.js background.js content-script.js page-bridge.js manifest.json ``` O `manifest.json` carrega `src/shared/config.js`, services, repositories, domain modules e views antes de `content-script.js`. Esses arquivos expõem namespaces em `globalThis` para manter compatibilidade com content scripts classicos do Manifest V3 sem exigir bundler. O CSS principal fica em `src/content/styles.css` e e injetado diretamente pela propriedade `css` do content script no `manifest.json`. Renderizadores maiores devem ficar em `src/views/`. O dashboard principal fica em `src/views/dashboard-view.js`, os modais de Workbench ficam em `src/views/workbench-modals-view.js` e a modal Manage Time fica em `src/views/manage-time-view.js`, mantendo `content-script.js` como orquestrador. Responsabilidades de shell injetado na pagina, como tema derivado do header Oracle, posicionamento do botao e bloqueio de scroll durante modal aberta, ficam em `src/content/shell-view.js`. A integracao especifica do HCM FuseWelcome fica em `src/content/hcm-page.js`. Regras de negocio puras devem ficar em `src/domain/`. Essa camada nao deve manipular DOM, IndexedDB, Chrome APIs ou executar requests; ela recebe dependencias simples por factory e retorna funcoes deterministicas. Requests, cache especifico da extensao e normalizadores de payload de APIs externas devem ficar em `src/repositories/`. Essa camada monta URLs, centraliza contratos de endpoint e transforma payloads remotos ou persistidos em DTOs consumidos pelo orquestrador. ## Fluxos principais - Workload dashboard: carrega usuario, customers, workloads, actions e service requests. - HCM tile: adiciona o tile `Arch Panel` dentro de `yourapps_groupNode_my_information` em `FuseWelcome`. - Worklist token: captura o token do iframe Worklist SaasUI e persiste em IndexedDB para resolver o usuario atual. - SPA Workbench iframe: cria um iframe oculto do Workload Workbench para obter contexto autenticado e executar requests da origem `spa.oracle.com`. - COMCIP Time Entry iframe: cria um iframe oculto do Manage Time para requests dependentes da sessao COMCIP. - Manage time: permite apontar horas, detectar criacao/alteracao/remocao e gravar via APIs de time entries. ## IndexedDB Banco: `arch-panel-extension-db` Store: `datasets` Chaves conhecidas: - `workload-dashboard`: ultimo dataset do dashboard. - `time-management-task-types`: cache de task types atualizado apenas em refresh data. - `worklist-saasui-token`: token atual extraido do iframe Worklist. ## Seguranca operacional - A extensao deve declarar apenas permissoes realmente usadas no `manifest.json`. - A bridge de pagina deve trocar mensagens apenas com origins explicitamente permitidos. - Tokens e headers de autorizacao nao devem ser logados. - Exports HTML devem escapar JSON inline e valores renderizados. ## Validacao local ```powershell node --check content-script.js node --check background.js node --check page-bridge.js node --check src/background/config.js node --check src/content/export-html.js node --check src/content/hcm-page.js node --check src/content/manage-time-controller.js node --check src/content/modal-events.js node --check src/content/shell-view.js node --check src/content/templates.js node --check src/content/workbench-controller.js node --check src/repositories/workbench-repository.js node --check src/repositories/comcip-repository.js node --check src/repositories/cache-repository.js node --check src/domain/ramp-forecast.js node --check src/domain/workload-dataset.js node --check src/domain/workload-calendar.js node --check src/domain/time-management.js node --check src/domain/time-management-data.js node --check src/views/dashboard-view.js node --check src/views/workbench-modals-view.js node --check src/views/manage-time-view.js node --check src/views/render-helpers.js node --check src/shared/config.js node --check src/shared/utils.js node --check src/services/storage-service.js node --check src/services/chrome-service.js node --check src/services/preferences-service.js node --check src/services/transport-service.js ``` ## Controle de versao A versao oficial da extensao fica em `manifest.json`. Toda alteracao funcional, visual ou tecnica na extensao deve incrementar a terceira casa da versao antes da entrega: ```powershell powershell -ExecutionPolicy Bypass -File tools/bump-extension-version.ps1 ``` Quando uma versao especifica for solicitada, informe o valor explicitamente: ```powershell powershell -ExecutionPolicy Bypass -File tools/bump-extension-version.ps1 -Version 1.0.25 ```