362 lines
14 KiB
TypeScript
362 lines
14 KiB
TypeScript
import { Document, Packer, Paragraph, TextRun, HeadingLevel, Table, TableRow, TableCell, WidthType, BorderStyle, AlignmentType } from "docx";
|
|
import * as fs from "fs";
|
|
|
|
async function generateArchitectureDoc() {
|
|
const doc = new Document({
|
|
sections: [
|
|
{
|
|
properties: {},
|
|
children: [
|
|
new Paragraph({
|
|
text: "ARCÁDIA SUITE",
|
|
heading: HeadingLevel.TITLE,
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({
|
|
text: "Documentação de Arquitetura",
|
|
heading: HeadingLevel.HEADING_1,
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
new Paragraph({
|
|
text: `Gerado em: ${new Date().toLocaleDateString("pt-BR")}`,
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "1. Visão Geral da Plataforma",
|
|
heading: HeadingLevel.HEADING_1,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({
|
|
text: "Arcádia Suite é uma plataforma de inteligência de negócios projetada como um ambiente desktop estilo navegador. Oferece um workspace integrado para gerenciamento de aplicações empresariais, assistência por IA, e integrações com sistemas ERP.",
|
|
}),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "2. Arquitetura de Alto Nível",
|
|
heading: HeadingLevel.HEADING_1,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Table({
|
|
width: { size: 100, type: WidthType.PERCENTAGE },
|
|
rows: [
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({
|
|
children: [new Paragraph({ text: "Frontend (React/Vite)", alignment: AlignmentType.CENTER })],
|
|
shading: { fill: "1E40AF" },
|
|
}),
|
|
new TableCell({
|
|
children: [new Paragraph({ text: "Backend (Express/Node)", alignment: AlignmentType.CENTER })],
|
|
shading: { fill: "1E40AF" },
|
|
}),
|
|
new TableCell({
|
|
children: [new Paragraph({ text: "Dados & Integrações", alignment: AlignmentType.CENTER })],
|
|
shading: { fill: "1E40AF" },
|
|
}),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({
|
|
children: [
|
|
new Paragraph({ text: "• Browser Shell UI" }),
|
|
new Paragraph({ text: "• Abas / Omnibox" }),
|
|
new Paragraph({ text: "• Workspace Router" }),
|
|
new Paragraph({ text: "• Páginas (wouter)" }),
|
|
new Paragraph({ text: "• React Query" }),
|
|
new Paragraph({ text: "• shadcn/ui components" }),
|
|
],
|
|
}),
|
|
new TableCell({
|
|
children: [
|
|
new Paragraph({ text: "• REST API Gateway" }),
|
|
new Paragraph({ text: "• /api/auth" }),
|
|
new Paragraph({ text: "• /api/agent" }),
|
|
new Paragraph({ text: "• /api/compass" }),
|
|
new Paragraph({ text: "• /api/insights" }),
|
|
new Paragraph({ text: "• /api/manus" }),
|
|
new Paragraph({ text: "• Socket.IO (chat)" }),
|
|
],
|
|
}),
|
|
new TableCell({
|
|
children: [
|
|
new Paragraph({ text: "• PostgreSQL (Drizzle ORM)" }),
|
|
new Paragraph({ text: "• users, applications" }),
|
|
new Paragraph({ text: "• RBAC, tenants" }),
|
|
new Paragraph({ text: "• OpenAI (Agent/Manus)" }),
|
|
new Paragraph({ text: "• ERP (Arcadia Plus, TOTVS, SAP)" }),
|
|
new Paragraph({ text: "• WhatsApp Cloud" }),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "3. Módulos Desenvolvidos",
|
|
heading: HeadingLevel.HEADING_1,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "3.1 Agent (Assistente IA)",
|
|
heading: HeadingLevel.HEADING_2,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "Funcionalidades: ", bold: true }),
|
|
new TextRun({ text: "Chat com GPT, Histórico de conversas, Base de conhecimento, Geração de imagens" }),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "3.2 Process Compass (Consultoria)",
|
|
heading: HeadingLevel.HEADING_2,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "Funcionalidades: ", bold: true }),
|
|
new TextRun({ text: "Canvas BMC com perguntas diagnósticas, Análise SWOT, Ciclos PDCA, CRM Pipeline, Mapeamento de Processos, Gestão de Tarefas, Multi-tenancy" }),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "3.3 Insights (BI Analytics)",
|
|
heading: HeadingLevel.HEADING_2,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "Funcionalidades: ", bold: true }),
|
|
new TextRun({ text: "Data Sources, Datasets, Charts, Dashboards, Backups automáticos, File Upload (CSV, JSON, SQL)" }),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "3.4 Manus (Agente Autônomo)",
|
|
heading: HeadingLevel.HEADING_2,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "Funcionalidades: ", bold: true }),
|
|
new TextRun({ text: "Loop Think-Act-Observe, Ferramentas (ERP Query, Web Search, Relatórios), Execução autônoma de tarefas" }),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "3.5 WhatsApp (Mensageria)",
|
|
heading: HeadingLevel.HEADING_2,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "Funcionalidades: ", bold: true }),
|
|
new TextRun({ text: "Multi-sessão, Contatos, Mensagens, Autenticação QR Code, Status em tempo real" }),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "3.6 Staging (Migração de Dados)",
|
|
heading: HeadingLevel.HEADING_2,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "Funcionalidades: ", bold: true }),
|
|
new TextRun({ text: "SQL Parser, MongoDB Import, CSV/JSON, Mapeamento para ERP, Migration Jobs" }),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "4. Estrutura do Banco de Dados",
|
|
heading: HeadingLevel.HEADING_1,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Table({
|
|
width: { size: 100, type: WidthType.PERCENTAGE },
|
|
rows: [
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({
|
|
children: [new Paragraph({ text: "Área", alignment: AlignmentType.CENTER })],
|
|
shading: { fill: "374151" },
|
|
}),
|
|
new TableCell({
|
|
children: [new Paragraph({ text: "Tabelas", alignment: AlignmentType.CENTER })],
|
|
shading: { fill: "374151" },
|
|
}),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Core (Usuários/Apps)" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "users, applications, user_applications" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Agent (Chat IA)" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "conversations, messages, knowledge_base, erp_connections" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Process Compass" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "tenants, tenant_users, pc_clients, pc_projects, pc_canvas_blocks, pc_canvas_questions, pc_swot_analyses, pc_processes, pc_pdca_cycles, pc_crm_*, pc_tasks" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Business Intelligence" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "data_sources, bi_datasets, bi_charts, bi_dashboards, backup_jobs, backup_artifacts" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Manus Agent" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "manus_runs, manus_steps" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "WhatsApp" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "whatsapp_sessions, whatsapp_contacts, whatsapp_messages" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Staging/Migration" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "staged_tables, staging_mappings, migration_jobs" })] }),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "5. Stack Tecnológico",
|
|
heading: HeadingLevel.HEADING_1,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Table({
|
|
width: { size: 100, type: WidthType.PERCENTAGE },
|
|
rows: [
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({
|
|
children: [new Paragraph({ text: "Camada", alignment: AlignmentType.CENTER })],
|
|
shading: { fill: "059669" },
|
|
}),
|
|
new TableCell({
|
|
children: [new Paragraph({ text: "Tecnologias", alignment: AlignmentType.CENTER })],
|
|
shading: { fill: "059669" },
|
|
}),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Frontend" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "React 18, TypeScript, Vite, Wouter, React Query, Tailwind CSS, shadcn/ui, Radix UI, Framer Motion" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Backend" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "Node.js 20+, Express, TypeScript (ESM), Socket.IO, Passport.js, Zod" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Banco de Dados" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "PostgreSQL, Drizzle ORM, connect-pg-simple" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "IA/LLM" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "OpenAI API (GPT-4o, DALL-E)" })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ text: "Integrações" })] }),
|
|
new TableCell({ children: [new Paragraph({ text: "ERPs (Arcadia Plus, TOTVS, SAP), WhatsApp (Baileys)" })] }),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "6. Fluxo de Integrações",
|
|
heading: HeadingLevel.HEADING_1,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "[Frontend UI] ⟷ [Express API] ⟷ [PostgreSQL]", font: "Consolas" }),
|
|
],
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: " │", font: "Consolas" }),
|
|
],
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: " ┌──────┼──────┐", font: "Consolas" }),
|
|
],
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: " ▼ ▼ ▼", font: "Consolas" }),
|
|
],
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({ text: "[OpenAI] [ERP] [WhatsApp]", font: "Consolas" }),
|
|
],
|
|
alignment: AlignmentType.CENTER,
|
|
}),
|
|
new Paragraph({ text: "" }),
|
|
new Paragraph({ text: "" }),
|
|
|
|
new Paragraph({
|
|
text: "Documento gerado automaticamente pelo Arcádia Suite",
|
|
alignment: AlignmentType.CENTER,
|
|
children: [
|
|
new TextRun({ text: "Documento gerado automaticamente pelo Arcádia Suite", italics: true, size: 20 }),
|
|
],
|
|
}),
|
|
],
|
|
},
|
|
],
|
|
});
|
|
|
|
const buffer = await Packer.toBuffer(doc);
|
|
fs.writeFileSync("Arcadia_Suite_Arquitetura.docx", buffer);
|
|
console.log("Documento gerado: Arcadia_Suite_Arquitetura.docx");
|
|
}
|
|
|
|
generateArchitectureDoc().catch(console.error);
|