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/.dist/corisco.es.js +38634 -0
- package/.dist/corisco.umd.js +320 -0
- package/.dist/pdf.worker.js +58148 -0
- package/README.md +368 -0
- package/package.json +77 -0
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
|
+
}
|