Browse Source

feat: Criação da tela de Fluxo de Proposições no SAPL

pull/3858/head
rangelbruno 12 months ago
parent
commit
e4d97d5433
  1. 4
      .gitignore
  2. 915
      FLUXO_PROPOSICOES.md
  3. 684
      GUIA_DO_PROJETO.md
  4. 246
      frontend/src/__global/scss/layouts/_home_index.scss
  5. 490
      frontend/webpack-stats.json
  6. 7
      sapl/base/urls.py
  7. 18
      sapl/base/views.py
  8. 2
      sapl/static/sapl/frontend/css/global.bdbed894.css
  9. BIN
      sapl/static/sapl/frontend/css/global.bdbed894.css.gz
  10. 0
      sapl/static/sapl/frontend/js/compilacao.61345e28.js
  11. 0
      sapl/static/sapl/frontend/js/compilacao.61345e28.js.gz
  12. 2
      sapl/static/sapl/frontend/js/global.b14eb920.js
  13. 0
      sapl/static/sapl/frontend/js/global.b14eb920.js.LICENSE.txt
  14. BIN
      sapl/static/sapl/frontend/js/global.b14eb920.js.gz
  15. 0
      sapl/static/sapl/frontend/js/painel.47412c96.js
  16. 0
      sapl/static/sapl/frontend/js/painel.47412c96.js.gz
  17. 0
      sapl/static/sapl/frontend/js/parlamentar.2ad05a26.js
  18. 0
      sapl/static/sapl/frontend/js/parlamentar.2ad05a26.js.gz
  19. 19
      sapl/templates/base.html
  20. 1050
      sapl/templates/fluxo_proposicoes.html
  21. 780
      sapl/templates/guia_projeto.html
  22. 235
      sapl/templates/index.html
  23. 401
      yarn.lock

4
.gitignore

@ -110,4 +110,8 @@ media/*
!media/.gitkeep !media/.gitkeep
restauracoes/* restauracoes/*
# Docker
docker/ docker/
docker-compose.yml
docker-compose.yaml

915
FLUXO_PROPOSICOES.md

@ -0,0 +1,915 @@
# Fluxo de Proposições no SAPL
## Visão Geral
O fluxo de proposições permite que **parlamentares** criem propostas legislativas (proposições) e as enviem para o **protocolo legislativo**. Após análise, o protocolo pode **incorporar** a proposição (transformando-a em matéria legislativa) ou **devolver** para correção.
---
## 1. Conceitos Fundamentais
### 1.1 O que é uma Proposição?
Uma **Proposição** é uma proposta inicial feita por um autor (geralmente um parlamentar) que **ainda não foi oficialmente incorporada** ao processo legislativo. É um estágio preliminar antes de se tornar uma **Matéria Legislativa**.
**Características:**
- Criada pelo parlamentar/autor
- Pode ser editada enquanto não for enviada
- Não tramita (ainda não é oficial)
- Não pode ser votada
- Possui número sequencial próprio
### 1.2 O que é uma Matéria Legislativa?
Uma **Matéria Legislativa** é a proposição que foi **oficialmente recebida e incorporada** ao processo legislativo da casa. Após a incorporação, a matéria pode tramitar, ser votada e seguir todo o fluxo legislativo.
**Características:**
- Criada pelo operador de protocolo ao incorporar proposição
- Possui número oficial (PL nº 1/2025, por exemplo)
- Tramita entre unidades
- Pode ser incluída em sessões e votada
- Possui protocolo (se configurado)
### 1.3 Diferença entre Proposição e Matéria Legislativa
| Característica | Proposição | Matéria Legislativa |
|----------------|------------|---------------------|
| **Status** | Proposta preliminar | Oficialmente incorporada |
| **Tramitação** | Não tramita | Tramita entre unidades |
| **Votação** | Não pode ser votada | Pode ser votada |
| **Criador** | Autor (Parlamentar) | Operador de Protocolo |
| **Edição** | Pode ser editada pelo autor | Editada por operadores autorizados |
| **Numeração** | Sequencial de proposições | Numeração oficial legislativa |
---
## 2. Atores do Sistema
### 2.1 Parlamentar
- Membro eleito da casa legislativa
- Possui cadastro completo (dados pessoais, foto, biografia, mandatos)
- Ao ser cadastrado, **automaticamente** um **Autor** é criado para ele
### 2.2 Autor
- Abstração que representa quem pode criar proposições
- Pode ser:
- Um Parlamentar
- Um Órgão
- Uma Comissão
- Cidadão (dependendo da configuração)
- Quando um Parlamentar é criado, um Autor é criado automaticamente
### 2.3 Usuário do Sistema
- Login para acessar o sistema
- Pode estar vinculado a um ou mais Autores (através de **OperadorAutor**)
- Quando vinculado a um Autor, entra automaticamente no grupo "Autor"
### 2.4 Operador de Autor (OperadorAutor)
- Vínculo entre um **usuário** e um **autor**
- Permite que um usuário opere em nome de um autor
- Um usuário pode ser operador de múltiplos autores
- Um autor pode ter múltiplos operadores
### 2.5 Grupo "Autor"
- Grupo de permissões do Django
- Usuários deste grupo podem:
- Criar proposições
- Editar suas próprias proposições
- Enviar proposições
- Retornar proposições enviadas (cancelar envio)
- Ver proposições devolvidas
### 2.6 Operador de Protocolo/Matéria
- Responsável por receber e processar proposições
- Pode:
- Receber proposições (via código ou lista)
- Incorporar proposições (transformar em matéria)
- Devolver proposições (com justificativa)
- Gerar protocolos
- Grupos: **Operador de Protocolo Administrativo** ou **Operador Geral**
---
## 3. Estados de uma Proposição
### 3.1 Rascunho (Não Enviada)
- **Datas**: `data_envio = NULL`, `data_recebimento = NULL`, `data_devolucao = NULL`
- **Quem vê**: Apenas o autor/operador que criou
- **Ações possíveis**: Editar, Excluir, Enviar
### 3.2 Pendente (Enviada, aguardando recebimento)
- **Datas**: `data_envio != NULL`, `data_recebimento = NULL`, `data_devolucao = NULL`
- **Quem vê**: Autor e Operadores de Protocolo
- **URL**: `/proposicao/pendente/`
- **Ações possíveis**:
- **Autor**: Retornar (cancelar envio)
- **Operador**: Receber ou Devolver
### 3.3 Devolvida
- **Datas**: `data_envio = NULL`, `data_recebimento = NULL`, `data_devolucao != NULL`
- **Justificativa**: Preenchida pelo operador
- **Quem vê**: Autor
- **URL**: `/proposicao/devolvida/`
- **Ações possíveis**: Autor pode corrigir e reenviar
### 3.4 Incorporada (Recebida)
- **Datas**: `data_envio != NULL`, `data_recebimento != NULL`, `data_devolucao = NULL`
- **Vinculação**: Vinculada a uma Matéria Legislativa ou Documento Acessório
- **Quem vê**: Todos com permissão
- **URL**: `/proposicao/recebida/`
- **Resultado**: Matéria Legislativa criada
---
## 4. Fluxo Completo Passo a Passo
### ETAPA 1: Criar Parlamentar com Usuário
#### 1.1 Criar o Parlamentar
1. **URL**: `/parlamentar/create`
2. **Quem pode**: Administradores ou Operadores com permissão
3. **Dados principais**:
- Nome Completo
- Nome Parlamentar
- CPF, RG
- Sexo
- Data de nascimento
- Foto (opcional)
- Biografia (opcional)
4. **Resultado**:
- Parlamentar criado
- **Autor criado automaticamente** vinculado ao parlamentar
#### 1.2 Criar Usuário no Sistema
1. **URL**: `/sistema/usuario/create`
2. **Dados**:
- Username (login): `joao.silva`
- Email: `joao.silva@camara.gov.br`
- Senha: Senha forte
- Nome completo: João da Silva
3. **Resultado**: Usuário criado, mas ainda sem permissões
#### 1.3 Vincular Usuário ao Autor
1. **URL**: `/sistema/usuario/{id}/edit`
2. No campo **"Autor"**, selecione o autor do parlamentar
3. Clique em **"Salvar"**
4. **Resultado**:
- Usuário adicionado ao grupo "Autor"
- Registro **OperadorAutor** criado vinculando usuário → autor
- Usuário agora pode criar proposições em nome do parlamentar
---
### ETAPA 2: Parlamentar Cria e Envia Proposição
#### 2.1 Login como Parlamentar
- Acesse: `http://seu-sapl.com/login/`
- Username: `joao.silva`
- Senha: (senha definida)
#### 2.2 Criar Nova Proposição
1. **URL**: `/proposicao/create`
2. **Formulário**:
**Campos principais**:
- **Tipo de Proposição**: Projeto de Lei, Emenda, Requerimento, Moção, etc.
- **Ementa/Descrição**: Descrição resumida da proposição
- **Matéria de Vinculação** (opcional): Se for documento acessório de matéria existente
**Opções de texto**:
- **Texto Original**: Upload de arquivo (PDF, DOC, ODT)
- **OU Texto Articulado**: Usar editor interno do sistema (artigos, parágrafos, incisos)
3. **Ações**:
- **Salvar**: Proposição fica como rascunho
- **Salvar e Adicionar Outro**: Salva e abre formulário novo
4. **Resultado**:
- Proposição criada com número sequencial
- Status: **Rascunho** (pode editar)
- URL de detalhes: `/proposicao/{id}/`
#### 2.3 Editar Proposição (enquanto rascunho)
1. **URL**: `/proposicao/{id}/edit`
2. Altere qualquer campo
3. Salve novamente
4. **Importante**: Só pode editar enquanto não enviada
#### 2.4 Enviar Proposição
1. Acesse: `/proposicao/{id}/`
2. Revise todos os dados
3. Clique em **"Enviar Proposição"** (ou `?action=send`)
4. **Confirme** o envio
5. **O que acontece**:
- `data_envio` = timestamp atual
- `usuario_envio` = usuário logado
- Texto articulado é travado (se houver)
- **Código de recebimento** é gerado (hash)
- Número provável de matéria é estimado
- Status muda para: **Pendente**
6. **Recibo**:
- URL: `/proposicao/recibo/{id}`
- Contém código hash para recebimento
- Pode ser impresso
- Entregar ao protocolo
#### 2.5 Retornar Proposição (cancelar envio)
- **Quando**: Antes de ser recebida pelo protocolo
- **Como**: Acessar `/proposicao/{id}/?action=return`
- **Resultado**:
- `data_envio` = NULL
- Proposição volta ao estado de rascunho
- Pode ser editada novamente
#### 2.6 Ver Minhas Proposições
- **URL**: `/proposicao/`
- Lista todas proposições do autor logado
- Filtra por status: Rascunho, Pendente, Devolvida, Incorporada
---
### ETAPA 3: Operador Recebe e Incorpora Proposição
#### 3.1 Login como Operador de Protocolo
- Grupos: **Operador de Protocolo Administrativo** ou **Operador Geral**
#### 3.2 Ver Proposições Pendentes
1. **URL**: `/proposicao/pendente/`
2. **Visualização**: Lista de proposições enviadas aguardando recebimento
3. **Informações mostradas**:
- Data de envio
- Autor
- Tipo de proposição
- Ementa/Descrição
- Link para receber
#### 3.3 Receber Proposição
**Opção A: Via Código Hash do Recibo**
1. **URL**: `/proposicao/receber/`
2. **Inserir**: Código hash do recibo
3. **Validação**: Sistema valida se:
- Proposição existe
- Está em estado "enviada"
- Hash confere
4. **Redirecionamento**: `/proposicao/confirmar/P{hash}/{id}`
**Opção B: Via Lista de Pendentes**
1. Acesse: `/proposicao/pendente/`
2. Clique na proposição desejada
3. Clique em **"Receber Proposição"**
4. Redirecionamento para tela de confirmação
#### 3.4 Tela de Confirmação/Incorporação
**URL**: `/proposicao/confirmar/P{hash}/{id}`
**Apresenta duas opções:**
---
##### OPÇÃO A: INCORPORAR
**Formulário de Incorporação**:
1. **Dados da Proposição** (somente leitura):
- Tipo de proposição
- Data de envio
- Autor
- Ementa
- Texto/Arquivo
2. **Configurações de Incorporação**:
**Se for Matéria Legislativa** (Projeto de Lei, Emenda, etc.):
- **Regime de Tramitação**: Obrigatório
- Urgente
- Normal
- Prioridade
- **Gerar Protocolo?**: Sim/Não (se configuração permitir escolha)
- **Número de Páginas**: Se gerar protocolo
- **Observação do Protocolo**: Texto livre
**Se for Documento Acessório**:
- Vinculação a matéria existente
- Tipo de documento
3. **Matéria de Vinculação** (opcional):
- Se a proposição deve ser anexada a matéria existente
- Pesquisa por tipo, número e ano
- Sistema mostra ementa para confirmar
4. **Ao clicar em "Incorporar"**:
**Sistema cria**:
- **MateriaLegislativa** com:
- Tipo (baseado no tipo da proposição)
- Número sequencial
- Ano atual
- Ementa da proposição
- Regime de tramitação selecionado
- Texto original copiado
- **Autoria** automática:
- Autor da proposição → Autor da matéria
- Marcado como primeiro autor
- **Protocolo** (se configurado):
- Número sequencial
- Data de recebimento
- Tipo: Matéria Legislativa
- Número de páginas
**Atualiza Proposição**:
- `data_recebimento` = timestamp atual
- `usuario_recebimento` = operador logado
- Vincula à matéria criada
- Status: **Incorporada**
**Histórico**:
- Registro em **HistoricoProposicao** com status 'R' (Recebida)
5. **Resultado**:
- Mensagem de sucesso
- Link para a matéria criada
- Matéria pode ser acessada em `/materia/{id}/`
---
##### OPÇÃO B: DEVOLVER
**Formulário de Devolução**:
1. **Campo obrigatório**:
- **Justificativa de Devolução**: Texto explicando motivo
- Exemplos:
- "Falta fundamentação legal"
- "Documento em formato incorreto"
- "Proposição duplicada"
- "Necessita correção de redação"
2. **Ao clicar em "Devolver"**:
**Atualiza Proposição**:
- `data_devolucao` = timestamp atual
- `usuario_devolucao` = operador logado
- `justificativa_devolucao` = texto informado
- `data_envio` = NULL
- `data_recebimento` = NULL
- Status: **Devolvida**
**Histórico**:
- Registro em **HistoricoProposicao** com status 'D' (Devolvida)
3. **Resultado**:
- Proposição volta para o autor
- Autor pode visualizar em `/proposicao/devolvida/`
- Autor pode corrigir e reenviar
---
### ETAPA 4: Matéria Tramita e Vai para Votação
#### 4.1 Matéria Incorporada
- **URL de listagem**: `/materia/` ou `/materia/pesquisar-materia`
- **URL de detalhes**: `/materia/{id}/`
- **Informações**:
- Tipo, Número, Ano
- Ementa
- Autores (incluindo autor da proposição original)
- Regime de tramitação
- Status atual
- Protocolo (se gerado)
- Texto original
- Link para proposição original
#### 4.2 Despacho Inicial
1. **URL**: `/materia/{id}/despachoinicial/create`
2. **Dados**:
- Comissão que receberá
- Prazo de análise
3. **Resultado**: Matéria despachada para comissão
#### 4.3 Primeira Tramitação
1. **URL**: `/materia/{id}/tramitacao/create`
2. **Dados**:
- Unidade de origem (Protocolo)
- Unidade de destino (ex: Comissão de Justiça)
- Data de tramitação
- Status de tramitação (ex: "Em análise")
- Urgente? Sim/Não
- Turno (1º, 2º, Único)
- Texto da ação
3. **Resultado**: Matéria tramitada para unidade
#### 4.4 Tramitação em Lote
- **URL**: `/materia/tramitacao-em-lote`
- Permite tramitar múltiplas matérias simultaneamente
- Útil para despachar várias matérias para mesma comissão
#### 4.5 Análise em Comissão
1. Comissão analisa matéria
2. Designa relator: `/materia/{id}/relatoria/create`
3. Relator elabora parecer
4. Comissão vota parecer
#### 4.6 Inclusão em Sessão Plenária
1. **URL**: `/sessao/{id}/adicionar-varias-materias-ordem-dia/`
2. Seleciona matérias para ordem do dia
3. Define ordem de votação
4. **Resultado**: Matéria incluída na pauta da sessão
#### 4.7 Votação
1. Durante sessão plenária: `/sessao/{id}/`
2. Acessa ordem do dia: `/sessao/{id}/matordemdia/`
3. **Tipos de votação**:
- **Simbólica**: `/sessao/{id}/matordemdia/votsimb/{ordem}/{materia}`
- **Nominal**: `/sessao/{id}/matordemdia/votnom/{ordem}/{materia}`
- **Secreta**: `/sessao/{id}/matordemdia/votsec/{ordem}/{materia}`
4. **Resultados possíveis**:
- Aprovada
- Rejeitada
- Aprovada com emendas
- Retirada de pauta
- Adiada
#### 4.8 Criação de Norma Jurídica
- Se matéria aprovada e sancionada
- **URL**: `/norma/create`
- Vincula à matéria legislativa original
- Gera Lei, Decreto, Resolução, etc.
---
## 5. URLs e Telas Importantes
### 5.1 URLs de Proposição (Para Autores/Parlamentares)
| Ação | URL | Descrição |
|------|-----|-----------|
| Listar minhas proposições | `/proposicao/` | Lista todas proposições do autor logado |
| Criar proposição | `/proposicao/create` | Formulário de nova proposição |
| Ver detalhes | `/proposicao/{id}/` | Detalhes e ações disponíveis |
| Editar proposição | `/proposicao/{id}/edit` | Editar proposição não enviada |
| Excluir proposição | `/proposicao/{id}/delete` | Excluir proposição não enviada |
| Enviar proposição | `/proposicao/{id}/?action=send` | Enviar para protocolo |
| Retornar proposição | `/proposicao/{id}/?action=return` | Cancelar envio |
| Recibo | `/proposicao/recibo/{id}` | Imprimir recibo com código |
| Devolvidas | `/proposicao/devolvida/` | Proposições devolvidas pelo protocolo |
### 5.2 URLs de Proposição (Para Operadores de Protocolo)
| Ação | URL | Descrição |
|------|-----|-----------|
| Receber proposição | `/proposicao/receber/` | Inserir código do recibo |
| Confirmar/Incorporar | `/proposicao/confirmar/P{hash}/{id}` | Tela de incorporação ou devolução |
| Pendentes | `/proposicao/pendente/` | Proposições aguardando recebimento |
| Recebidas/Incorporadas | `/proposicao/recebida/` | Proposições já incorporadas |
### 5.3 URLs de Matéria Legislativa
| Ação | URL | Descrição |
|------|-----|-----------|
| Listar matérias | `/materia/` | Lista todas matérias |
| Pesquisar matéria | `/materia/pesquisar-materia` | Pesquisa avançada |
| Ver detalhes | `/materia/{id}/` | Detalhes completos da matéria |
| Editar matéria | `/materia/{id}/edit` | Editar dados da matéria |
| Adicionar tramitação | `/materia/{id}/tramitacao/create` | Nova tramitação |
| Tramitação em lote | `/materia/tramitacao-em-lote` | Tramitar várias matérias |
| Despacho inicial | `/materia/{id}/despachoinicial/create` | Despachar para comissão |
| Adicionar autoria | `/materia/{id}/autoria/create` | Adicionar mais autores |
| Documento acessório | `/materia/{id}/documentoacessorio/create` | Anexar documento |
| Relatoria | `/materia/{id}/relatoria/create` | Designar relator |
### 5.4 URLs de Configuração
| Ação | URL | Descrição |
|------|-----|-----------|
| Tipos de Proposição | `/sistema/materia/tipoproposicao/` | Configurar tipos de proposição |
| Tipos de Matéria | `/sistema/materia/tipo/` | Configurar tipos de matéria |
| Regime de Tramitação | `/sistema/materia/regimetramitacao/` | Configurar regimes |
| Tipos de Autor | `/sistema/base/tipoautor/` | Configurar tipos de autor |
| Autores | `/sistema/base/autor/` | Gerenciar autores |
| Parlamentares | `/parlamentar/` | Gerenciar parlamentares |
| Usuários | `/sistema/usuario/` | Gerenciar usuários do sistema |
| Vincular Operador | `/sistema/base/autor/{id}/operadorautor/` | Vincular usuário a autor |
| Configurações App | `/sistema/app-config/1/edit` | Configurações gerais do sistema |
---
## 6. Configurações do Sistema (AppConfig)
### 6.1 Configurações de Proposição
Acessadas em: `/sistema/app-config/1/edit`
#### **Sequência de Numeração de Proposição**
- **'A'**: Sequencial por ano para cada autor
- Autor 1: Proposição 1/2025, 2/2025, 3/2025...
- Autor 2: Proposição 1/2025, 2/2025, 3/2025...
- **'B'**: Sequencial por ano independente do autor
- Todos autores: Proposição 1/2025, 2/2025, 3/2025...
#### **Receber Recibo de Proposição**
- **True**: Protocolo DEVE usar código do recibo para receber
- **False**: Protocolo pode receber direto da lista de pendentes
#### **Proposição - Incorporação Obrigatória**
- **'O'**: Sempre gerar protocolo ao incorporar
- **'C'**: Perguntar se quer gerar protocolo (Operador escolhe)
- **'N'**: Nunca gerar protocolo ao incorporar
#### **Escolher Número da Matéria**
- **True**: Autor pode sugerir número da matéria
- **False**: Número atribuído automaticamente pelo sistema
---
## 7. Permissões e Grupos
### 7.1 Grupo "Autor"
**Permissões**:
- `materia.list_proposicao`: Listar proposições
- `materia.detail_proposicao`: Ver detalhes de proposição
- `materia.add_proposicao`: Criar proposição
- `materia.change_proposicao`: Editar proposição
- `materia.delete_proposicao`: Excluir proposição
- `materia.list_historicoproposicao`: Ver histórico
- `materia.detail_historicoproposicao`: Ver detalhes do histórico
**Restrições**:
- Só pode ver/editar suas próprias proposições
- Não pode ver proposições de outros autores
- Não pode incorporar proposições
### 7.2 Grupo "Operador de Protocolo Administrativo"
**Permissões**:
- `materia.detail_proposicao_enviada`: Ver proposições pendentes
- `materia.detail_proposicao_devolvida`: Ver proposições devolvidas
- `materia.detail_proposicao_incorporada`: Ver proposições incorporadas
- `protocoloadm.add_protocolo`: Criar protocolos
- `protocoloadm.change_protocolo`: Editar protocolos
- `materia.add_materialegislativa`: Criar matérias (ao incorporar)
**Ações permitidas**:
- Receber proposições
- Incorporar proposições (criar matérias)
- Devolver proposições
- Gerar protocolos
### 7.3 Grupo "Operador de Matéria"
**Permissões**:
- CRUD completo em matérias legislativas
- Tramitação de matérias
- Documentos acessórios
- Relatorias
- Despachos
---
## 8. Exemplos Práticos
### 8.1 Criar Parlamentar com Usuário
**Passo 1: Criar Parlamentar**
1. Acesse: `http://seu-sapl.com/parlamentar/create`
2. Preencha:
- Nome Completo: "João da Silva"
- Nome Parlamentar: "João Silva"
- Sexo: Masculino
- CPF: 123.456.789-00
- Data Nascimento: 01/01/1980
3. Salve
4. **Resultado**: Parlamentar criado + Autor criado automaticamente
**Passo 2: Verificar Autor**
1. Acesse: `http://seu-sapl.com/sistema/base/autor/`
2. Localize: "João da Silva" (tipo: Parlamentar)
3. Anote o ID (ex: 25)
**Passo 3: Criar Usuário**
1. Acesse: `http://seu-sapl.com/sistema/usuario/create`
2. Preencha:
- Username: `joao.silva`
- Email: `joao.silva@camara.gov.br`
- Nome: "João da Silva"
- Senha: `Senha@Forte123`
3. Salve
**Passo 4: Vincular Usuário ao Autor**
1. Acesse: `http://seu-sapl.com/sistema/usuario/{id_usuario}/edit`
2. No campo **"Autor"**, selecione: "João da Silva"
3. Salve
4. **Resultado**:
- Usuário no grupo "Autor"
- OperadorAutor criado
- Pode criar proposições
---
### 8.2 Criar e Enviar Proposição
**Passo 1: Login**
1. Login: `joao.silva` / `Senha@Forte123`
**Passo 2: Criar Proposição**
1. Acesse: `http://seu-sapl.com/proposicao/create`
2. Preencha:
- **Tipo**: Projeto de Lei
- **Ementa**: "Dispõe sobre horário de funcionamento do comércio aos domingos"
- **Texto Original**: Upload arquivo `projeto_lei_comercio.pdf`
3. Clique em **"Salvar"**
**Passo 3: Revisar**
1. Sistema redireciona para `/proposicao/{id}/`
2. Revise todos os dados
3. Se necessário, clique em **"Editar"** e corrija
**Passo 4: Enviar**
1. Clique em **"Enviar Proposição"**
2. Confirme
3. **Código gerado**: `P9a8b7c6d5e4f3g2h1i0_separador_123`
**Passo 5: Imprimir Recibo**
1. Acesse: `http://seu-sapl.com/proposicao/recibo/{id}`
2. Imprima ou salve PDF
3. Entregue ao protocolo
---
### 8.3 Receber e Incorporar (Operador)
**Passo 1: Login como Operador**
- Login: `operador_protocoloadm` / `interlegis`
**Passo 2: Ver Pendentes**
1. Acesse: `http://seu-sapl.com/proposicao/pendente/`
2. Veja lista de proposições enviadas
**Passo 3: Receber via Código**
1. Acesse: `http://seu-sapl.com/proposicao/receber/`
2. Cole código: `P9a8b7c6d5e4f3g2h1i0_separador_123`
3. Clique em **"Receber"**
**Passo 4: Incorporar**
1. Na tela de confirmação:
- **Regime de Tramitação**: Normal
- **Gerar Protocolo**: Sim
- **Número de Páginas**: 3
- **Observação**: "Proposição recebida via protocolo digital"
2. Clique em **"Incorporar"**
**Passo 5: Resultado**
- **Matéria criada**: PL nº 1/2025
- **Protocolo gerado**: Protocolo nº 150/2025
- **Autoria**: João da Silva (primeiro autor)
- **Status**: Incorporada
- **Link**: `http://seu-sapl.com/materia/{id}/`
**Passo 6: Acessar Matéria**
1. Clique no link da matéria
2. Veja todos dados
3. Pode iniciar tramitação
---
### 8.4 Devolver Proposição
**Passo 1: Receber Proposição**
1. Login como operador
2. Acesse: `http://seu-sapl.com/proposicao/receber/`
3. Insira código ou selecione da lista
**Passo 2: Devolver**
1. Na tela de confirmação
2. Clique em **"Devolver"**
3. **Justificativa**: "Documento apresentado em formato incorreto. Favor enviar em PDF/A conforme Resolução 123/2024"
4. Clique em **"Devolver"**
**Passo 3: Resultado**
- Proposição volta para autor
- Status: **Devolvida**
- Autor vê em `/proposicao/devolvida/`
**Passo 4: Autor Corrige**
1. Login como autor
2. Acesse: `http://seu-sapl.com/proposicao/devolvida/`
3. Vê proposição e justificativa
4. Clica em **"Editar"**
5. Corrige formato do arquivo
6. Salva
7. **Envia novamente**
---
## 9. Troubleshooting (Problemas Comuns)
### 9.1 "Usuário não consegue criar proposições"
**Causa**: Usuário não está vinculado a um Autor
**Solução**:
1. Verifique se usuário está no grupo "Autor": `/sistema/usuario/{id}/edit`
2. Verifique se existe OperadorAutor: `/sistema/base/autor/{id_autor}/operadorautor/`
3. Se não existe, crie o vínculo
### 9.2 "Proposição não aparece para receber"
**Causa**: Proposição não foi enviada
**Solução**:
1. Autor deve acessar `/proposicao/{id}/`
2. Clicar em "Enviar Proposição"
3. Verificar se `data_envio` está preenchida
### 9.3 "Erro ao incorporar proposição"
**Causas possíveis**:
- Regime de tramitação não selecionado (obrigatório)
- Tipo de proposição não vinculado a tipo de matéria
**Solução**:
1. Acesse: `/sistema/materia/tipoproposicao/`
2. Edite o tipo de proposição
3. Verifique campo **"Tipo Correspondente"**
4. Deve apontar para um tipo de matéria (ex: Projeto de Lei)
### 9.4 "Parlamentar criado mas não aparece como autor"
**Causa**: Falha na criação automática do autor
**Solução**:
1. Acesse: `/sistema/base/autor/create`
2. Crie manualmente:
- **Tipo**: Parlamentar
- **Parlamentar**: Selecione o parlamentar
- **Nome**: Nome do parlamentar
3. Salve
### 9.5 "Não consigo retornar proposição enviada"
**Causa**: Proposição já foi recebida pelo protocolo
**Solução**:
- Após recebimento, proposição não pode ser retornada
- Se necessário correção, operador deve **devolver** com justificativa
- Autor corrige e reenvia
### 9.6 "Código de recebimento inválido"
**Causa**: Código digitado incorretamente ou proposição já recebida
**Solução**:
1. Verifique se código foi copiado corretamente (copiar do recibo)
2. Verifique se proposição já está em `/proposicao/recebida/`
3. Se problema persistir, use lista de pendentes
---
## 10. Diagrama de Fluxo
```
┌─────────────────────────────────────────────────────────────────┐
│ FLUXO DE PROPOSIÇÕES │
└─────────────────────────────────────────────────────────────────┘
┌──────────────┐
│ PARLAMENTAR │
└──────┬───────┘
│ 1. Cria Proposição
│ /proposicao/create
┌──────────────┐
│ PROPOSIÇÃO │
│ (Rascunho) │
└──────┬───────┘
│ 2. Envia Proposição
│ ?action=send
┌──────────────┐
│ PROPOSIÇÃO │◄──────────┐
│ (Pendente) │ │ 5. Retorna (cancela)
└──────┬───────┘ │ ?action=return
│ │
│ 3. Recebe │
│ /proposicao/receber/
▼ │
┌──────────────┐ │
│ OPERADOR │───────────┘
│ PROTOCOLO │
└──────┬───────┘
│ 4. Decide
┌───┴───┐
│ │
│ │
▼ ▼
┌──────┐ ┌──────┐
│INCOR-│ │DEVOL-│
│PORAR │ │VER │
└───┬──┘ └───┬──┘
│ │
│ │ 6. Justifica
│ │ Volta para autor
│ ▼
│ ┌──────────────┐
│ │ PROPOSIÇÃO │
│ │ (Devolvida) │
│ └──────────────┘
│ │
│ │ 7. Corrige e reenvia
│ │
│ 8. Cria Matéria
│ Cria Autoria
│ Gera Protocolo
┌──────────────┐
│ MATÉRIA │
│ LEGISLATIVA │
└──────┬───────┘
│ 9. Tramita
┌──────────────┐
│ COMISSÕES │
│ PARECERES │
└──────┬───────┘
│ 10. Inclui em Sessão
┌──────────────┐
│ SESSÃO │
│ PLENÁRIA │
└──────┬───────┘
│ 11. Vota
┌──────────────┐
│ RESULTADO │
│ (Aprovada/ │
│ Rejeitada) │
└──────────────┘
```
---
## 11. Checklist de Configuração Inicial
Antes de usar o fluxo de proposições, configure:
- [ ] **Casa Legislativa**: `/sistema/casa-legislativa/`
- [ ] **Legislatura**: `/sistema/parlamentar/legislatura/`
- [ ] **Partidos**: `/sistema/parlamentar/partido/`
- [ ] **Tipos de Proposição**: `/sistema/materia/tipoproposicao/`
- [ ] Vincular cada tipo a um "Tipo Correspondente" (tipo de matéria)
- [ ] **Tipos de Matéria**: `/sistema/materia/tipo/`
- [ ] **Regimes de Tramitação**: `/sistema/materia/regimetramitacao/`
- [ ] **Tipos de Autor**: `/sistema/base/tipoautor/`
- [ ] **Unidades de Tramitação**: `/sistema/materia/unidadetramitacao/`
- [ ] **Configurações App**: `/sistema/app-config/1/edit`
- [ ] Sequência numeração proposição
- [ ] Receber recibo obrigatório?
- [ ] Gerar protocolo obrigatório?
- [ ] **Parlamentares**: `/parlamentar/create`
- [ ] **Usuários**: `/sistema/usuario/create`
- [ ] **Vincular Usuários a Autores**: `/sistema/usuario/{id}/edit`
---
## 12. Resumo Executivo
### Para o Parlamentar/Autor:
1. ✍️ **Crie** sua proposição com ementa e texto
2. 📝 **Revise** quantas vezes precisar (enquanto não enviar)
3. 📤 **Envie** quando estiver pronta
4. 🎫 **Guarde** o código de recebimento
5. ⏳ **Aguarde** o protocolo processar
6. 🔄 Se **devolvida**, corrija e reenvie
### Para o Operador de Protocolo:
1. 📥 **Receba** proposições via código ou lista
2. 🔍 **Analise** se está correta
3. ✅ **Incorpore** gerando matéria OU
4. ❌ **Devolva** com justificativa
5. ⚙️ **Configure** regime, protocolo, etc.
### Para o Operador de Matéria:
1. 📋 **Tramite** matérias entre unidades
2. 👥 **Despache** para comissões
3. 📅 **Inclua** em sessões plenárias
4. 🗳️ **Registre** votações
5. 📜 **Gere** normas jurídicas (se aprovadas)
---
**Documento criado em**: 2025-10-02
**Versão SAPL**: 3.1.164-RC5

684
GUIA_DO_PROJETO.md

@ -0,0 +1,684 @@
# SAPL - Sistema de Apoio ao Processo Legislativo
## Visão Geral
O **SAPL** é um sistema web completo para gerenciamento de processos legislativos em casas legislativas municipais, estaduais e federais. Desenvolvido pelo Interlegis (Senado Federal), o sistema abrange todo o ciclo de vida legislativo, desde o cadastro de parlamentares até a votação e publicação de normas jurídicas.
**Versão Atual**: 3.1.164-RC5
---
## Arquitetura e Tecnologias
### Backend
- **Framework**: Django 2.2 (Python)
- **Banco de Dados**: PostgreSQL 10.5
- **Busca Textual**: Apache Solr 8.11
- **API REST**: Django REST Framework com DRF Spectacular (OpenAPI)
- **Autenticação**: Token-based + Session Authentication
### Frontend
- **Framework JavaScript**: Vue.js 2.7.9
- **UI Framework**: Bootstrap 4.6.2 com Bootstrap-Vue
- **Editor de Texto**: TinyMCE 7.2
- **Build Tool**: Webpack 5 com Vue CLI 5
- **Utilitários**: jQuery 3.6, Axios, Moment.js, Lodash
### Infraestrutura
- **Containerização**: Docker + Docker Compose
- **Servidor Web**: Nginx + Gunicorn
- **Monitoramento**: Django Prometheus
- **Cache**: File-based Cache
### Estrutura de Containers
```yaml
- sapldb (PostgreSQL) -> Porta 5433
- saplsolr (Solr) -> Porta 8983
- sapl (Aplicação) -> Porta 8000
```
---
## Módulos Principais
O SAPL está organizado em 9 módulos principais:
### 1. **Base** (`sapl.base`)
- Configurações gerais do sistema
- Gestão de usuários e permissões
- Casa legislativa
- Autores (pessoas e entidades que podem propor matérias)
- Pesquisa textual
- Auditoria
### 2. **Parlamentares** (`sapl.parlamentares`)
- Cadastro de parlamentares
- Legislaturas e sessões legislativas
- Partidos políticos e coligações
- Mandatos e filiações partidárias
- Mesa diretora
- Frentes parlamentares e blocos
- Dependentes
### 3. **Matéria Legislativa** (`sapl.materia`)
- Proposições (antes de serem protocoladas)
- Matérias legislativas (projetos de lei, emendas, requerimentos, etc.)
- Tramitação de matérias
- Autoria e relatoria
- Documentos acessórios
- Acompanhamento de matérias
### 4. **Sessão Plenária** (`sapl.sessao`)
- Sessões ordinárias e extraordinárias
- Composição da mesa
- Presença de parlamentares
- Expediente e ordem do dia
- Oradores e pronunciamentos
- Votações (nominal, simbólica, secreta, em bloco)
- Atas e resumos
### 5. **Norma Jurídica** (`sapl.norma`)
- Normas aprovadas (leis, decretos, resoluções, etc.)
- Vinculação entre normas
- Autoria de normas
- Anexos e documentos relacionados
### 6. **Comissões** (`sapl.comissoes`)
- Comissões permanentes e temporárias
- Composição de comissões
- Reuniões de comissão
- Pauta de reuniões
- Matérias em tramitação nas comissões
### 7. **Protocolo Administrativo** (`sapl.protocoloadm`)
- Documentos administrativos
- Protocolo de documentos
- Tramitação administrativa
### 8. **Audiências Públicas** (`sapl.audiencia`)
- Gestão de audiências públicas
- Anexos e documentação
### 9. **Compilação** (`sapl.compilacao`)
- Textos articulados (compilação de normas)
- Perfis estruturais
- Versionamento de textos normativos
---
## Como Usar o Sistema: Fluxos Principais
### 1. Cadastro de Parlamentares
**Objetivo**: Registrar os parlamentares que compõem a casa legislativa
**Fluxo**:
```
1. Acesse: /parlamentar/create
2. Preencha os dados pessoais (nome, CPF, data de nascimento, etc.)
3. Após salvar, adicione:
- Filiação partidária: /parlamentar/<id>/filiacao/create
- Mandato: /parlamentar/<id>/mandato/create
- Dependentes (opcional): /parlamentar/<id>/dependente/create
4. Visualize: /parlamentar/<id>/
```
**Telas Relacionadas**:
- Listar parlamentares: `/parlamentar/`
- Pesquisar: `/parlamentar/pesquisar-parlamentar/`
- Matérias do parlamentar: `/parlamentar/<id>/materias`
---
### 2. Criação de Matéria Legislativa
**Objetivo**: Protocolar e tramitar projetos de lei e outros documentos legislativos
**Fluxo**:
```
1. Acesse: /materia/create
2. Preencha:
- Tipo de matéria (Projeto de Lei, Emenda, Requerimento, etc.)
- Número e ano
- Data de apresentação
- Ementa (resumo do conteúdo)
- Texto integral (arquivo ou texto articulado)
3. Adicione a autoria: /materia/<id>/autoria/create
4. Faça o despacho inicial: /materia/<id>/despachoinicial/create
5. Registre a tramitação: /materia/<id>/tramitacao/create
6. Anexe documentos: /materia/<id>/documentoacessorio/create
7. Visualize: /materia/<id>/
```
**Telas Relacionadas**:
- Listar matérias: `/materia/`
- Pesquisar: `/materia/pesquisar-materia`
- Tramitação em lote: `/materia/tramitacao-em-lote`
- Acompanhar matéria: `/materia/<id>/acompanhar-materia/`
---
### 3. Realização de Sessão Plenária
**Objetivo**: Registrar sessões ordinárias/extraordinárias e realizar votações
**Fluxo**:
```
1. Acesse: /sessao/create
2. Preencha:
- Tipo de sessão
- Número
- Legislatura
- Data e hora
3. Configure a mesa diretora: /sessao/<id>/mesa
4. Registre a presença: /sessao/<id>/presenca
5. Adicione matérias ao expediente: /sessao/<id>/adicionar-varias-materias-expediente/
6. Adicione matérias à ordem do dia: /sessao/<id>/adicionar-varias-materias-ordem-dia/
7. Registre oradores: /sessao/<id>/orador/create
8. Realize votações:
- Votação nominal: /sessao/<id>/matordemdia/votnom/<ordem>/<materia>
- Votação simbólica: /sessao/<id>/matordemdia/votsimb/<ordem>/<materia>
- Votação secreta: /sessao/<id>/matordemdia/votsec/<ordem>/<materia>
9. Gere o resumo/ata: /sessao/<id>/resumo
10. Visualize: /sessao/<id>/
```
**Telas Relacionadas**:
- Listar sessões: `/sessao/`
- Pauta da sessão: `/sessao/pauta-sessao/<id>/`
- Presença ordem do dia: `/sessao/<id>/presencaordemdia`
---
### 4. Publicação de Norma Jurídica
**Objetivo**: Registrar leis, decretos e resoluções aprovadas
**Fluxo**:
```
1. Acesse: /norma/create
2. Preencha:
- Tipo de norma (Lei, Decreto, Resolução, etc.)
- Número e ano
- Data de publicação
- Ementa
- Texto integral (upload de arquivo PDF ou DOC)
3. Adicione autoria: /norma/<id>/autorianorma/create
4. Vincule à matéria que originou (se aplicável)
5. Relacione com outras normas: /norma/<id>/normarelacionada/create
6. Anexe documentos: /norma/<id>/anexonormajuridica/create
7. Visualize: /norma/<id>/
```
**Telas Relacionadas**:
- Listar normas: `/norma/`
- Pesquisar: `/norma/pesquisar`
---
### 5. Gestão de Comissões
**Objetivo**: Gerenciar comissões permanentes e temporárias
**Fluxo**:
```
1. Acesse: /comissao/create
2. Preencha:
- Nome da comissão
- Tipo (permanente/temporária)
- Período de funcionamento
3. Defina a composição: /comissao/<id>/composicao/create
- Adicione parlamentares e seus cargos (presidente, vice, etc.)
4. Agende reuniões: /comissao/<id>/reuniao/create
5. Monte a pauta: /comissao/<id>/pauta/add
6. Visualize matérias em tramitação: /comissao/<id>/materias-em-tramitacao
7. Visualize: /comissao/<id>/
```
**Telas Relacionadas**:
- Listar comissões: `/comissao/`
- Tipos de comissão: `/sistema/comissao/tipo/`
---
## Configurações Iniciais Necessárias
Antes de começar a usar o sistema para criar dados, é necessário configurar:
### 1. Casa Legislativa
- Acesse: `/sistema/casa-legislativa/`
- Configure: nome, endereço, CNPJ, logomarca, etc.
### 2. Legislatura
- Acesse: `/sistema/parlamentar/legislatura/`
- Crie a legislatura atual (número, data início, data fim, data eleição)
### 3. Sessão Legislativa
- Acesse: `/sistema/parlamentar/sessao-legislativa/`
- Crie sessões legislativas para a legislatura
### 4. Partidos
- Acesse: `/sistema/parlamentar/partido/`
- Cadastre os partidos políticos
### 5. Tipos de Matéria
- Acesse: `/sistema/materia/tipo/`
- Configure os tipos (Projeto de Lei, Emenda, Requerimento, etc.)
### 6. Tipos de Norma
- Acesse: `/sistema/norma/tipo/`
- Configure os tipos (Lei, Decreto, Resolução, etc.)
### 7. Tipos de Sessão
- Acesse: `/sistema/sessao/tipo/`
- Configure os tipos de sessão plenária
### 8. Tipos de Comissão
- Acesse: `/sistema/comissao/tipo/`
- Configure os tipos de comissão
---
## Estrutura de Diretórios
```
sapl/
├── docker/ # Configurações Docker
│ ├── docker-compose.yaml # Orquestração de containers
│ └── Dockerfile # Imagem do SAPL
├── frontend/ # Código frontend (Vue.js)
│ ├── src/
│ │ ├── __global/ # Estilos e componentes globais
│ │ ├── apps/ # Aplicações Vue (compilação, painel, etc.)
│ │ └── styles/ # SCSS
│ └── webpack-stats.json # Build manifest
├── sapl/ # Código backend (Django)
│ ├── api/ # API REST
│ ├── base/ # Módulo base
│ ├── parlamentares/ # Módulo parlamentares
│ ├── materia/ # Módulo matéria legislativa
│ ├── sessao/ # Módulo sessão plenária
│ ├── norma/ # Módulo norma jurídica
│ ├── comissoes/ # Módulo comissões
│ ├── protocoloadm/ # Módulo protocolo administrativo
│ ├── compilacao/ # Módulo compilação
│ ├── audiencia/ # Módulo audiências
│ ├── templates/ # Templates Django
│ ├── static/ # Arquivos estáticos
│ ├── settings.py # Configurações Django
│ └── urls.py # Rotas principais
├── README.rst # Documentação geral
└── package.json # Dependências frontend
```
---
## Ambiente de Desenvolvimento
### Iniciar o Sistema (Docker)
```bash
cd /home/bruno/sapl/docker
docker-compose up -d
```
Acessar: http://localhost:8000
### Credenciais Padrão
- **Usuário**: admin
- **Senha**: interlegis (configurável via `ADMIN_PASSWORD` no docker-compose.yaml)
### Build do Frontend
```bash
cd /home/bruno/sapl
yarn build
```
---
## API REST
O SAPL disponibiliza uma API REST completa para integração com outros sistemas.
- **Documentação**: http://localhost:8000/api/docs/
- **Schema OpenAPI**: http://localhost:8000/api/schema/
- **Autenticação**: Token-based (requer `Authorization: Token <token>`)
### Principais Endpoints
- `/api/materia/materialegislativa/` - Matérias legislativas
- `/api/parlamentares/parlamentar/` - Parlamentares
- `/api/sessao/sessaoplenaria/` - Sessões plenárias
- `/api/norma/normajuridica/` - Normas jurídicas
- `/api/comissoes/comissao/` - Comissões
---
## Recursos Especiais
### 1. Busca Textual (Solr)
- Indexação automática de documentos
- Pesquisa full-text em matérias, normas e documentos
- Configurável via variável `USE_SOLR=True`
### 2. Textos Articulados
- Editor de leis estruturadas (artigos, parágrafos, incisos)
- Versionamento de textos
- Comparação de versões (diff)
### 3. Painel Eletrônico
- Exibição em tempo real de votações
- Painel de presença
- URL: `/painel/`
### 4. Acompanhamento de Matérias
- Cidadãos podem acompanhar matérias via email
- Requer configuração de reCaptcha
### 5. Relatórios
- Relatórios de matérias, normas, sessões
- Exportação em PDF
- URL: `/relatorios/`
---
## Tipos de Usuários e Permissões
O SAPL possui um sistema robusto de controle de acesso com **11 grupos de usuários** diferentes, cada um com permissões específicas para módulos e funcionalidades.
### Grupos de Usuários Principais
#### 1. **Operador Geral** (Superusuário SAPL)
**Acesso**: Todos os módulos e funcionalidades
- Configurações do sistema
- Gestão de usuários
- Todas as operações de todos os outros grupos
- Tabelas auxiliares
- Auditoria
**Telas Principais**:
- `/sistema/` - Painel administrativo completo
- `/sistema/casa-legislativa/` - Configuração da casa
- `/sistema/usuario/` - Gestão de usuários
- Acesso total a todos os módulos
---
#### 2. **Operador de Matéria**
**Acesso**: Módulo de Matéria Legislativa
- Criar, editar, excluir matérias
- Gerenciar tramitação
- Adicionar autoria e relatoria
- Documentos acessórios
- Impressos
**Telas Principais**:
- `/materia/` - Listar matérias
- `/materia/create` - Criar matéria
- `/materia/<id>/tramitacao/` - Tramitação
- `/materia/<id>/autoria/` - Autoria
- `/materia/tramitacao-em-lote` - Tramitação em lote
---
#### 3. **Operador de Sessão Plenária**
**Acesso**: Módulo de Sessão Plenária
- Criar e gerenciar sessões
- Registrar presença
- Gerenciar expediente e ordem do dia
- Realizar votações
- Gerar atas e resumos
**Telas Principais**:
- `/sessao/` - Listar sessões
- `/sessao/create` - Criar sessão
- `/sessao/<id>/presenca` - Presença
- `/sessao/<id>/matordemdia/` - Ordem do dia
- `/sessao/<id>/votacao` - Votações
---
#### 4. **Operador de Norma Jurídica**
**Acesso**: Módulo de Norma Jurídica + Compilação
- Criar, editar, excluir normas
- Vincular normas relacionadas
- Gerenciar textos articulados
- Compilação de normas
- Dispositivos e vigência
**Telas Principais**:
- `/norma/` - Listar normas
- `/norma/create` - Criar norma
- `/norma/<id>/normarelacionada/` - Normas relacionadas
- `/compilacao/` - Textos articulados
---
#### 5. **Operador de Protocolo Administrativo**
**Acesso**: Protocolo + Documentos Administrativos
- Protocolar documentos
- Anular protocolos
- Visualizar matérias e proposições
- Tramitação administrativa
**Telas Principais**:
- `/protocoloadm/protocolo/` - Gerenciar protocolos
- `/protocoloadm/documentoadministrativo/` - Documentos
- `/proposicao/recebida/` - Proposições recebidas
---
#### 6. **Operador de Comissões**
**Acesso**: Módulo de Comissões
- Criar e gerenciar comissões
- Definir composição
- Agendar reuniões
- Gerenciar pautas
- Matérias em tramitação
**Telas Principais**:
- `/comissao/` - Listar comissões
- `/comissao/create` - Criar comissão
- `/comissao/<id>/composicao/` - Composição
- `/comissao/<id>/reuniao/` - Reuniões
---
#### 7. **Operador Administrativo**
**Acesso**: Documentos Administrativos
- Gerenciar documentos administrativos
- Anexar documentos
- Tramitação administrativa
- Vinculação com matérias
**Telas Principais**:
- `/protocoloadm/documentoadministrativo/` - Documentos
- `/protocoloadm/documentoadministrativo/<id>/tramitacao/` - Tramitação
---
#### 8. **Operador de Audiência**
**Acesso**: Módulo de Audiências Públicas
- Criar e gerenciar audiências
- Anexar documentos
- Tipos de audiência
**Telas Principais**:
- `/audiencia/` - Listar audiências
- `/audiencia/create` - Criar audiência
- `/audiencia/<id>/anexo/` - Anexos
---
#### 9. **Operador de Painel**
**Acesso**: Painel Eletrônico
- Controlar painel de votações
- Gerenciar cronômetro
- Exibição de dados em tempo real
**Telas Principais**:
- `/painel/` - Painel eletrônico
- `/painel/cronometro/` - Cronômetro
---
#### 10. **Autor** (Parlamentares e Proponentes)
**Acesso**: Apenas suas próprias proposições
- Criar proposições
- Editar proposições próprias
- Visualizar histórico
- Textos articulados próprios
**Telas Principais**:
- `/proposicao/` - Suas proposições
- `/proposicao/create` - Criar proposição
- `/proposicao/<id>/` - Editar (apenas próprias)
**Restrição**: Só pode ver/editar proposições que ele mesmo criou
---
#### 11. **Votante** (Parlamentares em Sessão)
**Acesso**: Votação em sessões
- Votar em matérias
- Registrar voto (nominal, simbólico, secreto)
**Permissão Especial**: `can_vote`
---
### Usuários Padrão Criados no Sistema
O sistema cria automaticamente usuários de teste com senha padrão `interlegis`:
| Usuário | Grupo | Senha |
|---------|-------|-------|
| `admin` | Superusuário Django | `interlegis` |
| `operador_geral` | Operador Geral | `interlegis` |
| `operador_materia` | Operador de Matéria | `interlegis` |
| `operador_sessao` | Operador de Sessão | `interlegis` |
| `operador_norma` | Operador de Norma | `interlegis` |
| `operador_protocoloadm` | Operador de Protocolo | `interlegis` |
| `operador_comissoes` | Operador de Comissões | `interlegis` |
| `operador_administrativo` | Operador Administrativo | `interlegis` |
| `operador_painel` | Operador de Painel | `interlegis` |
---
### Permissões por Tipo de Operação
O SAPL usa 5 radicais de permissão para cada entidade:
- **`.list_`** - Listar registros (visualizar lista)
- **`.detail_`** - Ver detalhes de um registro específico
- **`.add_`** - Adicionar novos registros
- **`.change_`** - Editar registros existentes
- **`.delete_`** - Excluir registros
---
### Acesso à API REST
#### Endpoints Públicos (sem autenticação)
Qualquer pessoa pode consultar via API:
- Parlamentares (`/api/parlamentares/parlamentar/`)
- Comissões (`/api/comissoes/comissao/`)
- Sessões (`/api/sessao/sessaoplenaria/`)
- Matérias (`/api/materia/materialegislativa/`)
- Normas (`/api/norma/normajuridica/`)
**Operações permitidas**: `GET` (list e detail apenas)
#### Endpoints Privados (requer autenticação)
Requer token de autenticação:
- Documentos Administrativos
- Protocolos
- Proposições
- Operações de modificação (`POST`, `PUT`, `PATCH`, `DELETE`)
**Autenticação**: `Authorization: Token <token>`
---
### Acesso de Usuários Anônimos (Não Logados)
Usuários não autenticados podem:
- Consultar dados públicos via API
- Acompanhar matérias (adicionar/remover acompanhamento via email)
- Acompanhar documentos
**Restrições**:
- Não podem criar/editar/excluir
- Requer configuração de reCaptcha para acompanhamento
---
### Matriz de Permissões por Módulo
| Módulo | Operador Geral | Op. Matéria | Op. Sessão | Op. Norma | Op. Protocolo | Op. Comissões | Op. Admin | Op. Audiência | Op. Painel | Autor |
|--------|:--------------:|:-----------:|:----------:|:---------:|:-------------:|:-------------:|:---------:|:-------------:|:----------:|:-----:|
| **Matéria Legislativa** | ✅ | ✅ | - | - | 👁️ | - | - | - | - | - |
| **Sessão Plenária** | ✅ | - | ✅ | - | - | - | - | - | - | - |
| **Norma Jurídica** | ✅ | - | - | ✅ | - | - | - | - | - | - |
| **Protocolo** | ✅ | - | - | - | ✅ | - | - | - | - | - |
| **Comissões** | ✅ | - | - | - | - | ✅ | - | - | - | - |
| **Doc. Administrativo** | ✅ | - | - | - | 👁️ | - | ✅ | - | - | - |
| **Audiência Pública** | ✅ | - | - | - | - | - | - | ✅ | - | - |
| **Painel Eletrônico** | ✅ | - | - | - | - | - | - | - | ✅ | - |
| **Proposições** | ✅ | - | - | - | 👁️ | - | - | - | - | ✅ |
| **Compilação** | ✅ | - | - | ✅ | - | - | - | - | - | - |
| **Configurações** | ✅ | - | - | - | - | - | - | - | - | - |
**Legenda**:
- ✅ = Acesso completo (criar, editar, excluir, visualizar)
- 👁️ = Apenas visualização
- \- = Sem acesso
---
### Recomendações de Uso
Para usar o sistema eficientemente, recomendamos atribuir usuários aos grupos conforme suas funções:
1. **Administrador da Casa**: `Operador Geral`
2. **Secretaria Legislativa**: `Operador de Matéria` + `Operador de Sessão`
3. **Assessoria Jurídica**: `Operador de Norma`
4. **Setor de Protocolo**: `Operador de Protocolo Administrativo`
5. **Secretaria de Comissões**: `Operador de Comissões`
6. **Parlamentares**: `Autor` + `Votante`
7. **Operador de TI/Suporte**: `Operador Geral`
8. **Público Externo**: Sem login (acesso via API pública)
---
## Observações Importantes
1. **Ordem de Cadastro**: Para criar dados no sistema, siga esta ordem:
- Configurações do sistema (casa legislativa, legislatura)
- Partidos e tipos (matéria, norma, sessão)
- Parlamentares
- Matérias legislativas
- Sessões plenárias
- Normas jurídicas
2. **Permissões**: O sistema possui controle granular de permissões. Configure grupos de usuários em `/sistema/grupo/`
3. **Backup**: Recomenda-se backup regular do banco PostgreSQL:
```bash
docker exec postgres pg_dump -U sapl sapl > backup.sql
```
4. **Logs**: Arquivos de log em `sapl.log` na raiz do projeto
---
## Suporte e Documentação
- **Discord**: https://discord.gg/fzXSbhZbcy
- **Issues**: https://github.com/interlegis/sapl/issues
- **Wiki**: https://colab.interlegis.leg.br/wiki/ProjetoSapl
- **Perguntas Frequentes**: https://github.com/interlegis/sapl/wiki/Perguntas-Frequentes
---
*Documento gerado em: 2025-10-02*

246
frontend/src/__global/scss/layouts/_home_index.scss

@ -2,187 +2,143 @@
.container-home { .container-home {
position: relative; position: relative;
padding: 2em 1.5em 1.5em 1.5em; padding: 2em 1.5em 1.5em 1.5em;
max-width: 1000px; max-width: 1200px;
margin: 0 auto; margin: 0 auto;
a:hover {
color: #444;
-webkit-transition: 0.3s ease-in;
-moz-transition: 0.3s ease-in;
-o-transition: 0.3s ease-in
}
#homeIndex { #homeIndex {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 1.5rem;
text-align: center; text-align: center;
} }
.homeBanner span {
color: white;
font-size: 32px;
font-weight: 600;
display: inline-block;
vertical-align: middle;
padding: 2px 45px 4px;
border: 2px solid;
}
.homeBanner::after {
display: inline-block;
vertical-align: middle;
height: 100%;
}
.homeBlock { .homeBlock {
display: inline-block; background: #ffffff;
border-radius: 12px;
padding: 2rem 1.5rem;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
min-height: 220px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
border: 1px solid #e5e7eb;
position: relative; position: relative;
background-color: #F3F3F3;
width: 190px;
height: 260px;
margin: 3px;
text-align: center;
font-size: 0;
overflow: hidden;
}
.homeBlock > a { &:hover {
display: block; transform: translateY(-4px);
position: absolute; box-shadow: 0 12px 24px rgba(0, 0, 0, 0.12);
width: 100%; border-color: #364347;
height: 100%;
top: 0;
left: 0;
}
.homeBlock::after { .card-icon {
content: ''; background: #364347;
display: inline-block; color: #ffffff;
vertical-align: middle; transform: scale(1.1);
height: 100%;
overflow: visible;
clear: none;
visibility: initial;
} }
.homeContent { .btn-action {
position: relative; background: #364347;
padding: 10px; color: #ffffff;
text-align: justify;
font-size: 14px;
color: #FFF;
opacity: 0;
transition: opacity 0.5s ease;
display: inline-block;
vertical-align: middle;
} }
.homeContent p {
display: block;
line-height: 13px;
font-size: 80%;
color: white;
} }
.homeIcon {
position: relative;
display: inline-block;
width: 105px;
height: 105px;
border-radius: 50%;
background: #364347;
z-index: 1;
} }
.homeIcon::before { .card-icon {
content: ''; width: 70px;
position: absolute; height: 70px;
width: 100%;
height: 100%;
border-radius: 50%; border-radius: 50%;
background: #364347; background: #f3f4f6;
top: 0; color: #364347;
left: 0; display: flex;
transform: scale(0.95); align-items: center;
transition: transform 0.6s ease; justify-content: center;
} font-size: 2rem;
transition: all 0.3s ease;
margin-bottom: 1rem;
.homeIcon img { i {
position: absolute; transition: transform 0.3s ease;
margin: auto;
top: 0;
bottom: 0;
right: 0;
left: 0;
transition: opacity 0.4s 0.4s ease;
} }
.homeFront {
position: absolute;
top: 46%;
width: 100%;
font-size: 0;
transform: translateY(-60%);
} }
.homeFront h2 { .card-title {
position: absolute; font-size: 1.25rem;
margin-top: 18px; font-weight: 600;
font-size: 22px; color: #1f2937;
font-weight: 700; margin: 0.5rem 0;
color: #595959 !important; line-height: 1.3;
width: 100%;
padding: 0 6%;
z-index: 0;
} }
.homeTitle { .card-description {
display: block; font-size: 0.875rem;
height: 32px; color: #6b7280;
margin: 0.5rem 0 1.5rem;
line-height: 1.5;
text-align: center; text-align: center;
width: 100%;
opacity: 0;
transition: opacity 0.4s ease;
} }
.homeTitle::before { .card-actions {
content: ''; display: flex;
display: inline-block; gap: 0.5rem;
vertical-align: middle; width: 100%;
height: 100%; margin-top: auto;
}
.btn-action {
flex: 1;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
padding: 0.625rem 1rem;
background: #f3f4f6;
color: #364347;
border-radius: 8px;
font-size: 0.875rem;
font-weight: 500;
text-decoration: none;
transition: all 0.2s ease;
border: 1px solid transparent;
i {
font-size: 0.875rem;
}
&:hover {
background: #364347;
color: #ffffff;
text-decoration: none;
} }
.homeTitle h2 {
display: inline-block;
vertical-align: middle;
max-width: 110px;
font-size: 14px;
color: white !important;
line-height: 1em;
} }
.homeTitle img { @media (max-width: 768px) {
display: inline-block; padding: 1rem;
vertical-align: middle;
height: 30px;
margin-right: 5px;
}
.homeBlock:hover .homeIcon::before { #homeIndex {
transform: scale(3.6) translateY(7px); grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 1rem;
} }
.homeBlock:hover .homeContent{ .homeBlock {
opacity: 1; padding: 1.5rem 1rem;
transition-delay: 0.2s; min-height: 200px;
} }
.homeBlock:hover .homeIcon img { .card-icon {
opacity: 0; width: 60px;
transition-duration: 0.2s; height: 60px;
transition-delay: 0s; font-size: 1.75rem;
} }
.homeBlock:hover .homeTitle { .card-title {
opacity: 1; font-size: 1.125rem;
}
} }
@media (max-width: 480px) {
#homeIndex {
grid-template-columns: 1fr;
}
}
} }

490
frontend/webpack-stats.json

File diff suppressed because it is too large

7
sapl/base/urls.py

@ -7,7 +7,8 @@ from django.views.generic.base import RedirectView, TemplateView
from sapl.base.views import (AutorCrud, ConfirmarEmailView, TipoAutorCrud, get_estatistica, from sapl.base.views import (AutorCrud, ConfirmarEmailView, TipoAutorCrud, get_estatistica,
RecuperarSenhaEmailView, RecuperarSenhaFinalizadoView, RecuperarSenhaEmailView, RecuperarSenhaFinalizadoView,
RecuperarSenhaConfirmaView, RecuperarSenhaCompletoView, IndexView, UserCrud) RecuperarSenhaConfirmaView, RecuperarSenhaCompletoView, IndexView, UserCrud,
GuiaProjetoView, FluxoProposicoesView)
from sapl.settings import MEDIA_URL, LOGOUT_REDIRECT_URL from sapl.settings import MEDIA_URL, LOGOUT_REDIRECT_URL
from .apps import AppConfig from .apps import AppConfig
from .views import (LoginSapl, AlterarSenha, AppConfigCrud, CasaLegislativaCrud, from .views import (LoginSapl, AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
@ -51,6 +52,10 @@ urlpatterns = [
url(r'^sistema/autor/tipo/', include(TipoAutorCrud.get_urls())), url(r'^sistema/autor/tipo/', include(TipoAutorCrud.get_urls())),
url(r'^sistema/autor/', include(AutorCrud.get_urls())), url(r'^sistema/autor/', include(AutorCrud.get_urls())),
url(r'^sistema/guia-projeto/$', GuiaProjetoView.as_view(),
name='guia_projeto'),
url(r'^sistema/fluxo-proposicoes/$', FluxoProposicoesView.as_view(),
name='fluxo_proposicoes'),
url(r'^sistema/ajuda/(?P<topic>\w+)$', url(r'^sistema/ajuda/(?P<topic>\w+)$',
HelpTopicView.as_view(), name='help_topic'), HelpTopicView.as_view(), name='help_topic'),
url(r'^sistema/ajuda/$', TemplateView.as_view(template_name='ajuda.html'), url(r'^sistema/ajuda/$', TemplateView.as_view(template_name='ajuda.html'),

18
sapl/base/views.py

@ -67,6 +67,24 @@ class IndexView(TemplateView):
return TemplateView.get(self, request, *args, **kwargs) return TemplateView.get(self, request, *args, **kwargs)
class GuiaProjetoView(TemplateView):
template_name = 'guia_projeto.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['data_geracao'] = timezone.now().strftime('%d/%m/%Y')
return context
class FluxoProposicoesView(TemplateView):
template_name = 'fluxo_proposicoes.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['data_geracao'] = timezone.now().strftime('%d/%m/%Y')
return context
@method_decorator(ratelimit(key=ratelimit_ip, @method_decorator(ratelimit(key=ratelimit_ip,
rate=RATE_LIMITER_RATE, rate=RATE_LIMITER_RATE,
method=ratelimit.UNSAFE, method=ratelimit.UNSAFE,

2
sapl/static/sapl/frontend/css/global.042f6737.css → sapl/static/sapl/frontend/css/global.bdbed894.css

File diff suppressed because one or more lines are too long

BIN
sapl/static/sapl/frontend/css/global.042f6737.css.gz → sapl/static/sapl/frontend/css/global.bdbed894.css.gz

Binary file not shown.

0
sapl/static/sapl/frontend/js/compilacao.148cb66b.js → sapl/static/sapl/frontend/js/compilacao.61345e28.js

0
sapl/static/sapl/frontend/js/compilacao.148cb66b.js.gz → sapl/static/sapl/frontend/js/compilacao.61345e28.js.gz

2
sapl/static/sapl/frontend/js/global.bb3e904b.js → sapl/static/sapl/frontend/js/global.b14eb920.js

File diff suppressed because one or more lines are too long

0
sapl/static/sapl/frontend/js/global.bb3e904b.js.LICENSE.txt → sapl/static/sapl/frontend/js/global.b14eb920.js.LICENSE.txt

BIN
sapl/static/sapl/frontend/js/global.bb3e904b.js.gz → sapl/static/sapl/frontend/js/global.b14eb920.js.gz

Binary file not shown.

0
sapl/static/sapl/frontend/js/painel.f3190acc.js → sapl/static/sapl/frontend/js/painel.47412c96.js

0
sapl/static/sapl/frontend/js/painel.f3190acc.js.gz → sapl/static/sapl/frontend/js/painel.47412c96.js.gz

0
sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js → sapl/static/sapl/frontend/js/parlamentar.2ad05a26.js

0
sapl/static/sapl/frontend/js/parlamentar.a1a4b65b.js.gz → sapl/static/sapl/frontend/js/parlamentar.2ad05a26.js.gz

19
sapl/templates/base.html

@ -26,6 +26,7 @@
{% block head_content %} {% block head_content %}
<link rel="icon" href="{% webpack_static 'img/favicon.ico' %}" type="image/png"> <link rel="icon" href="{% webpack_static 'img/favicon.ico' %}" type="image/png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" crossorigin="anonymous">
{% block webpack_loader_css %} {% block webpack_loader_css %}
{% render_chunk_vendors 'css' %} {% render_chunk_vendors 'css' %}
{% render_bundle 'global' 'css' %} {% render_bundle 'global' 'css' %}
@ -54,19 +55,13 @@
{% block sections_navbar %} {% navbar 'navbar.yaml' %} {% endblock sections_navbar %} {% block sections_navbar %} {% navbar 'navbar.yaml' %} {% endblock sections_navbar %}
<ul class="nav navbar-nav justify-content-end" id="autenticacao"> <ul class="nav navbar-nav justify-content-end" id="autenticacao">
<li class="nav-item dropdown pesquisa">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img src="{% webpack_static 'img/search.png' %}"><span class="caret"></span></a>
<ul class="dropdown-menu">
<li class="dropdown-item">
<form id="formulario-lexml" class="navbar-form search-form" method="get" action="">
<input id="input-lexml" type="text" class="form-control" placeholder="Pesquisar no LexML" />
</form>
</li>
</ul>
</li>
<li class="nav-item"><a class="nav-link"href="/sistema/ajuda"><img src="{% webpack_static 'img/manual.png' %}"></a></li>
{% if not user.is_authenticated %} {% if not user.is_authenticated %}
<li class="nav-item"><a class="nav-link" href="{% url 'sapl.base:login' %}"><img src="{% webpack_static 'img/user.png' %}"></a></li> <li class="nav-item">
<a class="nav-link d-flex align-items-center" href="{% url 'sapl.base:login' %}">
<i class="fas fa-sign-in-alt" style="margin-right: 8px;"></i>
<span>Acessar</span>
</a>
</li>
{% else %} {% else %}
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img height="30" width="30" src="{% webpack_static 'img/authenticated.png' %}"><span class="caret"></span></a> <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img height="30" width="30" src="{% webpack_static 'img/authenticated.png' %}"><span class="caret"></span></a>

1050
sapl/templates/fluxo_proposicoes.html

File diff suppressed because it is too large

780
sapl/templates/guia_projeto.html

@ -0,0 +1,780 @@
{% extends "base.html" %}
{% load i18n %}
{% block head_title %}Guia do Projeto SAPL - {{nome_casa}}{% endblock %}
{% block base_content %}
<style>
.guia-projeto {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
line-height: 1.6;
color: #333;
}
.guia-projeto h1 {
color: #2c3e50;
border-bottom: 3px solid #3498db;
padding-bottom: 10px;
margin-top: 30px;
}
.guia-projeto h2 {
color: #34495e;
margin-top: 40px;
padding-top: 20px;
border-top: 2px solid #ecf0f1;
}
.guia-projeto h3 {
color: #3498db;
margin-top: 25px;
}
.guia-projeto h4 {
color: #7f8c8d;
margin-top: 20px;
font-weight: 600;
}
.guia-projeto .alert {
border-left: 4px solid #3498db;
background-color: #ecf7fd;
padding: 15px;
margin: 20px 0;
}
.guia-projeto .badge {
font-size: 0.85em;
padding: 4px 8px;
margin-left: 8px;
}
.guia-projeto .card {
border: 1px solid #dee2e6;
border-radius: 8px;
margin-bottom: 20px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.guia-projeto .card-header {
background-color: #f8f9fa;
font-weight: 600;
padding: 12px 20px;
border-bottom: 2px solid #dee2e6;
}
.guia-projeto .card-body {
padding: 20px;
}
.guia-projeto code {
background-color: #f4f4f4;
padding: 2px 6px;
border-radius: 3px;
font-family: 'Courier New', monospace;
color: #e74c3c;
}
.guia-projeto pre {
background-color: #2c3e50;
color: #ecf0f1;
padding: 15px;
border-radius: 5px;
overflow-x: auto;
}
.guia-projeto pre code {
color: #ecf0f1;
background: none;
}
.guia-projeto table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
.guia-projeto table th,
.guia-projeto table td {
border: 1px solid #dee2e6;
padding: 12px;
text-align: left;
}
.guia-projeto table th {
background-color: #3498db;
color: white;
font-weight: 600;
}
.guia-projeto table tr:nth-child(even) {
background-color: #f8f9fa;
}
.guia-projeto .tech-stack {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin: 15px 0;
}
.guia-projeto .tech-badge {
background-color: #3498db;
color: white;
padding: 8px 15px;
border-radius: 20px;
font-size: 0.9em;
font-weight: 500;
}
.guia-projeto .fluxo-card {
background-color: #fff;
border-left: 4px solid #27ae60;
padding: 15px;
margin: 15px 0;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.guia-projeto .fluxo-card h4 {
color: #27ae60;
margin-top: 0;
}
.guia-projeto .user-type {
background-color: #fff;
border-left: 4px solid #9b59b6;
padding: 15px;
margin: 15px 0;
}
.guia-projeto .user-type h4 {
color: #9b59b6;
margin-top: 0;
}
.guia-projeto .permission-matrix {
overflow-x: auto;
}
.guia-projeto .toc {
background-color: #f8f9fa;
border: 1px solid #dee2e6;
border-radius: 8px;
padding: 20px;
margin: 20px 0;
}
.guia-projeto .toc h3 {
margin-top: 0;
color: #2c3e50;
}
.guia-projeto .toc ul {
list-style-type: none;
padding-left: 0;
}
.guia-projeto .toc ul li {
padding: 5px 0;
}
.guia-projeto .toc ul li a {
color: #3498db;
text-decoration: none;
}
.guia-projeto .toc ul li a:hover {
text-decoration: underline;
}
.guia-projeto .highlight-box {
background-color: #fff3cd;
border-left: 4px solid #ffc107;
padding: 15px;
margin: 20px 0;
}
.guia-projeto .success-box {
background-color: #d4edda;
border-left: 4px solid #28a745;
padding: 15px;
margin: 20px 0;
}
.guia-projeto .nav-tabs .nav-link {
color: #495057;
}
.guia-projeto .nav-tabs .nav-link.active {
color: #3498db;
font-weight: 600;
}
</style>
<div class="guia-projeto">
<h1><i class="fas fa-book"></i> Guia do Projeto SAPL</h1>
<div class="alert">
<strong><i class="fas fa-info-circle"></i> Sobre este Guia:</strong>
Este documento contém informações completas sobre a arquitetura, módulos, fluxos de trabalho e permissões do Sistema de Apoio ao Processo Legislativo (SAPL).
</div>
<!-- Índice -->
<div class="toc">
<h3><i class="fas fa-list"></i> Índice</h3>
<ul>
<li><a href="#visao-geral">1. Visão Geral</a></li>
<li><a href="#arquitetura">2. Arquitetura e Tecnologias</a></li>
<li><a href="#modulos">3. Módulos Principais</a></li>
<li><a href="#fluxos">4. Fluxos de Trabalho</a></li>
<li><a href="#configuracoes">5. Configurações Iniciais</a></li>
<li><a href="#usuarios">6. Tipos de Usuários e Permissões</a></li>
<li><a href="#api">7. API REST</a></li>
<li><a href="#recursos">8. Recursos Especiais</a></li>
</ul>
</div>
<!-- Visão Geral -->
<h2 id="visao-geral"><i class="fas fa-eye"></i> Visão Geral</h2>
<p>
O <strong>SAPL</strong> é um sistema web completo para gerenciamento de processos legislativos em casas legislativas municipais, estaduais e federais.
Desenvolvido pelo Interlegis (Senado Federal), o sistema abrange todo o ciclo de vida legislativo, desde o cadastro de parlamentares até a votação e publicação de normas jurídicas.
</p>
<p><strong>Versão Atual:</strong> <span class="badge badge-primary">3.1.164-RC5</span></p>
<!-- Arquitetura -->
<h2 id="arquitetura"><i class="fas fa-server"></i> Arquitetura e Tecnologias</h2>
<div class="card">
<div class="card-header"><i class="fas fa-layer-group"></i> Stack Tecnológica</div>
<div class="card-body">
<h4>Backend</h4>
<div class="tech-stack">
<span class="tech-badge">Django 2.2</span>
<span class="tech-badge">PostgreSQL 10.5</span>
<span class="tech-badge">Apache Solr 8.11</span>
<span class="tech-badge">Django REST Framework</span>
<span class="tech-badge">Gunicorn</span>
</div>
<h4>Frontend</h4>
<div class="tech-stack">
<span class="tech-badge">Vue.js 2.7.9</span>
<span class="tech-badge">Bootstrap 4.6.2</span>
<span class="tech-badge">Bootstrap-Vue</span>
<span class="tech-badge">TinyMCE 7.2</span>
<span class="tech-badge">Webpack 5</span>
</div>
<h4>Infraestrutura</h4>
<div class="tech-stack">
<span class="tech-badge">Docker</span>
<span class="tech-badge">Docker Compose</span>
<span class="tech-badge">Nginx</span>
<span class="tech-badge">Prometheus</span>
</div>
</div>
</div>
<!-- Módulos -->
<h2 id="modulos"><i class="fas fa-cubes"></i> Módulos Principais</h2>
<p>O SAPL está organizado em <strong>9 módulos principais</strong>:</p>
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header">1. Base</div>
<div class="card-body">
<ul>
<li>Configurações gerais do sistema</li>
<li>Gestão de usuários e permissões</li>
<li>Casa legislativa</li>
<li>Autores</li>
<li>Pesquisa textual</li>
<li>Auditoria</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">2. Parlamentares</div>
<div class="card-body">
<ul>
<li>Cadastro de parlamentares</li>
<li>Legislaturas e sessões legislativas</li>
<li>Partidos políticos e coligações</li>
<li>Mandatos e filiações</li>
<li>Mesa diretora</li>
<li>Frentes e blocos</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">3. Matéria Legislativa</div>
<div class="card-body">
<ul>
<li>Proposições</li>
<li>Matérias legislativas</li>
<li>Tramitação</li>
<li>Autoria e relatoria</li>
<li>Documentos acessórios</li>
<li>Acompanhamento</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">4. Sessão Plenária</div>
<div class="card-body">
<ul>
<li>Sessões ordinárias/extraordinárias</li>
<li>Composição da mesa</li>
<li>Presença de parlamentares</li>
<li>Expediente e ordem do dia</li>
<li>Votações</li>
<li>Atas e resumos</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">5. Norma Jurídica</div>
<div class="card-body">
<ul>
<li>Leis, decretos, resoluções</li>
<li>Vinculação entre normas</li>
<li>Autoria de normas</li>
<li>Anexos</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">6. Comissões</div>
<div class="card-body">
<ul>
<li>Comissões permanentes/temporárias</li>
<li>Composição</li>
<li>Reuniões</li>
<li>Pautas</li>
</ul>
</div>
</div>
</div>
</div>
<!-- Fluxos de Trabalho -->
<h2 id="fluxos"><i class="fas fa-route"></i> Principais Fluxos de Trabalho</h2>
<div class="fluxo-card">
<h4><i class="fas fa-user-tie"></i> 1. Cadastro de Parlamentares</h4>
<p><strong>Objetivo:</strong> Registrar os parlamentares que compõem a casa legislativa</p>
<ol>
<li>Acesse: <code>/parlamentar/create</code></li>
<li>Preencha os dados pessoais (nome, CPF, data de nascimento, etc.)</li>
<li>Adicione filiação partidária: <code>/parlamentar/&lt;id&gt;/filiacao/create</code></li>
<li>Crie mandato: <code>/parlamentar/&lt;id&gt;/mandato/create</code></li>
<li>Adicione dependentes (opcional): <code>/parlamentar/&lt;id&gt;/dependente/create</code></li>
</ol>
</div>
<div class="fluxo-card">
<h4><i class="fas fa-file-alt"></i> 2. Criação de Matéria Legislativa</h4>
<p><strong>Objetivo:</strong> Protocolar e tramitar projetos de lei e outros documentos legislativos</p>
<ol>
<li>Acesse: <code>/materia/create</code></li>
<li>Preencha tipo, número, ano, data de apresentação e ementa</li>
<li>Adicione autoria: <code>/materia/&lt;id&gt;/autoria/create</code></li>
<li>Faça despacho inicial: <code>/materia/&lt;id&gt;/despachoinicial/create</code></li>
<li>Registre tramitação: <code>/materia/&lt;id&gt;/tramitacao/create</code></li>
<li>Anexe documentos: <code>/materia/&lt;id&gt;/documentoacessorio/create</code></li>
</ol>
</div>
<div class="fluxo-card">
<h4><i class="fas fa-gavel"></i> 3. Realização de Sessão Plenária</h4>
<p><strong>Objetivo:</strong> Registrar sessões ordinárias/extraordinárias e realizar votações</p>
<ol>
<li>Acesse: <code>/sessao/create</code></li>
<li>Preencha tipo, número, legislatura, data e hora</li>
<li>Configure a mesa: <code>/sessao/&lt;id&gt;/mesa</code></li>
<li>Registre presença: <code>/sessao/&lt;id&gt;/presenca</code></li>
<li>Adicione matérias ao expediente e ordem do dia</li>
<li>Realize votações</li>
<li>Gere resumo/ata: <code>/sessao/&lt;id&gt;/resumo</code></li>
</ol>
</div>
<div class="fluxo-card">
<h4><i class="fas fa-balance-scale"></i> 4. Publicação de Norma Jurídica</h4>
<p><strong>Objetivo:</strong> Registrar leis, decretos e resoluções aprovadas</p>
<ol>
<li>Acesse: <code>/norma/create</code></li>
<li>Preencha tipo, número, ano, data de publicação e ementa</li>
<li>Anexe texto integral (PDF ou DOC)</li>
<li>Adicione autoria: <code>/norma/&lt;id&gt;/autorianorma/create</code></li>
<li>Vincule normas relacionadas: <code>/norma/&lt;id&gt;/normarelacionada/create</code></li>
</ol>
</div>
<!-- Configurações Iniciais -->
<h2 id="configuracoes"><i class="fas fa-cog"></i> Configurações Iniciais Necessárias</h2>
<div class="highlight-box">
<p><strong><i class="fas fa-exclamation-triangle"></i> Importante:</strong> Antes de começar a usar o sistema, é necessário configurar:</p>
</div>
<table class="table">
<thead>
<tr>
<th>Configuração</th>
<th>URL</th>
<th>Descrição</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Casa Legislativa</strong></td>
<td><code>/sistema/casa-legislativa/</code></td>
<td>Nome, endereço, CNPJ, logomarca</td>
</tr>
<tr>
<td><strong>Legislatura</strong></td>
<td><code>/sistema/parlamentar/legislatura/</code></td>
<td>Número, datas de início e fim, data de eleição</td>
</tr>
<tr>
<td><strong>Sessão Legislativa</strong></td>
<td><code>/sistema/parlamentar/sessao-legislativa/</code></td>
<td>Sessões legislativas para a legislatura</td>
</tr>
<tr>
<td><strong>Partidos</strong></td>
<td><code>/sistema/parlamentar/partido/</code></td>
<td>Partidos políticos</td>
</tr>
<tr>
<td><strong>Tipos de Matéria</strong></td>
<td><code>/sistema/materia/tipo/</code></td>
<td>Projeto de Lei, Emenda, Requerimento, etc.</td>
</tr>
<tr>
<td><strong>Tipos de Norma</strong></td>
<td><code>/sistema/norma/tipo/</code></td>
<td>Lei, Decreto, Resolução, etc.</td>
</tr>
<tr>
<td><strong>Tipos de Sessão</strong></td>
<td><code>/sistema/sessao/tipo/</code></td>
<td>Tipos de sessão plenária</td>
</tr>
</tbody>
</table>
<!-- Tipos de Usuários -->
<h2 id="usuarios"><i class="fas fa-users"></i> Tipos de Usuários e Permissões</h2>
<p>O SAPL possui um sistema robusto de controle de acesso com <strong>11 grupos de usuários</strong> diferentes:</p>
<div class="user-type">
<h4>1. Operador Geral (Superusuário SAPL)</h4>
<p><strong>Acesso:</strong> Todos os módulos e funcionalidades</p>
<p><strong>Telas Principais:</strong></p>
<ul>
<li><code>/sistema/</code> - Painel administrativo completo</li>
<li><code>/sistema/casa-legislativa/</code> - Configuração da casa</li>
<li><code>/sistema/usuario/</code> - Gestão de usuários</li>
<li>Acesso total a todos os módulos</li>
</ul>
</div>
<div class="user-type">
<h4>2. Operador de Matéria</h4>
<p><strong>Acesso:</strong> Módulo de Matéria Legislativa</p>
<p><strong>Permissões:</strong> Criar, editar, excluir matérias, tramitação, autoria, documentos</p>
<p><strong>Telas Principais:</strong></p>
<ul>
<li><code>/materia/</code> - Listar matérias</li>
<li><code>/materia/create</code> - Criar matéria</li>
<li><code>/materia/&lt;id&gt;/tramitacao/</code> - Tramitação</li>
</ul>
</div>
<div class="user-type">
<h4>3. Operador de Sessão Plenária</h4>
<p><strong>Acesso:</strong> Módulo de Sessão Plenária</p>
<p><strong>Permissões:</strong> Criar sessões, registrar presença, gerenciar votações</p>
<p><strong>Telas Principais:</strong></p>
<ul>
<li><code>/sessao/</code> - Listar sessões</li>
<li><code>/sessao/create</code> - Criar sessão</li>
<li><code>/sessao/&lt;id&gt;/presenca</code> - Presença</li>
</ul>
</div>
<div class="user-type">
<h4>4. Operador de Norma Jurídica</h4>
<p><strong>Acesso:</strong> Módulo de Norma Jurídica + Compilação</p>
<p><strong>Permissões:</strong> Criar normas, vincular normas, textos articulados</p>
</div>
<div class="user-type">
<h4>5. Operador de Protocolo Administrativo</h4>
<p><strong>Acesso:</strong> Protocolo + Documentos Administrativos</p>
<p><strong>Permissões:</strong> Protocolar documentos, anular protocolos, visualizar matérias</p>
</div>
<div class="user-type">
<h4>10. Autor (Parlamentares e Proponentes)</h4>
<p><strong>Acesso:</strong> Apenas suas próprias proposições</p>
<p><strong>Restrição:</strong> Só pode ver/editar proposições que ele mesmo criou</p>
</div>
<!-- Usuários Padrão -->
<h3><i class="fas fa-user-shield"></i> Usuários Padrão do Sistema</h3>
<div class="success-box">
<p><strong>Senha padrão para todos os usuários:</strong> <code>interlegis</code></p>
</div>
<table class="table table-sm">
<thead>
<tr>
<th>Usuário</th>
<th>Grupo</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>admin</code></td>
<td>Superusuário Django</td>
</tr>
<tr>
<td><code>operador_geral</code></td>
<td>Operador Geral</td>
</tr>
<tr>
<td><code>operador_materia</code></td>
<td>Operador de Matéria</td>
</tr>
<tr>
<td><code>operador_sessao</code></td>
<td>Operador de Sessão</td>
</tr>
<tr>
<td><code>operador_norma</code></td>
<td>Operador de Norma</td>
</tr>
<tr>
<td><code>operador_protocoloadm</code></td>
<td>Operador de Protocolo</td>
</tr>
<tr>
<td><code>operador_comissoes</code></td>
<td>Operador de Comissões</td>
</tr>
</tbody>
</table>
<!-- Matriz de Permissões -->
<h3><i class="fas fa-table"></i> Matriz de Permissões por Módulo</h3>
<div class="permission-matrix">
<table class="table table-bordered table-sm">
<thead>
<tr>
<th>Módulo</th>
<th>Op. Geral</th>
<th>Op. Matéria</th>
<th>Op. Sessão</th>
<th>Op. Norma</th>
<th>Op. Protocolo</th>
<th>Autor</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Matéria Legislativa</strong></td>
<td class="text-center"></td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">👁️</td>
<td class="text-center">-</td>
</tr>
<tr>
<td><strong>Sessão Plenária</strong></td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">-</td>
</tr>
<tr>
<td><strong>Norma Jurídica</strong></td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center">-</td>
</tr>
<tr>
<td><strong>Protocolo</strong></td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center"></td>
<td class="text-center">-</td>
</tr>
<tr>
<td><strong>Proposições</strong></td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">👁️</td>
<td class="text-center"></td>
</tr>
<tr>
<td><strong>Configurações</strong></td>
<td class="text-center"></td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">-</td>
<td class="text-center">-</td>
</tr>
</tbody>
</table>
<p class="text-muted"><small>✅ = Acesso completo | 👁️ = Apenas visualização | - = Sem acesso</small></p>
</div>
<!-- API REST -->
<h2 id="api"><i class="fas fa-code"></i> API REST</h2>
<p>O SAPL disponibiliza uma API REST completa para integração com outros sistemas.</p>
<div class="card">
<div class="card-header">Informações da API</div>
<div class="card-body">
<p><strong>Documentação:</strong> <a href="/api/docs/" target="_blank">/api/docs/</a></p>
<p><strong>Schema OpenAPI:</strong> <a href="/api/schema/" target="_blank">/api/schema/</a></p>
<p><strong>Autenticação:</strong> Token-based (requer <code>Authorization: Token &lt;token&gt;</code>)</p>
<h5>Principais Endpoints:</h5>
<ul>
<li><code>/api/materia/materialegislativa/</code> - Matérias legislativas</li>
<li><code>/api/parlamentares/parlamentar/</code> - Parlamentares</li>
<li><code>/api/sessao/sessaoplenaria/</code> - Sessões plenárias</li>
<li><code>/api/norma/normajuridica/</code> - Normas jurídicas</li>
<li><code>/api/comissoes/comissao/</code> - Comissões</li>
</ul>
</div>
</div>
<!-- Recursos Especiais -->
<h2 id="recursos"><i class="fas fa-star"></i> Recursos Especiais</h2>
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header"><i class="fas fa-search"></i> Busca Textual (Solr)</div>
<div class="card-body">
<ul>
<li>Indexação automática de documentos</li>
<li>Pesquisa full-text em matérias, normas e documentos</li>
<li>Configurável via <code>USE_SOLR=True</code></li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header"><i class="fas fa-file-code"></i> Textos Articulados</div>
<div class="card-body">
<ul>
<li>Editor de leis estruturadas</li>
<li>Versionamento de textos</li>
<li>Comparação de versões (diff)</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header"><i class="fas fa-desktop"></i> Painel Eletrônico</div>
<div class="card-body">
<ul>
<li>Exibição em tempo real de votações</li>
<li>Painel de presença</li>
<li>URL: <a href="/painel/" target="_blank">/painel/</a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header"><i class="fas fa-bell"></i> Acompanhamento de Matérias</div>
<div class="card-body">
<ul>
<li>Cidadãos podem acompanhar matérias via email</li>
<li>Requer configuração de reCaptcha</li>
</ul>
</div>
</div>
</div>
</div>
<!-- Ordem de Cadastro -->
<h2><i class="fas fa-tasks"></i> Ordem Recomendada de Cadastro</h2>
<div class="highlight-box">
<p><strong>Para criar dados no sistema, siga esta ordem:</strong></p>
<ol>
<li>Configurações do sistema (casa legislativa, legislatura)</li>
<li>Partidos e tipos (matéria, norma, sessão)</li>
<li>Parlamentares</li>
<li>Matérias legislativas</li>
<li>Sessões plenárias</li>
<li>Normas jurídicas</li>
</ol>
</div>
<!-- Suporte -->
<h2><i class="fas fa-life-ring"></i> Suporte e Documentação</h2>
<div class="card">
<div class="card-body">
<ul>
<li><strong>Discord:</strong> <a href="https://discord.gg/fzXSbhZbcy" target="_blank">Sala "Somos Interlegis"</a></li>
<li><strong>Issues:</strong> <a href="https://github.com/interlegis/sapl/issues" target="_blank">GitHub Issue Tracker</a></li>
<li><strong>Wiki:</strong> <a href="https://colab.interlegis.leg.br/wiki/ProjetoSapl" target="_blank">Wiki do Projeto</a></li>
<li><strong>FAQ:</strong> <a href="https://github.com/interlegis/sapl/wiki/Perguntas-Frequentes" target="_blank">Perguntas Frequentes</a></li>
</ul>
</div>
</div>
<hr>
<p class="text-muted text-center">
<small><i class="fas fa-calendar-alt"></i> Documento gerado em: {{ data_geracao }}</small>
</p>
</div>
{% endblock base_content %}

235
sapl/templates/index.html

@ -6,187 +6,144 @@
{% block base_content%} {% block base_content%}
<div class="container-home"> <div class="container-home">
<div id="homeIndex"> <div id="homeIndex">
<!-- Mesa Diretora -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-users-cog"></i>
<img src="{% webpack_static 'img/icon_mesa_diretora.png' %}" alt="Mesa Diretora">
</div> </div>
<h2>Mesa Diretora</h2> <h3 class="card-title">Mesa Diretora</h3>
<p class="card-description">Órgão colegiado que dirige os trabalhos legislativos</p>
<div class="card-actions">
<a href="{% url 'sapl.parlamentares:mesa_diretora' %}" class="btn-action" title="Ver Mesa Diretora">
<i class="fas fa-eye"></i> Visualizar
</a>
</div> </div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% webpack_static 'img/icon_mesa_diretora.png' %}">
<h2>Mesa Diretora</h2>
</div>
<p>
Órgão colegiado, composto de no mínimo três membros efetivos - Presidente e 1° e 2° Secretários - a
quem cabe a direção dos trabalhos legislativos. Os parlamentares integrantes da Mesa Diretora são
eleitos por seus pares na primeira reunião de instalação do período legislativo, para um mandato de
um
a dois anos.
</p>
</div>
<a href="{% url 'sapl.parlamentares:mesa_diretora' %}"></a>
</div> </div>
<!-- Comissões -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-users"></i>
<img src="{% webpack_static 'img/icon_comissoes.png' %}" alt="Comissões">
</div>
<h2>Comissões</h2>
</div> </div>
<div class="homeContent"> <h3 class="card-title">Comissões</h3>
<div class="homeTitle"> <p class="card-description">Órgãos técnicos especializados da Casa</p>
<img src="{% webpack_static 'img/icon_comissoes.png' %}"> <div class="card-actions">
<h2>Comissões</h2> <a href="{% url 'sapl.comissoes:comissao_list' %}" class="btn-action" title="Ver Comissões">
<i class="fas fa-list"></i> Listar
</a>
</div> </div>
<p>
Órgãos da Casa Legislativa, de natureza técnica especializada e que têm por objetivo prestar
melhores
esclarecimentos aos parlamentares para a tomada de decisões. Assim, as comissões elaboram estudos,
pareceres a respeito de determinados projetos de lei e investigação de irregularidades sobre fato
determinado.
</p>
</div>
<a href="{% url 'sapl.comissoes:comissao_list' %}"></a>
</div> </div>
<!-- Parlamentares -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-user-tie"></i>
<img src="{% webpack_static 'img/icon_parlamentares.png' %}" alt="Parlamentares">
</div>
<h2>Parlamentares</h2>
</div> </div>
<div class="homeContent"> <h3 class="card-title">Parlamentares</h3>
<div class="homeTitle"> <p class="card-description">Representantes do Poder Legislativo</p>
<img src="{% webpack_static 'img/icon_parlamentares.png' %}"> <div class="card-actions">
<h2>Parlamentares</h2> <a href="{% url 'sapl.parlamentares:parlamentar_list' %}" class="btn-action" title="Ver Parlamentares">
<i class="fas fa-list"></i> Listar
</a>
</div> </div>
<p>
O Poder Legislativo, exercido pelo sistema de representação, tem nos parlamentares a sua expressão
máxima. Devem transformar os anseios de seus representados em ações diretas, na forma de leis ou
buscando junto do Executivo obras e atos que beneficiem a sua comunidade. Possuem funções
legisladora,
administrativa, julgadora e de fiscalização sobre a conduta do Executivo.
</p>
</div>
<a href="{% url 'sapl.parlamentares:parlamentar_list' %}"></a>
</div> </div>
<!-- Pautas -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-calendar-alt"></i>
<img src="{% webpack_static 'img/icon_pautas.png' %}" alt="Pautas das Sessões">
</div>
<h2>Pautas das Sessões</h2>
</div> </div>
<div class="homeContent"> <h3 class="card-title">Pautas</h3>
<div class="homeTitle"> <p class="card-description">Matérias a serem discutidas e votadas</p>
<img src="{% webpack_static 'img/icon_pautas.png' %}"> <div class="card-actions">
<h2>Pautas das<br>Sessões</h2> <a href="{% url 'sapl.sessao:pauta_sessao' %}" class="btn-action" title="Ver Pautas">
<i class="fas fa-calendar-check"></i> Consultar
</a>
</div> </div>
<p>
Utilizadas para se determinar quais matérias serão discutidas e votadas. A responsabilidade pela
elaboração das Pautas, que incluem Expediente e Ordem do Dia, é definida no Regimento Interno que,
em
geral, dá poderes ao Presidente da Casa Legislativa para a sua elaboração. Também, pode ficar a
cargo
de um colégio de líderes dos partidos políticos.
</p>
</div>
<a href="{% url 'sapl.sessao:pauta_sessao' %}"></a>
</div> </div>
<!-- Sessões Plenárias -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-gavel"></i>
<img src="{% webpack_static 'img/icon_plenarias.png' %}" alt="Sessão Plenária">
</div>
<h2>Sessão Plenária</h2>
</div> </div>
<div class="homeContent"> <h3 class="card-title">Sessões Plenárias</h3>
<div class="homeTitle"> <p class="card-description">Reuniões para votação de matérias</p>
<img src="{% webpack_static 'img/icon_plenarias.png' %}"> <div class="card-actions">
<h2>Sessão Plenária</h2> <a href="{% url 'sapl.sessao:pesquisar_sessao' %}" class="btn-action" title="Pesquisar Sessões">
<i class="fas fa-search"></i> Pesquisar
</a>
</div> </div>
<p>
Foro apropriado para a tomada de decisões sobre os projetos de lei e outras matérias legislativas
ou
administrativas, aprovadas ou rejeitadas em votação pelos parlamentares. É dirigida pela Mesa
Diretora
de acordo com o Regimento Interno da Casa. As decisões votadas em Plenário são soberanas e
prevalecem
sobre interesses ou vontades individuais.
</p>
</div>
<a href="{% url 'sapl.sessao:pesquisar_sessao' %}"></a>
</div> </div>
<!-- Matérias Legislativas -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-file-alt"></i>
<img src="{% webpack_static 'img/icon_materia_legislativa.png' %}" alt="Matérias Legislativas">
</div>
<h2>Matérias Legislativas</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% webpack_static 'img/icon_materia_legislativa.png' %}">
<h2>Matérias<br>Legislativas</h2>
</div> </div>
<p> <h3 class="card-title">Matérias Legislativas</h3>
Têm início com o processo de criação de leis e a apresentação de projetos no Poder Legislativo. Na <p class="card-description">Projetos de lei e proposições</p>
apreciação de matérias, podem haver eventuais conflitos de interpretação ou de entendimento entre o <div class="card-actions">
que <a href="{% url 'sapl.materia:pesquisar_materia' %}" class="btn-action" title="Pesquisar Matérias">
estabelece o Regimento Interno da Casa e a Lei Orgânica do Município. Nestes casos, prevalece a Lei <i class="fas fa-search"></i> Pesquisar
Orgânica. </a>
</p>
</div> </div>
<a href="{% url 'sapl.materia:pesquisar_materia' %}"></a>
</div> </div>
<!-- Normas Jurídicas -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-balance-scale"></i>
<img src="{% webpack_static 'img/icon_normas_juridicas.png' %}" alt="Normas Jurídicas">
</div> </div>
<h2>Normas Jurídicas</h2> <h3 class="card-title">Normas Jurídicas</h3>
<p class="card-description">Leis, decretos e resoluções</p>
<div class="card-actions">
<a href="{% url 'sapl.norma:norma_pesquisa'%}" class="btn-action" title="Pesquisar Normas">
<i class="fas fa-search"></i> Pesquisar
</a>
</div> </div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% webpack_static 'img/icon_normas_juridicas.png' %}">
<h2>Normas Jurídicas</h2>
</div> </div>
<p>
Nos Municípios, referem-se às emendas à Lei Orgânica, às leis complementares, às leis ordinárias, <!-- Relatórios -->
aos <div class="homeBlock">
decretos legislativos e às resoluções. <div class="card-icon">
</p> <i class="fas fa-chart-bar"></i>
</div>
<h3 class="card-title">Relatórios</h3>
<p class="card-description">Estatísticas e análises legislativas</p>
<div class="card-actions">
<a href="/sistema/relatorios/" class="btn-action" title="Ver Relatórios">
<i class="fas fa-file-chart"></i> Acessar
</a>
</div> </div>
<a href="{% url 'sapl.norma:norma_pesquisa'%}"></a>
</div> </div>
<!-- Guia do Projeto -->
<div class="homeBlock"> <div class="homeBlock">
<div class="homeFront"> <div class="card-icon">
<div class="homeIcon"> <i class="fas fa-book"></i>
<img src="{% webpack_static 'img/icon_relatorios.png' %}" alt="Relatórios"> </div>
<h3 class="card-title">Guia do Projeto</h3>
<p class="card-description">Documentação completa do sistema SAPL</p>
<div class="card-actions">
<a href="{% url 'sapl.base:guia_projeto' %}" class="btn-action" title="Ver Guia do Projeto">
<i class="fas fa-book-reader"></i> Consultar
</a>
</div> </div>
<h2>Relatórios</h2>
</div> </div>
<div class="homeContent">
<div class="homeTitle"> <!-- Fluxo de Proposições -->
<img src="{% webpack_static 'img/icon_relatorios.png' %}"> <div class="homeBlock">
<h2>Relatórios</h2> <div class="card-icon">
<i class="fas fa-paper-plane"></i>
</div> </div>
<p> <h3 class="card-title">Fluxo de Proposições</h3>
Contém informações estatísticas sobre a produção legislativa dos parlamentares e da Casa, dispostas <p class="card-description">Como parlamentares criam e enviam proposições</p>
e <div class="card-actions">
agrupadas de diferentes formas de acordo com parâmetros fornecidos. <a href="{% url 'sapl.base:fluxo_proposicoes' %}" class="btn-action" title="Ver Fluxo de Proposições">
</p> <i class="fas fa-route"></i> Visualizar
</a>
</div> </div>
<a href="/sistema/relatorios/"></a>
</div> </div>
</div> </div>
</div> </div>

401
yarn.lock

@ -32,7 +32,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz"
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
"@babel/core@^7.12.16", "@babel/core@^7.18.13": "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.0", "@babel/core@^7.12.0", "@babel/core@^7.12.16", "@babel/core@^7.13.0", "@babel/core@^7.18.13", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0":
version "7.24.5" version "7.24.5"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz" resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz"
integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==
@ -1159,7 +1159,7 @@
"@nodelib/fs.stat" "2.0.5" "@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9" run-parallel "^1.1.9"
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
version "2.0.5" version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@ -1577,7 +1577,7 @@
resolved "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz" resolved "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz"
integrity sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA== integrity sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==
"@vue/cli-service@^5.0.8": "@vue/cli-service@^3.0.0 || ^4.0.0 || ^5.0.0-0", "@vue/cli-service@^5.0.8":
version "5.0.8" version "5.0.8"
resolved "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.8.tgz" resolved "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.8.tgz"
integrity sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw== integrity sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==
@ -1675,17 +1675,6 @@
"@vue/compiler-core" "3.4.27" "@vue/compiler-core" "3.4.27"
"@vue/shared" "3.4.27" "@vue/shared" "3.4.27"
"@vue/compiler-sfc@2.7.16":
version "2.7.16"
resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz"
integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==
dependencies:
"@babel/parser" "^7.23.5"
postcss "^8.4.14"
source-map "^0.6.1"
optionalDependencies:
prettier "^1.18.2 || ^2.0.0"
"@vue/compiler-sfc@^3.4.15": "@vue/compiler-sfc@^3.4.15":
version "3.4.27" version "3.4.27"
resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz" resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz"
@ -1701,6 +1690,17 @@
postcss "^8.4.38" postcss "^8.4.38"
source-map-js "^1.2.0" source-map-js "^1.2.0"
"@vue/compiler-sfc@2.7.16":
version "2.7.16"
resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz"
integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==
dependencies:
"@babel/parser" "^7.23.5"
postcss "^8.4.14"
source-map "^0.6.1"
optionalDependencies:
prettier "^1.18.2 || ^2.0.0"
"@vue/compiler-ssr@3.4.27": "@vue/compiler-ssr@3.4.27":
version "3.4.27" version "3.4.27"
resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz" resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz"
@ -1746,7 +1746,7 @@
resolved "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz" resolved "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz"
integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA== integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==
"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": "@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1":
version "1.12.1" version "1.12.1"
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz"
integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==
@ -1847,7 +1847,7 @@
"@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-gen" "1.12.1"
"@webassemblyjs/wasm-parser" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1"
"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": "@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1":
version "1.12.1" version "1.12.1"
resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz"
integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==
@ -1900,7 +1900,7 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2:
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz"
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
acorn@^8.0.4, acorn@^8.0.5, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.0.4, acorn@^8.0.5, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0:
version "8.11.3" version "8.11.3"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
@ -1929,7 +1929,7 @@ ajv-keywords@^5.1.0:
dependencies: dependencies:
fast-deep-equal "^3.1.3" fast-deep-equal "^3.1.3"
ajv@^6.12.4, ajv@^6.12.5: ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
version "6.12.6" version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@ -1939,7 +1939,17 @@ ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1" json-schema-traverse "^0.4.1"
uri-js "^4.2.2" uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.9.0: ajv@^8.0.0:
version "8.13.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz"
integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
dependencies:
fast-deep-equal "^3.1.3"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.4.1"
ajv@^8.8.2, ajv@^8.9.0:
version "8.13.0" version "8.13.0"
resolved "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz" resolved "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz"
integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
@ -1976,7 +1986,14 @@ ansi-styles@^3.2.1:
dependencies: dependencies:
color-convert "^1.9.0" color-convert "^1.9.0"
ansi-styles@^4.0.0, ansi-styles@^4.1.0: ansi-styles@^4.0.0:
version "4.3.0"
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
ansi-styles@^4.1.0:
version "4.3.0" version "4.3.0"
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
@ -2269,7 +2286,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies: dependencies:
fill-range "^7.1.1" fill-range "^7.1.1"
browserslist@^4.0.0, browserslist@^4.16.3, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: browserslist@^4.0.0, browserslist@^4.16.3, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0, "browserslist@>= 4.21.0":
version "4.23.0" version "4.23.0"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz"
integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
@ -2380,7 +2397,7 @@ chalk@^3.0.0:
ansi-styles "^4.1.0" ansi-styles "^4.1.0"
supports-color "^7.1.0" supports-color "^7.1.0"
chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: chalk@^4.0.0:
version "4.1.2" version "4.1.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@ -2388,7 +2405,23 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
ansi-styles "^4.1.0" ansi-styles "^4.1.0"
supports-color "^7.1.0" supports-color "^7.1.0"
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: chalk@^4.1.0:
version "4.1.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0":
version "3.6.0" version "3.6.0"
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
@ -2497,16 +2530,16 @@ color-convert@^2.0.1:
dependencies: dependencies:
color-name "~1.1.4" color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4: color-name@~1.1.4:
version "1.1.4" version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
colord@^2.9.1: colord@^2.9.1:
version "2.9.3" version "2.9.3"
resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz"
@ -2698,7 +2731,7 @@ css-declaration-sorter@^6.3.1:
resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz"
integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==
css-loader@^6.5.0, css-loader@^6.7.1: css-loader@*, css-loader@^6.5.0, css-loader@^6.7.1:
version "6.11.0" version "6.11.0"
resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz" resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz"
integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==
@ -2851,13 +2884,6 @@ debounce@^1.2.1:
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
debug@2.6.9:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
debug@^3.2.7: debug@^3.2.7:
version "3.2.7" version "3.2.7"
resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
@ -2872,6 +2898,13 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
dependencies: dependencies:
ms "2.1.2" ms "2.1.2"
debug@2.6.9:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
deep-is@^0.1.3: deep-is@^0.1.3:
version "0.1.4" version "0.1.4"
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
@ -2924,16 +2957,16 @@ delayed-stream@~1.0.0:
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
depd@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
depd@~1.1.2: depd@~1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
depd@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
destroy@1.2.0: destroy@1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
@ -3281,7 +3314,7 @@ eslint-plugin-es@^4.1.0:
eslint-utils "^2.0.0" eslint-utils "^2.0.0"
regexpp "^3.0.0" regexpp "^3.0.0"
eslint-plugin-import@^2.26.0: eslint-plugin-import@^2.25.2, eslint-plugin-import@^2.26.0:
version "2.29.1" version "2.29.1"
resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz"
integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==
@ -3304,7 +3337,7 @@ eslint-plugin-import@^2.26.0:
semver "^6.3.1" semver "^6.3.1"
tsconfig-paths "^3.15.0" tsconfig-paths "^3.15.0"
eslint-plugin-n@^15.2.5: "eslint-plugin-n@^15.0.0 || ^16.0.0 ", eslint-plugin-n@^15.2.5:
version "15.7.0" version "15.7.0"
resolved "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz" resolved "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz"
integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q== integrity sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==
@ -3349,15 +3382,15 @@ eslint-plugin-vue@^9.3.0:
vue-eslint-parser "^9.4.2" vue-eslint-parser "^9.4.2"
xml-name-validator "^4.0.0" xml-name-validator "^4.0.0"
eslint-scope@5.1.1: eslint-scope@^7.1.1:
version "5.1.1" version "7.2.2"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
dependencies: dependencies:
esrecurse "^4.3.0" esrecurse "^4.3.0"
estraverse "^4.1.1" estraverse "^5.2.0"
eslint-scope@^7.1.1, eslint-scope@^7.2.2: eslint-scope@^7.2.2:
version "7.2.2" version "7.2.2"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
@ -3365,6 +3398,14 @@ eslint-scope@^7.1.1, eslint-scope@^7.2.2:
esrecurse "^4.3.0" esrecurse "^4.3.0"
estraverse "^5.2.0" estraverse "^5.2.0"
eslint-scope@5.1.1:
version "5.1.1"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
dependencies:
esrecurse "^4.3.0"
estraverse "^4.1.1"
eslint-utils@^2.0.0: eslint-utils@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz"
@ -3389,7 +3430,17 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: eslint-visitor-keys@^3.3.0:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint-visitor-keys@^3.4.1:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint-visitor-keys@^3.4.3:
version "3.4.3" version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
@ -3405,7 +3456,7 @@ eslint-webpack-plugin@^3.2.0:
normalize-path "^3.0.0" normalize-path "^3.0.0"
schema-utils "^4.0.0" schema-utils "^4.0.0"
eslint@^8.22.0: "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.1, eslint@^8.22.0, eslint@>=4.19.1, eslint@>=5, eslint@>=5.16.0, eslint@>=6.0.0, eslint@>=7.0.0:
version "8.57.0" version "8.57.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
@ -3477,7 +3528,12 @@ estraverse@^4.1.1:
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0, estraverse@^5.2.0: estraverse@^5.1.0:
version "5.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
estraverse@^5.2.0:
version "5.3.0" version "5.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
@ -3665,7 +3721,15 @@ find-cache-dir@^3.3.1:
make-dir "^3.0.2" make-dir "^3.0.2"
pkg-dir "^4.1.0" pkg-dir "^4.1.0"
find-up@^4.0.0, find-up@^4.1.0: find-up@^4.0.0:
version "4.1.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
dependencies:
locate-path "^5.0.0"
path-exists "^4.0.0"
find-up@^4.1.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
@ -3756,11 +3820,6 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2: function-bind@^1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@ -3823,7 +3882,7 @@ get-symbol-description@^1.0.2:
es-errors "^1.3.0" es-errors "^1.3.0"
get-intrinsic "^1.2.4" get-intrinsic "^1.2.4"
glob-parent@^5.1.2, glob-parent@~5.1.2: glob-parent@^5.1.2:
version "5.1.2" version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@ -3837,6 +3896,13 @@ glob-parent@^6.0.1, glob-parent@^6.0.2:
dependencies: dependencies:
is-glob "^4.0.3" is-glob "^4.0.3"
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob-to-regexp@^0.4.1: glob-to-regexp@^0.4.1:
version "0.4.1" version "0.4.1"
resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
@ -3859,7 +3925,14 @@ globals@^11.1.0:
resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.19.0, globals@^13.24.0: globals@^13.19.0:
version "13.24.0"
resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz"
integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
dependencies:
type-fest "^0.20.2"
globals@^13.24.0:
version "13.24.0" version "13.24.0"
resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz"
integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
@ -4066,6 +4139,16 @@ http-deceiver@^1.2.7:
resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-errors@2.0.0: http-errors@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
@ -4077,16 +4160,6 @@ http-errors@2.0.0:
statuses "2.0.1" statuses "2.0.1"
toidentifier "1.0.1" toidentifier "1.0.1"
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1: http-parser-js@>=0.5.1:
version "0.5.8" version "0.5.8"
resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz"
@ -4173,7 +4246,7 @@ inflight@^1.0.4:
once "^1.3.0" once "^1.3.0"
wrappy "1" wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4:
version "2.0.4" version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -4197,16 +4270,16 @@ interpret@^1.0.0:
resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1: ipaddr.js@^2.0.1:
version "2.2.0" version "2.2.0"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
is-array-buffer@^3.0.4: is-array-buffer@^3.0.4:
version "3.0.4" version "3.0.4"
resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz" resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz"
@ -4477,7 +4550,7 @@ jquery-ui@^1.13.2:
dependencies: dependencies:
jquery ">=1.8.0 <4.0.0" jquery ">=1.8.0 <4.0.0"
"jquery@>=1.8.0 <4.0.0", jquery@^3.6.0: jquery@^3.6.0, "jquery@>=1.8.0 <4.0.0", "jquery@1.9.1 - 3":
version "3.7.1" version "3.7.1"
resolved "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz" resolved "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz"
integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
@ -4539,7 +4612,14 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
json5@^1.0.1, json5@^1.0.2: json5@^1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz"
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
dependencies:
minimist "^1.2.0"
json5@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz"
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
@ -4834,7 +4914,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
braces "^3.0.3" braces "^3.0.3"
picomatch "^2.3.1" picomatch "^2.3.1"
mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": "mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
version "1.52.0" version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
@ -4912,7 +4992,7 @@ moment-locales-webpack-plugin@^1.2.0:
dependencies: dependencies:
lodash.difference "^4.5.0" lodash.difference "^4.5.0"
moment@^2.29.4: moment@^2.29.4, moment@^2.8.0:
version "2.30.1" version "2.30.1"
resolved "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz" resolved "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz"
integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==
@ -4922,16 +5002,16 @@ mrmime@^2.0.0:
resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz" resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz"
integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==
ms@^2.1.1, ms@2.1.2:
version "2.1.2"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.0.0: ms@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.2, ms@^2.1.1:
version "2.1.2"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.1.3: ms@2.1.3:
version "2.1.3" version "2.1.3"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
@ -5293,7 +5373,12 @@ path-is-absolute@^1.0.0:
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-key@^2.0.0, path-key@^2.0.1: path-key@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz"
integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
path-key@^2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz"
integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
@ -5611,15 +5696,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^7.0.36: "postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38:
version "7.0.39"
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
dependencies:
picocolors "^0.2.1"
source-map "^0.6.1"
postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.38:
version "8.4.38" version "8.4.38"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@ -5628,6 +5705,14 @@ postcss@^8.2.6, postcss@^8.3.5, postcss@^8.4.14, postcss@^8.4.33, postcss@^8.4.3
picocolors "^1.0.0" picocolors "^1.0.0"
source-map-js "^1.2.0" source-map-js "^1.2.0"
postcss@^7.0.36:
version "7.0.39"
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
dependencies:
picocolors "^0.2.1"
source-map "^0.6.1"
prelude-ls@^1.2.1: prelude-ls@^1.2.1:
version "1.2.1" version "1.2.1"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
@ -5933,15 +6018,20 @@ safe-array-concat@^1.1.2:
has-symbols "^1.0.3" has-symbols "^1.0.3"
isarray "^2.0.5" isarray "^2.0.5"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
version "5.2.1"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2" version "5.1.2"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: safe-buffer@5.1.2:
version "5.2.1" version "5.1.2"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-regex-test@^1.0.3: safe-regex-test@^1.0.3:
version "1.0.3" version "1.0.3"
@ -5964,7 +6054,7 @@ sass-loader@^13.0.2:
dependencies: dependencies:
neo-async "^2.6.2" neo-async "^2.6.2"
sass@^1.54.5: sass@^1.3.0, sass@^1.54.5:
version "1.77.2" version "1.77.2"
resolved "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz" resolved "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz"
integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==
@ -5982,7 +6072,25 @@ schema-utils@^2.6.5:
ajv "^6.12.4" ajv "^6.12.4"
ajv-keywords "^3.5.2" ajv-keywords "^3.5.2"
schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: schema-utils@^3.0.0:
version "3.3.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
schema-utils@^3.1.1:
version "3.3.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
schema-utils@^3.2.0:
version "3.3.0" version "3.3.0"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
@ -6014,7 +6122,7 @@ selfsigned@^2.1.1:
"@types/node-forge" "^1.3.0" "@types/node-forge" "^1.3.0"
node-forge "^1" node-forge "^1"
"semver@2 || 3 || 4 || 5", semver@^5.5.0: semver@^5.5.0:
version "5.7.2" version "5.7.2"
resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
@ -6024,11 +6132,46 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.3.1:
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.8, semver@^7.5.4, semver@^7.6.0: semver@^7.0.0:
version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.3.4:
version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.3.5:
version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.3.6:
version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.3.8:
version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.5.4:
version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.6.0:
version "7.6.2" version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
"semver@2 || 3 || 4 || 5":
version "5.7.2"
resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
send@0.18.0: send@0.18.0:
version "0.18.0" version "0.18.0"
resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz"
@ -6198,7 +6341,7 @@ sockjs@^0.3.24:
uuid "^8.3.2" uuid "^8.3.2"
websocket-driver "^0.7.4" websocket-driver "^0.7.4"
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0: source-map-js@^1.2.0, "source-map-js@>=0.6.2 <2.0.0":
version "1.2.0" version "1.2.0"
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
@ -6282,15 +6425,29 @@ stackframe@^1.3.4:
resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz"
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
statuses@2.0.1: statuses@2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
"statuses@>= 1.4.0 < 2": string_decoder@^1.1.1:
version "1.5.0" version "1.3.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
string-width@^2.1.1: string-width@^2.1.1:
version "2.1.1" version "2.1.1"
@ -6337,20 +6494,6 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1" define-properties "^1.2.1"
es-object-atoms "^1.0.0" es-object-atoms "^1.0.0"
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
strip-ansi@^4.0.0: strip-ansi@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"
@ -6677,7 +6820,7 @@ universalify@^2.0.0:
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
unpipe@1.0.0, unpipe@~1.0.0: unpipe@~1.0.0, unpipe@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
@ -6770,7 +6913,7 @@ vue-style-loader@^4.1.0, vue-style-loader@^4.1.3:
hash-sum "^1.0.2" hash-sum "^1.0.2"
loader-utils "^1.0.2" loader-utils "^1.0.2"
vue-template-compiler@^2.7.9: vue-template-compiler@^2.0.0, vue-template-compiler@^2.7.9:
version "2.7.16" version "2.7.16"
resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz" resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz"
integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ== integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==
@ -6783,7 +6926,7 @@ vue-template-es2015-compiler@^1.9.0:
resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz" resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
vue@^2.7.9: vue@*, "vue@^2 || ^3.2.13", vue@^2.5.18, vue@^2.7.9:
version "2.7.16" version "2.7.16"
resolved "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz" resolved "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz"
integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw== integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==
@ -6913,7 +7056,7 @@ webpack-merge@^5.7.3:
flat "^5.0.2" flat "^5.0.2"
wildcard "^2.0.0" wildcard "^2.0.0"
webpack-sources@^3.2.3: webpack-sources@*, webpack-sources@^3.2.3:
version "3.2.3" version "3.2.3"
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
@ -6923,7 +7066,7 @@ webpack-virtual-modules@^0.4.2:
resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz" resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz"
integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==
webpack@^5.54.0, webpack@^5.74.0: "webpack@^1 || ^2 || ^3 || ^4 || ^5", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.1.0 || ^5.0.0-0", "webpack@^4.27.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.54.0, webpack@^5.74.0, webpack@>=2:
version "5.91.0" version "5.91.0"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz" resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz"
integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==
@ -6953,7 +7096,7 @@ webpack@^5.54.0, webpack@^5.74.0:
watchpack "^2.4.1" watchpack "^2.4.1"
webpack-sources "^3.2.3" webpack-sources "^3.2.3"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4: websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
version "0.7.4" version "0.7.4"
resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==

Loading…
Cancel
Save