corisco 1.3.0-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,368 @@
1
+ # ChatJT - Extensão para Captura de Documentos PJe
2
+
3
+ Esta extensão do Chrome integra com o sistema PJe (Processo Judicial Eletrônico) para capturar documentos automaticamente e enviá-los para o ChatJT.
4
+
5
+ ## Arquitetura
6
+
7
+ ### Visão Geral
8
+
9
+ A extensão é composta por múltiplos módulos que trabalham em conjunto para detectar, capturar e processar documentos do PJe:
10
+
11
+ ```mermaid
12
+ graph TD
13
+ subgraph Content Script
14
+ A[content.js] --> B[UI Panel]
15
+ B --> C[ChatJT Iframe]
16
+ end
17
+
18
+ subgraph PJe Tool
19
+ D[main.js] --> E[PJeCurrentDocumentCapture]
20
+ D --> F[PJeSelectedDocuments]
21
+ D --> G[PJeTimeline]
22
+ end
23
+
24
+ E --> H[Captura Doc. Atual]
25
+ F --> I[Captura Docs. Selecionados]
26
+ G --> J[Captura Timeline]
27
+
28
+ subgraph Comunicação
29
+ H --> C
30
+ I --> C
31
+ J --> C
32
+ end
33
+
34
+ ```
35
+
36
+ ### Fluxo de Funcionamento
37
+
38
+ ```mermaid
39
+ sequenceDiagram
40
+ participant User as Usuário
41
+ participant Page as Página PJe
42
+ participant CS as Content Script
43
+ participant PJeTool as Módulos PJe
44
+ participant Iframe as ChatJT Iframe
45
+
46
+ Page->>CS: Carrega página
47
+ CS->>PJeTool: Scripts são injetados (manifest.json)
48
+ PJeTool->>PJeTool: pje-document.js inicializa módulos
49
+ PJeTool->>Page: Observa mudanças no DOM
50
+
51
+ User->>Page: Navega para um documento
52
+ PJeTool->>PJeTool: Detecta e captura documento
53
+ PJeTool->>Iframe: Envia dados via postMessage
54
+
55
+ User->>Page: Seleciona documentos na timeline
56
+ User->>Iframe: Clica em "Anexar Selecionados"
57
+ Iframe->>PJeTool: Solicita extração
58
+ PJeTool->>Iframe: Envia documentos capturados
59
+ ```
60
+
61
+ ## Estrutura de Arquivos
62
+
63
+ ```text
64
+ chat-jt-extensao/
65
+ ├── manifest.json # Configuração da extensão
66
+ ├── config.js # Configurações centralizadas
67
+ ├── content.js # Script principal injetado
68
+ ├── popup/ # Interface do popup
69
+ ├── tools/ # Módulos de captura PJe
70
+ │ └── pje
71
+ │ ├── main.js # Gerenciador principal
72
+ │ ├── pje-current-document.js # Captura documento atual
73
+ │ ├── pje-selected-documents.js # Captura documentos selecionados
74
+ │ └── pje-timeline.js # Extração da timeline
75
+ ├── public/ # Assets (ícones, etc.)
76
+ └── styles/ # Estilos CSS
77
+ ```
78
+
79
+ ## Módulos Principais
80
+
81
+ ### 1. Main (Gerenciador Principal)
82
+
83
+ - **Responsabilidade**: Coordena todos os módulos e gerencia comunicação
84
+ - **Funcionalidades**:
85
+ - Inicialização dos módulos especializados
86
+ - Distribuição de mensagens entre módulos
87
+ - Métodos comuns (extração de IDs, download de PDFs, etc.)
88
+
89
+ ### 2. PJeCurrentDocumentCapture
90
+
91
+ - **Responsabilidade**: Captura do documento atualmente visualizado
92
+ - **Funcionalidades**:
93
+ - Detecção automática de documentos
94
+ - Captura de PDFs via API
95
+ - Fallback para captura como TXT
96
+ - Observação de mudanças no DOM
97
+
98
+ ### 3. PJeSelectedDocuments
99
+
100
+ - **Responsabilidade**: Captura de múltiplos documentos selecionados
101
+ - **Funcionalidades**:
102
+ - Detecção de documentos marcados/selecionados
103
+ - Captura em lote
104
+ - Identificação por cor de fundo e classes CSS
105
+
106
+ ### 4. PJeTimeline
107
+
108
+ - **Responsabilidade**: Extração da timeline do processo
109
+ - **Funcionalidades**:
110
+ - Mapeamento de documentos na timeline
111
+ - Correlação entre IDs alfanuméricos e numéricos
112
+ - Extração de metadados dos documentos
113
+
114
+ ## Configuração
115
+
116
+ ### config.js
117
+
118
+ Este arquivo centraliza todas as configurações da extensão:
119
+
120
+ ```javascript
121
+ window.EXTENSION_CONFIG = {
122
+ // Configurações da aplicação
123
+ app: {
124
+ name: 'ChatJT', // Nome da extensão
125
+ version: '1.0', // Versão
126
+ iframe_url: 'http://localhost:3000/chat', // URL do ChatJT
127
+ },
128
+
129
+ // Configurações da interface
130
+ ui: {
131
+ panel: {
132
+ min_width: 520, // Largura mínima do painel
133
+ max_width_ratio: 0.5, // Máximo 50% da tela
134
+ },
135
+ },
136
+
137
+ // Assets da extensão
138
+ assets: {
139
+ icon: 'public/logo-white-128.png', // Ícone principal
140
+ chevron: 'public/chevron-right.svg', // Ícone de seta
141
+ },
142
+
143
+ // Configurações de desenvolvimento
144
+ development: {
145
+ debug: true, // Habilita logs
146
+ log_level: 1, // Nível de detalhamento (1-3)
147
+ },
148
+ };
149
+ ```
150
+
151
+ #### Parâmetros Configuráveis
152
+
153
+ - **`app.iframe_url`**: URL do ChatJT (altere para produção)
154
+ - **`ui.panel.min_width`**: Largura mínima do painel lateral
155
+ - **`ui.panel.max_width_ratio`**: Proporção máxima da tela
156
+ - **`development.debug`**: Habilita/desabilita logs no console
157
+ - **`development.log_level`**: Controla verbosidade dos logs (1=básico, 2=detalhado, 3=verbose)
158
+
159
+ ### manifest.json
160
+
161
+ Arquivo de configuração principal da extensão Chrome:
162
+
163
+ ```json
164
+ {
165
+ "manifest_version": 3,
166
+ "name": "ChatJT",
167
+ "version": "1.0",
168
+ "description": "Extensão ChatJT para captura de documentos PJe",
169
+
170
+ "permissions": ["storage", "tabs", "activeTab"],
171
+
172
+ "host_permissions": [
173
+ "https://pje-hml.trt19.jus.br/*", // Hosts permitidos
174
+ "https://pje.trt19.jus.br/*"
175
+ ],
176
+
177
+ "content_scripts": [
178
+ {
179
+ "matches": ["https://*.jus.br/*"],
180
+ "css": ["style.css"],
181
+ "js": [
182
+ "config.js",
183
+ "utils.js",
184
+ "tools/pje/main.js",
185
+ "tools/pje/pje-current-document.js",
186
+ "tools/pje/pje-selected-documents.js",
187
+ "tools/pje/pje-timeline.js",
188
+ "content.js"
189
+ ]
190
+ }
191
+ ],
192
+
193
+ "web_accessible_resources": [
194
+ {
195
+ "resources": ["public/*"],
196
+ "matches": ["https://*.jus.br/*"]
197
+ }
198
+ ]
199
+ }
200
+ ```
201
+
202
+ #### Principais Alterações no Manifest
203
+
204
+ 1. **Adicionar novos hosts**:
205
+
206
+ ```json
207
+ "host_permissions": [
208
+ "https://pje-hml.trt19.jus.br/*",
209
+ "https://pje.trt19.jus.br/*",
210
+ "https://pje.trt1.jus.br/*" // Novo host
211
+ ]
212
+ ```
213
+
214
+ ## Sistema de Logs
215
+
216
+ A extensão possui um sistema de logging centralizado com 3 níveis:
217
+
218
+ - **Nível 1 (info)**: Informações básicas
219
+ - **Nível 2 (detail)**: Informações detalhadas
220
+ - **Nível 3 (verbose)**: Informações muito detalhadas
221
+
222
+ ```javascript
223
+ ChatJTLog.info('Mensagem básica');
224
+ ChatJTLog.detail('Informação detalhada');
225
+ ChatJTLog.verbose('Informação muito detalhada');
226
+ ChatJTLog.warn('Aviso');
227
+ ChatJTLog.error('Erro');
228
+ ```
229
+
230
+ ## Comunicação Entre Módulos
231
+
232
+ A comunicação acontece através de `postMessage` entre os módulos e o iframe:
233
+
234
+ ```javascript
235
+ // Envio de documento capturado
236
+ this.pjeDocument.sendToIframe({
237
+ type: 'DOCUMENT_EXTRACTED',
238
+ document: documentData,
239
+ });
240
+
241
+ // Tipos de mensagens suportadas
242
+ DOCUMENT_EXTRACTED; // Documento capturado
243
+ DOCUMENT_DETECTED; // Documento detectado
244
+ DOCUMENT_REMOVED; // Documento removido
245
+ SELECTED_DOCUMENTS_EXTRACTED; // Documentos selecionados
246
+ TIMELINE_DATA_EXTRACTED; // Timeline extraída
247
+ ```
248
+
249
+ ## Instalação e Desenvolvimento
250
+
251
+ 1. **Clone o repositório**
252
+ 2. **Configure o ambiente**:
253
+ - Altere os config.[env].ts dentro de `src/config/` conforme necessário
254
+ - Ajuste manifest.json para os hosts desejados
255
+ 3. **Instale as dependências**
256
+ - Execute `npm install` (é necessário ter o Node.js instalado)
257
+ 4. **Faça o build da extensão em Desenvolvimento**
258
+ - Execute `npm run build:dev` para gerar os arquivos necessários em `dist/`
259
+ 5. **Carregue no Chrome**:
260
+ - Abra `chrome://extensions/`
261
+ - Ative "Modo desenvolvedor"
262
+ - Clique em "Carregar extensão sem compactação"
263
+ - Selecione a pasta `dist/`
264
+
265
+ ### Versionamento automático
266
+
267
+ Para atualizar a versão automaticamente, utilize o comando `npm run bump` com os parâmetros desejados:
268
+
269
+ ```bash
270
+ # Para aumentar a versão patch 0.0.+1
271
+ npm run bump:patch
272
+
273
+ # Para aumentar a versão minor 0.+1.0
274
+ npm run bump:minor
275
+
276
+ # Para aumentar a versão major +1.0.0
277
+ npm run bump:major
278
+
279
+ # Para designar uma versão específica
280
+ npm run bump -- 1.2.3
281
+ ```
282
+
283
+ Esse comando atualizará o `package.json`, `manifest.json` e outros arquivos de configuração em `src/config/` com a nova versão.
284
+
285
+ ## Publicação do Módulo NPM
286
+
287
+ ### Configuração do Repositório Nexus
288
+
289
+ A extensão utiliza o repositório npm interno do TRT19 para publicação de pacotes.
290
+
291
+ **Repositório**: `https://nexus.trt19.jus.br/repository/npm/`
292
+
293
+ ### Configuração de Autenticação
294
+
295
+ 1. **Gere as credenciais em base64**:
296
+
297
+ - Utilize o comando abaixo, substituindo `user` e `password` pelas suas credenciais do Nexus (senha de rede):
298
+
299
+ ```bash
300
+ echo -n 'user:password' | openssl base64
301
+ ```
302
+
303
+ 2. **Configure o arquivo `~/.npmrc`**:
304
+
305
+ - Crie se não existir e adicione a linha abaixo, substituindo `<valor_base64_gerado>` pelo valor obtido no passo anterior:
306
+
307
+ ```bash
308
+ //nexus.trt19.jus.br/repository/npm/:_auth=<valor_base64_gerado>
309
+ ```
310
+
311
+ 3. **Verifique a autenticação**:
312
+
313
+ ```bash
314
+ npm whoami --registry=https://nexus.trt19.jus.br/repository/npm/
315
+ ```
316
+
317
+ - Deve retornar o nome do usuário se a autenticação estiver correta.
318
+
319
+ ### Publicação
320
+
321
+ Para publicar uma nova versão do pacote:
322
+
323
+ ```bash
324
+ # 1. Atualize a versão (se necessário)
325
+ npm run bump:patch # ou minor/major
326
+
327
+ # 2. Faça o build do projeto
328
+ npm run build:prd
329
+
330
+ # 3. Publique no repositório interno
331
+ npm publish --registry=https://nexus.trt19.jus.br/repository/npm/
332
+
333
+ #4. Se quiser publicar em ambientes diferentes, use as flags --tag (dev, hml)
334
+ # Exemplo para publicar como 'hml' (homologação)
335
+ npm publish --tag hml --registry=https://nexus.trt19.jus.br/repository/npm/
336
+ ```
337
+
338
+ ### Instalação de Pacotes Publicados
339
+
340
+ Para instalar pacotes do repositório interno em outros projetos:
341
+
342
+ ```bash
343
+ # Instalar usando o registry específico
344
+ npm install --registry=https://nexus.trt19.jus.br/repository/npm/ nome-do-pacote
345
+
346
+ # Ou configurar o registry globalmente
347
+ npm config set registry https://nexus.trt19.jus.br/repository/npm/
348
+ npm install nome-do-pacote
349
+ ```
350
+
351
+ ## Troubleshooting
352
+
353
+ ### Problemas com Publicação NPM
354
+
355
+ **Erro de autenticação**:
356
+
357
+ - Verifique se as credenciais base64 estão corretas no `~/.npmrc`
358
+ - Teste a autenticação: `npm whoami --registry=https://nexus.trt19.jus.br/repository/npm/`
359
+
360
+ **Erro de permissão**:
361
+
362
+ - Verifique se o usuário tem permissão de publicação no repositório Nexus
363
+ - Contate o administrador do Nexus para liberação de acesso
364
+
365
+ **Versão já existe**:
366
+
367
+ - Atualize a versão: `npm run bump:patch` ou `minor` ou `major`
368
+ - Ou force a republicação: `npm publish --force --registry=...`
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "corisco",
3
+ "private": false,
4
+ "version": "1.3.0-dev",
5
+ "description": "Corisco - Extensão ChatJT para captura de documentos PJe",
6
+ "type": "module",
7
+ "main": ".dist/corisco.umd.js",
8
+ "module": ".dist/corisco.es.js",
9
+ "types": ".dist/index.d.ts",
10
+ "files": [
11
+ ".dist/**/*",
12
+ "README.md"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "types": "./.dist/index.d.ts",
17
+ "require": "./.dist/corisco.umd.js",
18
+ "import": "./.dist/corisco.es.js"
19
+ }
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://nexus.trt19.jus.br/repository/npm/"
24
+ },
25
+ "keywords": [
26
+ "pje",
27
+ "chatjt",
28
+ "extensao",
29
+ "chrome"
30
+ ],
31
+ "author": "TRT19",
32
+ "license": "GPL-3.0-only",
33
+ "scripts": {
34
+ "dev": "cross-env NODE_ENV=dev vite",
35
+ "build": "cross-env NODE_ENV=dev vite build",
36
+ "build:dev": "cross-env NODE_ENV=dev vite build",
37
+ "build:hml": "cross-env NODE_ENV=hml vite build",
38
+ "build:prd": "cross-env NODE_ENV=prd vite build",
39
+ "bump": "bash ops/bump-version.sh",
40
+ "bump:patch": "bash ops/bump-version.sh -patch",
41
+ "bump:minor": "bash ops/bump-version.sh -minor",
42
+ "bump:major": "bash ops/bump-version.sh -major",
43
+ "publish:nexus:dev": "npm run build:dev && npm publish --tag dev --registry=https://nexus.trt19.jus.br/repository/npm/",
44
+ "publish:nexus:hml": "npm run build:hml && npm publish --tag hml --registry=https://nexus.trt19.jus.br/repository/npm/",
45
+ "publish:nexus": "npm run build:prd && npm publish --tag latest --registry=https://nexus.trt19.jus.br/repository/npm/"
46
+ },
47
+ "dependencies": {
48
+ "@sentry/browser": "^10.8.0",
49
+ "@tailwindcss/vite": "^4.1.11",
50
+ "js-yaml": "^4.1.0",
51
+ "pdfjs-dist": "^5.4.54",
52
+ "react": "^19.1.0",
53
+ "react-dom": "^19.1.0",
54
+ "react-resizable-panels": "^3.0.5",
55
+ "webextension-polyfill": "^0.12.0"
56
+ },
57
+ "devDependencies": {
58
+ "@eslint/js": "^9.30.1",
59
+ "@types/chrome": "^0.1.1",
60
+ "@types/firefox-webext-browser": "^120.0.4",
61
+ "@types/js-yaml": "^4.0.9",
62
+ "@types/node": "^24.5.1",
63
+ "@types/react": "^19.1.8",
64
+ "@types/react-dom": "^19.1.6",
65
+ "@types/webextension-polyfill": "^0.12.3",
66
+ "@vitejs/plugin-react": "^4.6.0",
67
+ "cross-env": "^10.0.0",
68
+ "eslint": "^9.30.1",
69
+ "eslint-plugin-react-hooks": "^5.2.0",
70
+ "eslint-plugin-react-refresh": "^0.4.20",
71
+ "globals": "^16.3.0",
72
+ "typescript": "~5.8.3",
73
+ "typescript-eslint": "^8.35.1",
74
+ "vite": "^7.0.4",
75
+ "vite-plugin-static-copy": "^3.1.1"
76
+ }
77
+ }