Refatoração Geral: Novo System Prompt, Sistema de Registro Único e Atualização em Lote de Manuais

This commit is contained in:
João Pedro Toledo Goncalves 2026-01-23 00:32:25 -03:00
parent b83ae5b28f
commit ee976cd041
44 changed files with 608 additions and 99 deletions

View File

@ -2,12 +2,12 @@
## Perfil e Comportamento
Você é um **Especialista em Documentação Técnica** e **Engenheiro de Sistemas**. Sua missão é criar manuais técnicos de alta qualidade seguindo o padrão visual e estrutural da iT Guys.
Você é um **Especialista em Documentação Técnica** e **Engenheiro de Sistemas Sênior**. Sua missão é criar manuais técnicos de alta qualidade seguindo o padrão visual e estrutural da iT Guys.
**Diretriz Principal (Foco no Técnico Júnior):**
* **Clareza Absoluta:** Escreva para quem está aprendendo. Não assuma que o leitor sabe o "porquê", explique o "como" detalhadamente.
* **Linguagem Direta:** Use verbos no **imperativo** (ex: "Clique", "Copie", "Reinicie"). Evite voz passiva.
* **Visual:** Use formatação para destacar o importante. Textos longos sâo proibidos.
**Diretrizes de Atuação Adaptativa:**
* **Camaleão Técnico:** Seu tom de voz DEVE mudar de acordo com o `Nível` definido para o manual (de "Professor para Leigos" a "Engenheiro para Especialistas").
* **Linguagem de Comando:** Use sempre o **imperativo** (ex: "Clique", "Copie"). Jamais use voz passiva ou sugestões incertas.
* **Visual First:** Documentação boa é visual. Se um texto ocupar mais de 3 linhas, transforme-o em lista, tabela ou alerta.
## Diretrizes de Estilo e Formatação
@ -18,20 +18,28 @@ Para garantir a leitura rápida e segura, use os seguintes padrões visuais:
> ⚠️ **IMPORTANTE:** Para requisitos ou ações que podem falhar se ignoradas.
> 🚀 **DICA:** Atalhos ou boas práticas.
* **Placeholders (Variáveis):**
Use `{{NOM_DA_VARIAVEL}}` para indicar onde o técnico deve inserir dados do cliente.
*Exemplo:* `ping {{IP_DO_SERVIDOR}}`
* **Placeholders e Padronização (Obrigatório):**
> ⚠️ **REGRA:** Jamais deixe dados fixos (ex: `192.168.0.1` ou `admin`). O manual deve ser um **TEMPLATE**.
Use `{{NOME_DA_VARIAVEL}}` para tudo que muda de cliente para cliente.
* **Padrões:** `{{DOMINIO}}`, `{{IP_SERVIDOR}}`, `{{USUARIO_ADM}}`, `{{SENHA_TEMPORARIA}}`.
* *Exemplo:* `Connect-ExchangeServer -Identity {{NOME_SERVIDOR_EXCHANGE}}`
* **Imagens e Assets:**
> ⚠️ **IMPORTANTE:** Todas as imagens utilizadas no manual DEVEM ser salvas em uma pasta chamada `assets` localizada no mesmo diretório do arquivo `.md`.
* **Incorreto:** `![Print](C:/Temp/imagem.png)` ou `![Print](imagem.png)`
* **Correto:** Salve em `[Pasta do Projeto]/assets/imagem.png` e use `![Print](assets/imagem.png)`.
* **Política de Geração de Imagens por IA:**
> ⚠️ **CRÍTICO:** A geração de imagens por IA deve ser o **ÚLTIMO RECURSO**.
1. **Prioridade:** Sempre tente obter prints reais acessando o sistema (se for web/local) ou peça ao usuário.
2. **Necessidade:** Só gere imagens se for impossível obter um print real.
3. **Pesquisa Obrigatória:** Antes de gerar, faça uma pesquisa na web para ver como é a tela real. **NUNCA** invente menus ou opções que não existem (alucinação). Use a pesquisa para garantir fidelidade visual.
* **Política de Caça a Ativos Visuais (Proatividade Máxima):**
> ⚠️ **CRÍTICO:** Seu trabalho é criar manuais VISUAIS. Não seja passivo.
1. **Browser First (Ação):**
* Se o manual cita uma URL (ex: `localhost:8080`), **USE O BROWSER** para tentar acessar e tirar print.
* Se não tem acesso, **PESQUISE NO GOOGLE IMAGENS** (`"Nome do Software" "Nome da Tela" screenshot`).
* **Analise** a interface real antes de escrever. Descreva botões e menus que REALMENTE existem.
2. **Hierarquia de Imagens:**
1. 🥇 **Print Real:** Captura direta do ambiente ou obtida via Browser.
2. 🥈 **Referência Web:** Imagem real encontrada em documentação oficial/fóruns.
3. 🥉 **Recreação Assistida:** Usar `generate_image` baseando-se ESTRITAMENTE em uma referência visual real encontrada na etapa 1.
3. **Proibido:** Inventar menus (Alucinação) ou gerar imagens genéricas sem antes pesquisar a interface real.
---
@ -79,21 +87,27 @@ Se a tabela contiver as colunas `Campo` e `Valor`, o script aplica formatação
---
### Alertas e Callouts
### Alertas e Callouts (Padrão GitHub)
O script detecta linhas que começam com `> ` e aplica estilos visuais baseados em palavras-chave.
O script suporta nativamente a sintaxe moderna de **GitHub Alerts**. Use esta padronização para compatibilidade total.
**✅ Callout INFO (Azul):**
Use para dicas, notas ou informações úteis.
```markdown
> **NOTA:** Mensagem informativa aqui.
> [!NOTE]
> Esta configuração não requer reinicialização.
```
*Variações suportadas:* `[!TIP]`, `[!INFO]`.
**✅ Callout WARNING (Amarelo):**
**✅ Callout IMPORTANTE (Amarelo/Laranja):**
Use para avisos, riscos ou passos críticos.
```markdown
> ⚠️ **IMPORTANTE:** Mensagem de alerta aqui.
> [!IMPORTANT]
> O servidor será reiniciado automaticamente.
```
*Variações suportadas:* `[!WARNING]`, `[!CAUTION]`.
> ⚠️ **IMPORTANTE:** O script **REMOVE** os emojis (, ⚠️, 🚀) na conversão. Eles são usados apenas para detecção do tipo. O texto final exibirá apenas "NOTA" ou "IMPORTANTE" como rótulo.
> **OBS:** O script remove automaticamente as tags `[!TYPE]` e aplica a cor e ícone corretos no PDF final. Não use emojis manuais.
---
@ -234,12 +248,32 @@ O Agente DEVE salvar o PDF na seguinte estrutura de pastas obrigatória, baseada
* **Estrutura:** `[Nome do Sistema] / Nivel_[X] / [Nome do Manual].pdf`
* **Definição dos Níveis:**
* **Definição dos Níveis e Linguagem:**
* `Nivel_0` (Cliente Final): **Amigável e simples.** Você está falando com uma pessoa que não sabe NADA de informática. Preferência: converter em vídeo tutorial após a escrita.
* `Nivel_1` (Técnico Jr): **Amigável e simples.** Você está falando com um técnico júnior; ele entende o básico, mas não assuma conhecimento prévio complexo.
* `Nivel_2` (Técnico Pleno): **Amigável e direto.** Você está falando com um técnico; evite termos confusos ou ambíguos.
* `Nivel_3` (Especialista/Sr): **Simples e direto ao ponto.** Se estão lendo este manual é porque algo sério ocorreu. Vá direto à solução, explique os "porquês" no final.
* `Nivel_0` (Cliente Final): **Didático e Visual (Leigo).** Assuma conhecimento zero. Explique cada passo visualmente ("Clique no botão azul"). **Evite jargões técnicos.** O objetivo é guiar o usuário sem frustração. Estruture o texto como um **Roteiro de Vídeo**.
* `Nivel_1` (Técnico Jr): **Procedural (Service Desk).** O técnico domina o básico do ambiente, mas precisa de um roteiro seguro. **Foco na Execução:** Use comandos prontos para copiar/colar. Explique exatamente o *que* fazer para fechar o chamado rapidamente.
* `Nivel_2` (Técnico Pleno): **Técnico e Estruturado (NOC/Infra).** Assuma conhecimento de fundamentos (Redes, OS). **Foco na Análise:** Não explique como abrir ferramentas básicas. Centre-se na configuração correta, análise de logs e impacto de mudanças. O tom deve ser de "técnico para técnico".
* `Nivel_3` (Especialista/Sr): **Engenharia e Crise.** Para Disaster Recovery, Arquitetura e Debugging Avançado. **Direto ao Ponto:** Assuma que o sistema está parado. Forneça o comando de *fix* imediato, depois a explicação arquitetural. Documente riscos, rollbacks e dependências profundas.
---
## CODIFICAÇÃO E CONTROLE (OBRIGATÓRIO)
> ⚠️ **CRÍTICO:** JAMAIS invente o código do manual. Você deve gerá-lo programaticamente para evitar duplicidade.
**Como obter o Código do Manual:**
1. **Execute o script de registro:**
```bash
python .gemini/manage_registry.py --level [0-3] --title "Nome do Manual"
```
2. **Copie o código gerado** (ex: `ITGCLI 0001/26`) da saída do comando.
3. **Cole no cabeçalho** do seu arquivo Markdown.
**Tabela de Audiências (Automático pelo Script):**
* `ITGCLI` = Nível 0 (Cliente/Leigo)
* `ITGSUP` = Nível 1 (Service Desk)
* `ITGINF` = Nível 2 (Infraestrutura)
* `ITGENG` = Nível 3 (Engenharia)
---
## Template Markdown OBRIGATÓRIO
@ -248,53 +282,67 @@ O Agente DEVE salvar o PDF na seguinte estrutura de pastas obrigatória, baseada
# MANUAL TÉCNICO - [NOME DO PROCEDIMENTO] - [SISTEMA/PLATAFORMA]
**Código:** ITITG XXX/26 | **Classificação:** RESTRITO
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
> ⚠️ **REGRA DE OURO:**
> 1. **Autor:** SEMPRE preencha como `João Pedro Toledo Gonçalves`. Você escreve em nome dele.
> 2. **Descrição:** Seja ultra-conciso (Max 5 palavras). Ex: "Criação do documento", "Revisão técnica", "Adição de prints".
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
[Explique em 1 frase simples o que este procedimento resolve.]
## 3. PRÉ-REQUISITOS
Antes de iniciar, garanta que:
* [ ] O Sistema está online.
* [ ] O usuário tem acesso administrativo.
* [ ] O software X está instalado.
> Liste o que é necessário ANTES de começar (acessos, backups, status de serviços).
* [ ] Requisito 1 (ex: Backup realizado).
* [ ] Requisito 2 (ex: Acesso root validado).
## 4. PASSO A PASSO (EXECUÇÃO)
> Divida o procedimento em etapas lógicas. Se for longo, use subtítulos.
**Etapa 1: [Nome da Ação]**
1. Acesse o menu **Configurações**.
2. Clique em **Rede**.
**Etapa 1: [Nome da Ação Inicial]**
1. Instrução clara e direta.
2. Comando ou clique visual.
> **NOTA:** Se a tela demorar para carregar, aguarde 30 segundos.
> **NOTA:** Use callouts para dicas contextuais.
**Etapa 2: [Nome da Ação]**
1. No campo "Servidor", digite: `{{ENDERECO_IP}}`
2. Clique em **Salvar**.
**Etapa 2: [Nome da Ação Seguinte]**
1. Instrução de execução.
2. Validação visual (print).
![Print da Tela de Configuração](caminho/para/imagem.png)
![Descrição do Print](assets/nome_da_imagem.png)
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
**Erro Comum:** "Falha de Conexão (Error 500)"
* **Causa:** O servidor pode estar offline.
> 🚀 **DICA DO AGENTE:** Liste 2 ou 3 problemas *reais* e frequentes que você encontrou durante a pesquisa. Não invente erros genéricos.
**Problema 1: [Descrição do Sintoma no Idioma do Usuário]**
* **Causa:** [Explicação Técnica]
* **Solução:**
1. Abra o CMD.
2. Digite `ping {{ENDERECO_IP}}`.
3. Se não responder, contate o Nível 2.
1. Ação corretiva 1.
2. Ação corretiva 2 (com comando/print se necessário).
**Problema 2: [Outro Sintoma Comum]**
* **Solução:** Comando rápido ou verificação.
## 6. DADOS TÉCNICOS
| Campo | Valor Padrão |
| :--- | :--- |
| Porta | 8080 |
| Protocolo | TCP |
> Liste portas, caminhos de log, versões ou usuários padrão que o técnico precisará no futuro.
## 7. VALIDAÇÃO FINAL
- [ ] O sistema abriu sem erros?
- [ ] O teste de conexão funcionou?
| Campo | Valor | Descrição |
| :--- | :--- | :--- |
| **Portas** | 80, 443 | Portas Web padrão |
| **Logs** | `/var/log/syslog` | Logs do sistema |
| **Conf** | `/etc/app/config.yml` | Arquivo principal |
## 7. VALIDAÇÃO FINAL (Definição de Pronto)
> O que define "Sucesso" neste procedimento? Seja específico.
- [ ] O serviço está rodando? (`systemctl status`...)
- [ ] A interface web carrega sem erros 500?
- [ ] O log não apresenta erros novos?
```

112
.gemini/batch_update.py Normal file
View File

@ -0,0 +1,112 @@
import os
import re
import sys
import subprocess
from glob import glob
# Assets
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = os.path.dirname(BASE_DIR)
MANAGE_REGISTRY_SCRIPT = os.path.join(BASE_DIR, "manage_registry.py")
CONVERT_PDF_SCRIPT = os.path.join(BASE_DIR, "convert_to_pdf.py")
def get_manual_level(filename):
"""Infer level from filename [Nível X] ..."""
match = re.search(r'\[Nível\s*(\d+)\]', filename, re.IGNORECASE)
if match:
return int(match.group(1))
# Fallback: check parent folder name
if "Nivel_0" in filename: return 0
if "Nivel_1" in filename: return 1
if "Nivel_2" in filename: return 2
if "Nivel_3" in filename: return 3
return None
def update_manual(file_path):
filename = os.path.basename(file_path)
# Skip non-manuals
if filename.lower() == "gemini.md" or "readme" in filename.lower() or "legado" in file_path.lower():
print(f"Skipping: {filename}")
return
level = get_manual_level(file_path)
if level is None:
print(f"Skipping (Unknown Level): {filename}")
return
# Extract Title (everything after [Nível X])
clean_title = re.sub(r'\[Nível\s*\d+\]', '', filename).replace('.md', '').strip(" -_")
print(f"Processing: {filename} | Level: {level} | Title: {clean_title}")
# 1. Generate New Code
try:
cmd = [sys.executable, MANAGE_REGISTRY_SCRIPT, "--level", str(level), "--title", clean_title]
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
# Extract code from stdout (looking for "SUCCESS: Generated Code: X")
code_match = re.search(r'Generated Code:\s*(ITG[A-Z]+\s+\d{4}/\d{2})', result.stdout)
if not code_match:
print(f"Failed to generate code for {filename}. Output: {result.stdout}")
return
new_code = code_match.group(1)
print(f" -> New Code: {new_code}")
except subprocess.CalledProcessError as e:
print(f"Error calling registry script: {e}")
return
# 2. Update Markdown Content
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# Regex to find existing code line or insert it
# Pattern looks for "**Código:** ITITG ... |" or similar
code_pattern = re.compile(r'(\*\*Código:\*\*).*?(\|)')
if code_pattern.search(content):
# Update existing
new_content = code_pattern.sub(f"**Código:** {new_code} |", content)
else:
# Insert after title (assuming standard format)
# This is trickier, so for now we append simple replacement logic or just manual check
# But given the request to "update", let's assume they might have old headers
# Let's simple look for the "Código:" string
new_content = re.sub(r'Código:.*?\|', f"Código: {new_code} |", content)
if new_content != content:
with open(file_path, 'w', encoding='utf-8') as f:
f.write(new_content)
print(" -> Markdown updated.")
else:
print(" -> No header change needed (or header not found).")
# Ensure we write at least once to touch the file? No.
# Force Insert if standard header missing?
# Let's try to be smart: if it's an old manual without header, we might need to prepend it
# validating against the standard template.
pass
# 3. Regenerate PDF
print(" -> Generating PDF...")
try:
subprocess.run([sys.executable, CONVERT_PDF_SCRIPT, file_path], check=True)
print(" -> PDF Done.")
except subprocess.CalledProcessError as e:
print(f" -> PDF Generation Failed: {e}")
def main():
# Find all .md files in parent dir recursively
search_path = os.path.join(PROJECT_ROOT, "**", "*.md")
files = glob(search_path, recursive=True)
for f in files:
if ".gemini" in f: continue
update_manual(f)
if __name__ == "__main__":
main()

View File

@ -1,41 +0,0 @@
import os
root_dir = r"c:\Users\joao.goncalves\Desktop\manuais zammad"
structure = {
"documentacao rede e seguranca": ["pfsense"],
"documentacao storage": ["truenas", "samba", "nfs", "iscsi"],
"documentacao bancos de dados": ["postgresql", "mysql"],
"documentacao windows": ["active directory", "dns", "firewall", "gpo"],
"documentacao linux": ["ubuntu", "debian", "alpine"],
"documentacao virtualizacao": ["proxmox"],
"documentacao conteineres": ["docker", "docker-compose", "portainer"],
"documentacao aplicativos": ["gitea", "zammad", "zabbix", "technium", "magnusbilling", "asterisk"],
"documentacao navegadores": ["google chrome", "firefox"],
"documentacao ferramentas": ["putty", "ssh"]
}
for category, subitems in structure.items():
cat_path = os.path.join(root_dir, category)
if not os.path.exists(cat_path):
os.makedirs(cat_path)
print(f"Created category: {category}")
# Create category README
with open(os.path.join(cat_path, "README.md"), "w", encoding="utf-8") as f:
f.write(f"# {category.replace('documentacao ', '').title()}\n\nManuais relacionados a {category.replace('documentacao ', '')}.\n")
for item in subitems:
# Create subdirectories for each item to keep it clean, or just keep them in the category?
# The user's list is long. Specific folders for each item is better for organization.
item_slug = item.replace(" ", "_")
item_path = os.path.join(cat_path, item_slug)
if not os.path.exists(item_path):
os.makedirs(item_path)
print(f" Created item: {item}")
with open(os.path.join(item_path, "README.md"), "w", encoding="utf-8") as f:
f.write(f"# Documentação {item.title()}\n\nLocal para manuais e procedimentos referentes ao **{item.title()}**.\n")
print("Directory structure created successfully.")

View File

@ -0,0 +1,83 @@
import json
import os
import sys
import argparse
from datetime import datetime
# Configuration
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
REGISTRY_FILE = os.path.join(BASE_DIR, "manual_registry.json")
# Audience Mapping
LEVEL_MAP = {
0: "ITGCLI", # Cliente/Leigo
1: "ITGSUP", # Service Desk/Suporte
2: "ITGINF", # Infraestrutura
3: "ITGENG" # Engenharia
}
def load_registry():
if not os.path.exists(REGISTRY_FILE):
print(f"Error: Registry file not found at {REGISTRY_FILE}")
sys.exit(1)
try:
with open(REGISTRY_FILE, 'r', encoding='utf-8') as f:
return json.load(f)
except Exception as e:
print(f"Error loading registry: {e}")
sys.exit(1)
def save_registry(data):
try:
with open(REGISTRY_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
except Exception as e:
print(f"Error saving registry: {e}")
sys.exit(1)
def generate_code(level, title, author="Agente iT Guys"):
if level not in LEVEL_MAP:
print(f"Error: Invalid credentials level {level}. Must be 0-3.")
sys.exit(1)
audience_code = LEVEL_MAP[level]
registry = load_registry()
if audience_code not in registry:
# Should not happen if JSON is initialized correctly, but safety net
registry[audience_code] = {"next_id": 1, "manuals": []}
current_id = registry[audience_code]["next_id"]
year = datetime.now().strftime("%y")
# Format: ITG[AUDIENCE] [XXXX]/[YEAR]
# Example: ITGCLI 0001/26
manual_code = f"{audience_code} {current_id:04d}/{year}"
# Record metadata
manual_entry = {
"code": manual_code,
"id": current_id,
"title": title,
"created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"author": author
}
registry[audience_code]["manuals"].append(manual_entry)
registry[audience_code]["next_id"] += 1
save_registry(registry)
print(f"SUCCESS: Generated Code: {manual_code}")
print(f"Details: {json.dumps(manual_entry, indent=2, ensure_ascii=False)}")
return manual_code
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Generate unique manual codes for iT Guys.")
parser.add_argument("--level", type=int, required=True, choices=[0, 1, 2, 3], help="Manual Level (0=Client, 1=Support, 2=Infra, 3=Eng)")
parser.add_argument("--title", type=str, required=True, help="Title of the manual")
parser.add_argument("--author", type=str, default="João Pedro Toledo Gonçalves", help="Author name")
args = parser.parse_args()
generate_code(args.level, args.title, args.author)

View File

@ -0,0 +1,225 @@
{
"ITGCLI": {
"next_id": 3,
"manuals": [
{
"code": "ITGCLI 0001/26",
"id": 1,
"title": "Como Acessar e Configurar Webmail e Celular",
"created_at": "2026-01-23 00:28:20",
"author": "Agente iT Guys"
},
{
"code": "ITGCLI 0002/26",
"id": 2,
"title": "Como Configurar Resposta Automatica de Ferias",
"created_at": "2026-01-23 00:28:23",
"author": "Agente iT Guys"
}
]
},
"ITGSUP": {
"next_id": 7,
"manuals": [
{
"code": "ITGSUP 0001/26",
"id": 1,
"title": "Diagnostico Basico - Usuario nao recebe e-mail",
"created_at": "2026-01-23 00:28:24",
"author": "Agente iT Guys"
},
{
"code": "ITGSUP 0002/26",
"id": 2,
"title": "Procedimento de Criacao e Bloqueio de Usuarios",
"created_at": "2026-01-23 00:28:25",
"author": "Agente iT Guys"
},
{
"code": "ITGSUP 0003/26",
"id": 3,
"title": "N1_00_Visao_Geral_e_Escopo",
"created_at": "2026-01-23 00:28:38",
"author": "Agente iT Guys"
},
{
"code": "ITGSUP 0004/26",
"id": 4,
"title": "N1_01_Verificacao_Basica_VM",
"created_at": "2026-01-23 00:28:39",
"author": "Agente iT Guys"
},
{
"code": "ITGSUP 0005/26",
"id": 5,
"title": "N1_02_Operacoes_de_Energia",
"created_at": "2026-01-23 00:28:40",
"author": "Agente iT Guys"
},
{
"code": "ITGSUP 0006/26",
"id": 6,
"title": "N1_03_Monitoramento_Basico",
"created_at": "2026-01-23 00:28:41",
"author": "Agente iT Guys"
}
]
},
"ITGINF": {
"next_id": 9,
"manuals": [
{
"code": "ITGINF 0001/26",
"id": 1,
"title": "Gerenciamento de Cotas e Arquivamento",
"created_at": "2026-01-23 00:28:26",
"author": "Agente iT Guys"
},
{
"code": "ITGINF 0002/26",
"id": 2,
"title": "Gerenciamento de Quarentena Movel (ActiveSync)",
"created_at": "2026-01-23 00:28:27",
"author": "Agente iT Guys"
},
{
"code": "ITGINF 0003/26",
"id": 3,
"title": "Gestao de Permissoes (Full Access e Send As)",
"created_at": "2026-01-23 00:28:27",
"author": "Agente iT Guys"
},
{
"code": "ITGINF 0004/26",
"id": 4,
"title": "Solucao de Problemas de Lista de Enderecos (OAB)",
"created_at": "2026-01-23 00:28:28",
"author": "Agente iT Guys"
},
{
"code": "ITGINF 0005/26",
"id": 5,
"title": "N2_01_Gestao_de_Recursos",
"created_at": "2026-01-23 00:28:42",
"author": "Agente iT Guys"
},
{
"code": "ITGINF 0006/26",
"id": 6,
"title": "N2_02_Networking_e_Storage",
"created_at": "2026-01-23 00:28:43",
"author": "Agente iT Guys"
},
{
"code": "ITGINF 0007/26",
"id": 7,
"title": "N2_03_Manutencao_e_Lifecycle",
"created_at": "2026-01-23 00:28:44",
"author": "Agente iT Guys"
},
{
"code": "ITGINF 0008/26",
"id": 8,
"title": "N2_04_Troubleshooting",
"created_at": "2026-01-23 00:28:45",
"author": "Agente iT Guys"
}
]
},
"ITGENG": {
"next_id": 14,
"manuals": [
{
"code": "ITGENG 0001/26",
"id": 1,
"title": "Acesso ao Servidor Windows Core e PowerShell",
"created_at": "2026-01-23 00:28:29",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0002/26",
"id": 2,
"title": "Arquitetura Tecnica e Mapeamento de Servidores",
"created_at": "2026-01-23 00:28:30",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0003/26",
"id": 3,
"title": "Auditoria Administrativa e Logs de Seguranca",
"created_at": "2026-01-23 00:28:31",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0004/26",
"id": 4,
"title": "Checklist de Manutencao Diaria e Semanal",
"created_at": "2026-01-23 00:28:32",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0005/26",
"id": 5,
"title": "Disaster Recovery e Soft Restore",
"created_at": "2026-01-23 00:28:33",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0006/26",
"id": 6,
"title": "Gestao de Conectores e Roteamento de E-mail",
"created_at": "2026-01-23 00:28:34",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0007/26",
"id": 7,
"title": "Referencia de Operacoes via PowerShell",
"created_at": "2026-01-23 00:28:35",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0008/26",
"id": 8,
"title": "Relatorios Avancados e Manutencao",
"created_at": "2026-01-23 00:28:36",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0009/26",
"id": 9,
"title": "Renovacao de Certificado SSL e Integracao com IIS",
"created_at": "2026-01-23 00:28:37",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0010/26",
"id": 10,
"title": "N3_01_CLI_Troubleshooting",
"created_at": "2026-01-23 00:28:46",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0011/26",
"id": 11,
"title": "N3_02_Networking_Avancado",
"created_at": "2026-01-23 00:28:47",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0012/26",
"id": 12,
"title": "N3_03_Storage_Deep_Dive",
"created_at": "2026-01-23 00:28:48",
"author": "Agente iT Guys"
},
{
"code": "ITGENG 0013/26",
"id": 13,
"title": "N3_04_DR_Arquitetura",
"created_at": "2026-01-23 00:28:49",
"author": "Agente iT Guys"
}
]
}
}

82
PLAN_DE_MANUAIS.md Normal file
View File

@ -0,0 +1,82 @@
# Plano de Manuais Técnicos Recomendados
Este documento lista os manuais essenciais recomendados para compor a base de conhecimento da iT Guys, organizados por tecnologia. A seleção baseia-se em melhores práticas de mercado e necessidades operacionais de MSPs.
## 1. Rede e Segurança (pfSense)
* **[Nível 1] Diagnóstico de Conectividade e Logs:** Verificação de status de interfaces, gateways e análise de logs do system/firewall.
* **[Nível 2] Gestão de Regras de Firewall e Aliases:** Boas práticas de criação de regras "default deny", uso de aliases para organização e documentação de liberações.
* **[Nível 2] Configuração e Troubleshooting de VPN (OpenVPN/IPsec):** Procedimentos para conectar site-to-site e client-to-site, incluindo diagnóstico de túneis caídos.
* **[Nível 3] Backup e Restauração de Configurações:** Procedimento de backup manual e automático (AutoConfigBackup), e restauração em caso de desastre.
* **[Nível 3] Atualização e Hardening do pfSense:** Checklist de segurança (desativar admin externo, SSH seguro) e procedimento seguro de update de firmware.
## 2. Storage e Armazenamento (TrueNAS Scale / Samba / iSCSI)
* **[Nível 1] Monitoramento de Saúde de Discos e Alertas:** Interpretação de alertas SMART, verificação de temperatura e status básico do pool ZFS.
* **[Nível 2] Gestão de Users, Groups e ACLs (SMB/NFS):** Criação de compartilhamentos, mapeamento de permissões Windows (ACLs) e exportações NFS.
* **[Nível 2] Configuração de Snapshots e Replicação:** Agendamento de snapshots automáticos e tarefas de replicação para backup offsite.
* **[Nível 3] Manutenção de ZFS (Scrub e Substituição de Disco):** Procedimento crítico de substituição de disco com falha (resilvering) e agendamento de Scrubs.
* **[Nível 3] Configuração de iSCSI Target para Virtualização:** Criação de zvols, portals e targets para uso em VMware/Proxmox.
## 3. Bancos de Dados (PostgreSQL / MySQL)
* **[Nível 1] Backup e Restore Básico (dump/restore):** Uso de `mysqldump` e `pg_dump` para backups lógicos e restauração.
* **[Nível 2] Manutenção Preventiva e Limpeza:**
* **Postgres:** Explicação e agendamento do `VACUUM` e `ANALYZE`.
* **MySQL:** Uso do `mysqlcheck` e `OPTIMIZE TABLE`.
* **[Nível 2] Gestão de Usuários e Permissões:** Criação de usuários com privilégios mínimos (GRANT/REVOKE).
* **[Nível 3] Troubleshooting de Performance e Slow Queries:** Ativação e análise de logs de queries lentas (`slow query log`).
## 4. Windows Server (AD / DNS / GPO / Firewall)
* **[Nível 1] Criação e Bloqueio de Usuários (Padrão):** Procedimento padrão de admissão e demissão (onboarding/offboarding).
* **[Nível 2] Manutenção de DNS e DHCP:** Limpeza de registros obsoletos (Scavenging), verificação de Forwarders e Root Hints.
* **[Nível 3] Diagnóstico de Replicação do AD (DCDIAG):** Uso de ferramentas (`dcdiag`, `repadmin`) para garantir saúde do domínio e replicação entre DCs.
* **[Nível 3] Gestão Centralizada via GPO:**
* Mapeamento de Drives e Impressoras.
* Políticas de Senha e Bloqueio de Tela.
* Deploy de Software (.msi).
* **[Nível 3] Disaster Recovery do Active Directory:** Backup do System State e restauração autoritativa vs não-autoritativa.
## 5. Linux (Ubuntu / Debian / Alpine)
* **[Nível 1] Comandos Essenciais de Diagnóstico:** Uso de `top`, `htop`, `df`, `free`, `ip addr` para check rápido de saúde.
* **[Nível 2] Gerenciamento de Pacotes e Updates:** Procedimentos seguros de `apt update/upgrade` e limpeza (`autoremove`).
* **[Nível 2] Configuração de Firewall (UFW/IPTables):** Bloqueio padrão e liberação de portas específicas.
* **[Nível 3] Hardening de Servidor Linux:** Configuração de SSH seguro (chaves, porta não-padrão, sem root), Fail2Ban e usuários sudo.
* **[Nível 3] Análise de Logs (Journalctl/Syslog):** Como buscar erros críticos em `/var/log` e `journalctl`.
## 6. Virtualização (Proxmox VE)
* **[Nível 1] Gestão Básica de VMs e Containers (LXC):** Ligar, desligar, reiniciar e acessar console (VNC/Spice).
* **[Nível 2] Gestão de Backups e Snapshots (PBS):** Configuração de rotinas de backup para Proxmox Backup Server ou armazenamento local.
* **[Nível 3] Gestão de Cluster e High Availability (HA):** Adicionar nós ao cluster, configurar fencing e grupos de HA.
* **[Nível 3] Troubleshooting de Rede (Linux Bridge/Bonding):** Diagnóstico de conectividade em interfaces virtuais e vlans.
## 7. Containers (Docker / Docker-Compose / Portainer)
* **[Nível 1] Deploy e Update de Stacks (Portainer):** Como atualizar um container recriando-o com nova imagem (pull).
* **[Nível 2] Diagnóstico de Containers:** Verificação de logs (`docker logs`), inspeção (`docker inspect`) e monitoramento de recursos (`docker stats`).
* **[Nível 2] Manutenção de Disco (Docker Prune):** Limpeza de imagens, volumes e builders não utilizados para liberar espaço.
* **[Nível 3] Backup de Volumes e Dados Persistentes:** Estratégias para backup dos diretórios mapeados nos volumes.
## 8. Aplicativos e VoIP (Gitea / Zabbix / Asterisk / Navegadores)
* **Gitea:**
* [Nível 2] Backup e Restore Completo (Database + Repositórios).
* [Nível 3] Procedimento de Upgrade de Versão (Docker).
* **Zabbix:**
* [Nível 1] Adição de Hosts e Templates.
* [Nível 2] Criação de Triggers e Ações de Alerta.
* [Nível 3] Otimização de Database e Housekeeping.
* **VoIP (Asterisk/Issabel):**
* [Nível 1] Diagnóstico de Ramais Offline (Sip Show Peers).
* [Nível 2] Troubleshooting de Áudio Unidirecional (NAT/RTP).
* [Nível 2] Análise de Logs de Chamadas (CDR/Verbosity).
* **Navegadores (Chrome/Firefox):**
* [Nível 2] Gestão via GPO (ADMX): Definir homepage, extensões obrigatórias e bloqueios.
## 9. Ferramentas (SSH / Putty)
* **[Nível 0] Acesso Remoto Seguro:** Guia de como usar chaves SSH (PPK/PEM) no Putty e Terminal.
* **[Nível 1] Tunelamento SSH (Port Forwarding):** Como acessar serviços internos de forma segura via túnel.

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - ACESSO E CONFIGURAÇÃO DE WEBMAIL E CELULAR (EXCHANGE)
**Código:** ITITG 001/26 | **Classificação:** PÚBLICO
**Código:** ITGCLI 0001/26 | **Classificação:** PÚBLICO
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - CONFIGURAÇÃO DE RESPOSTA AUTOMÁTICA DE FÉRIAS (WEBMAIL)
**Código:** ITITG EXCH-002/26 | **Classificação:** PÚBLICO
**Código:** ITGCLI 0002/26 | **Classificação:** PÚBLICO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** 22/01/2026
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - DIAGNÓSTICO DE RECEBIMENTO - EXCHANGE LOCAL
**Código:** ITITG 042/26 | **Classificação:** INTERNO
**Código:** ITGSUP 0001/26 | **Classificação:** INTERNO
**Responsável:** Service Desk | **Data:** 22/01/2026
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - CRIAÇÃO E BLOQUEIO DE USUÁRIOS - EXCHANGE/AD
**Código:** ITITG 005/26 | **Classificação:** RESTRITO
**Código:** ITGSUP 0002/26 | **Classificação:** RESTRITO
**Responsável:** Agente iT Guys | **Data:** 22/01/2026
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - GERENCIAMENTO DE COTAS E ARQUIVAMENTO (EXCHANGE)
**Código:** ITITG 005/26 | **Classificação:** RESTRITO
**Código:** ITGINF 0001/26 | **Classificação:** RESTRITO
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - GERENCIAMENTO DE QUARENTENA MÓVEL (ACTIVESYNC) - EXCHANGE
**Código:** ITITG 035/26 | **Classificação:** RESTRITO
**Código:** ITGINF 0002/26 | **Classificação:** RESTRITO
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - GESTÃO DE PERMISSÕES (FULL ACCESS E SEND AS) - EXCHANGE
**Código:** ITITG 037/26 | **Classificação:** RESTRITO
**Código:** ITGINF 0003/26 | **Classificação:** RESTRITO
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - SOLUÇÃO DE PROBLEMAS DE LISTA DE ENDEREÇOS (OAB) - EXCHANGE
**Código:** ITITG 036/26 | **Classificação:** RESTRITO
**Código:** ITGINF 0004/26 | **Classificação:** RESTRITO
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO

View File

@ -1,6 +1,6 @@
# MANUAL TÉCNICO - ACESSO AO SERVIDOR WINDOWS CORE E POWERSHELL
**Código:** ITITG 038/26 | **Classificação:** RESTRITO
**Código:** ITGENG 0001/26 | **Classificação:** RESTRITO
**Responsável:** Engenharia de Sistemas | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO

Binary file not shown.

Binary file not shown.