Files

8.4 KiB

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

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

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 -ExecutionPolicy Bypass -File tools/bump-extension-version.ps1

Quando uma versao especifica for solicitada, informe o valor explicitamente:

powershell -ExecutionPolicy Bypass -File tools/bump-extension-version.ps1 -Version 1.0.25