Manual do Usuário

Guia completo para usar o SmartProj

1. Introdução

Bem-vindo ao SmartProj! Este é um sistema completo de gerenciamento de projetos que permite organizar tarefas, equipes, recursos financeiros e muito mais.

O SmartProj é um sistema SaaS (Software as a Service), onde cada empresa tem seus dados isolados e seguros.

2. Primeiros Passos

2.1. Configurando seu Perfil

  1. Acesse Configurações no menu do avatar (canto inferior esquerdo)
  2. Preencha seu nome completo
  3. Faça upload de uma foto de perfil (opcional)
  4. Adicione informações de contato se desejar

2.2. Configurando sua Empresa

  1. Em Configurações > Empresa
  2. Informe o nome da sua empresa
  3. Adicione endereço e telefone (opcional)
  4. Faça upload do logo da empresa (opcional)
Importante: O nome da empresa é necessário para cancelar a conta no futuro.

2.3. Entendendo o Dashboard

O Dashboard é sua página inicial após fazer login. Ele oferece uma visão geral completa de suas atividades:

  • Resumo de Projetos: Estatísticas de projetos ativos, concluídos e pausados
  • Resumo Financeiro: Totais de orçamento, despesas e diferença
  • Taxa de Conclusão: Gráfico de pizza mostrando o percentual de tarefas concluídas vs. em andamento
  • Produtividade: Gráfico de linha mostrando:
    • Tarefas criadas ao longo do tempo
    • Tarefas concluídas ao longo do tempo
    • Tarefas atrasadas (vencidas e não concluídas)
  • Tarefas Recentes: Lista das suas últimas tarefas com status coloridos (herdam cores das colunas Kanban)
Dica: Use o Dashboard diariamente para acompanhar o progresso geral e identificar rapidamente tarefas que precisam de atenção.

Layout Compacto

Os cards do Dashboard foram redesenhados para serem mais compactos, permitindo visualizar mais informações na mesma tela sem perder a clareza:

  • Cards de estatísticas menores, com ícones e números reduzidos
  • Menor espaçamento entre os cards e gráficos
  • Listas de projetos e tarefas recentes mais densas

Exemplo Visual do Dashboard:

Projetos

15

Tarefas

89

Concluídas

54

Equipes

8

Taxa de Conclusão

67%

54 de 89 tarefas concluídas

Tarefas Recentes

Em Progresso Implementar dashboard
Concluída Revisar código backend
A Fazer Testar integração API

3. Centros de Custo

Os Centros de Custo ajudam a organizar projetos por departamento, área ou categoria.

3.1. Criar Centro de Custo

  1. Acesse Centros de Custo no menu principal
  2. Clique em "Novo Centro de Custo"
  3. Preencha o nome (obrigatório)
  4. Adicione um código identificador (opcional)
  5. Adicione uma descrição (opcional)
  6. Clique em "Salvar"

3.2. Usar Centro de Custo em Projetos

Ao criar ou editar um projeto, você pode associá-lo a um centro de custo. Isso facilita a organização e relatórios financeiros.

4. Equipes

As Equipes permitem agrupar usuários para facilitar a colaboração em projetos.

4.1. Criar Equipe

  1. Acesse Equipes no menu principal
  2. Clique em "Nova Equipe"
  3. Informe o nome da equipe
  4. Adicione uma descrição (opcional)
  5. Clique em "Salvar"

4.2. Adicionar Membros à Equipe

  1. Abra a equipe desejada
  2. Na seção "Membros", clique em "Adicionar Membro"
  3. Selecione o usuário da lista
  4. Confirme a adição

5. Projetos

Os Projetos são o coração do SmartProj. Eles organizam tarefas, equipes e recursos financeiros.

5.1. Criar Projeto

  1. Acesse Projetos no menu principal
  2. Clique em "Novo Projeto"
  3. Preencha:
    • Nome: Nome do projeto (obrigatório)
    • Descrição: Detalhes do projeto
    • Status: Rascunho, Ativo, Pausado, Concluído ou Cancelado
    • Data Início/Fim: Período do projeto
    • Cor: Cor de identificação
    • Centro de Custo: Associação opcional
  4. Clique em "Salvar"
Ao criar um projeto, 4 colunas Kanban são criadas automaticamente: A Fazer, Em Progresso, Revisão, Concluído

5.2. Visualizações do Projeto

Cada projeto possui 5 visualizações diferentes:

  • Detalhes: Visão geral do projeto com:
    • Card compacto com informações principais (nome, descrição, datas, status)
    • Resumo financeiro com orçamento, despesas e diferença
    • Gráfico de produtividade mostrando tarefas criadas e concluídas ao longo do tempo
    • Lista de tarefas recentes com status colorido (herdam cores das colunas Kanban)
  • Kanban: Visualização em colunas, ideal para acompanhar o fluxo de trabalho com drag-and-drop
  • Lista: Visualização em tabela com status coloridos (herdam cores das colunas Kanban), fácil de filtrar e ordenar
  • Gantt: Visualização de cronograma com barras de tempo, linha "Hoje" centralizada e navegação por semana/mês/ano. A coluna de tarefas exibe os responsáveis atribuídos
  • Calendário: Visualização mensal com tarefas por data de vencimento

Exemplo Visual do Gantt:

Gráfico de Gantt

Tarefa
Seg 18
Ter 19
Qua 20 (Hoje)
Qui 21
Sex 22
Sáb 23
Dom 24
Implementar autenticação
3 dias
Revisar código backend
2 dias
Criar testes unitários
2 dias
Deploy em produção
1 dia
A linha vertical azul representa "Hoje". As cores das barras herdam as cores das colunas do Kanban.

5.3. Gerenciar Membros do Projeto

  1. Abra o projeto desejado
  2. Na aba "Membros", clique em "Adicionar Membro"
  3. Selecione o usuário
  4. Os membros podem visualizar e editar tarefas do projeto

5.4. Colunas Kanban

Você pode personalizar as colunas Kanban do projeto:

  • Criar: Adicione novas colunas conforme necessário
  • Editar: Renomeie ou reordene as colunas
  • Excluir: Remova colunas não utilizadas (as tarefas serão movidas)

5.5. Arquivar e Reativar Projetos

O SmartProj permite arquivar projetos que não estão mais ativos no dia a dia, sem alterar o status do projeto. Projetos arquivados somem da lista principal, mas podem ser consultados e reativados a qualquer momento.

  1. Na tela Projetos, clique no ícone de caixa/arquivar no card do projeto
  2. O projeto será movido para a tela Arquivados (menu lateral)
  3. Para reativar, acesse Arquivados e clique em Restaurar
  4. Na tela de arquivados também é possível excluir permanentemente o projeto
Importante: arquivar um projeto é diferente de concluí-lo ou cancelá-lo. O status do projeto permanece inalterado, e o projeto pode ser restaurado quando necessário.

Exemplo Visual do Kanban:

A Fazer

Sistema de login com JWT

Alta 📅 25/11
Média

Em Progresso

Gráficos e estatísticas

Urgente
JD

Revisão

Alta 📅 20/11

Concluído

Média ✓ Concluída
Baixa ✓ Concluída

6. Tarefas

As Tarefas são as unidades de trabalho dentro dos projetos.

6.1. Criar Tarefa

  1. Dentro de um projeto, clique em "Nova Tarefa"
  2. Preencha:
    • Título: Nome da tarefa (obrigatório)
    • Descrição: Detalhes da tarefa
    • Prioridade: Baixa, Média, Alta ou Urgente
    • Data de Vencimento: Quando a tarefa deve ser concluída
    • Orçamento: Valor estimado (opcional)
    • Coluna Kanban: Em qual coluna a tarefa inicia (o status da tarefa é definido automaticamente pela coluna)
  3. Clique em "Salvar"

6.2. Atribuir Tarefas

Você pode atribuir uma tarefa a um ou mais usuários:

  1. Abra a tarefa
  2. Na seção "Atribuídos", clique em "Atribuir"
  3. Selecione os usuários
  4. Os usuários atribuídos receberão notificações

6.3. Subtarefas

Quebre tarefas grandes em subtarefas menores:

  1. Abra a tarefa
  2. Na seção "Subtarefas", clique em "Adicionar Subtarefa"
  3. Informe o título da subtarefa
  4. Marque como concluída quando finalizar

6.4. Comentários

Comunique-se com a equipe através de comentários nas tarefas:

  1. Abra a tarefa
  2. Role até a seção "Comentários"
  3. Digite seu comentário
  4. Clique em "Enviar"

6.5. Anexos

Anexe arquivos às tarefas:

  1. Abra a tarefa
  2. Na seção "Anexos", clique em "Adicionar Anexo"
  3. Selecione o arquivo
  4. O arquivo será salvo e disponibilizado para download

6.6. Lembretes

Configure lembretes para não esquecer tarefas importantes:

  1. Abra a tarefa
  2. Na seção "Lembretes", clique em "Adicionar Lembrete"
  3. Selecione data e hora
  4. Você receberá notificação no navegador e por email

6.7. Mover Tarefas no Kanban

Arraste e solte tarefas entre colunas no Kanban para atualizar o status visualmente.

Automático: ao mover uma tarefa para outra coluna Kanban, o status interno da tarefa é sincronizado automaticamente (ex: "Em Progresso", "Concluído"). Não é mais necessário editar o status manualmente.

6.8. Gráficos e Estatísticas da Tarefa

Ao abrir os detalhes de uma tarefa, você terá acesso a gráficos e estatísticas úteis:

  • Progresso da Checklist: Gráfico de pizza mostrando o percentual de subtarefas concluídas vs. pendentes
  • Histórico de Atividades: Gráfico de linha mostrando a quantidade de atividades (comentários, edições, mudanças de status) ao longo do tempo
    • Você pode filtrar por período: últimos 7, 15, 30 ou 90 dias
    • Útil para identificar tarefas com muita ou pouca atividade
Dica: Todos os gráficos são renderizados em alta definição para melhor visualização e clareza dos dados.

Exemplo Visual do Modal de Tarefa:

Implementar autenticação

Sistema Web

Progresso da Checklist

75%

3 de 4 itens concluídos

Atividades

Principais Abas do Modal de Tarefa:

  • Informações: Dados gerais, gráficos de progresso e atividades
  • Itens: Checklist de subtarefas (criar, marcar como concluída)
  • Arquivos: Upload e gerenciamento de anexos
  • Financeiro: Orçamentos e despesas da tarefa
  • Lembretes: Notificações agendadas
  • Comentários: Histórico de discussões da equipe
  • Log de Auditoria: Histórico completo de alterações

7. Financeiro

O módulo Financeiro permite controlar orçamentos e despesas por tarefa e projeto.

7.1. Adicionar Entrada Financeira

  1. Abra uma tarefa
  2. Na seção "Financeiro", clique em "Adicionar Entrada"
  3. Selecione o tipo:
    • Orçamento: Valor planejado
    • Despesa: Valor gasto
  4. Informe o valor e descrição
  5. Selecione a data
  6. Clique em "Salvar"

7.2. Resumo Financeiro

Visualize resumos financeiros em:

  • Por Tarefa: Na página de detalhes da tarefa
  • Por Projeto: Na página de detalhes do projeto
  • Relatórios: Na seção de Relatórios

8. Relatórios

Os Relatórios fornecem insights detalhados sobre projetos, tarefas e recursos financeiros, com visualizações gráficas avançadas e opções de exportação.

8.1. Visão Geral dos Relatórios

A tela de relatórios oferece uma análise completa do desempenho de projetos e tarefas, incluindo:

  • Resumo Financeiro: Totais de orçamento, despesas e diferença consolidados
  • Tarefas por Status: Gráfico de pizza mostrando a distribuição de tarefas por status do Kanban
  • Tarefas por Prioridade: Gráfico de barras com distribuição por nível de prioridade (Baixa, Média, Alta, Urgente)
  • Produtividade: Gráfico de linha mostrando tarefas criadas, concluídas e atrasadas nos últimos 30 dias
  • Tabela Detalhada: Lista completa de tarefas com informações financeiras e SLA

8.2. Painel de Filtros

Use o painel de filtros para refinar os relatórios conforme suas necessidades:

  • Projeto: Selecione um projeto específico ou visualize todos os projetos
  • Status: Filtre por status das tarefas (Pendente, Em Andamento, Concluída, etc.)
  • Prioridade: Filtre por prioridade (Baixa, Média, Alta, Urgente)
  • Período: Defina data inicial e final para análise

Após ajustar os filtros, clique em "Aplicar Filtros" para atualizar todos os gráficos e a tabela.

8.3. Tabela de Tarefas Detalhadas

A tabela de tarefas oferece uma visão completa de cada tarefa:

  • Título: Nome da tarefa
  • Projeto: Projeto associado
  • Status: Status atual com cor da coluna Kanban
  • Prioridade: Nível de prioridade com badge colorido
  • Prazo: Data de vencimento da tarefa
  • SLA: Status do prazo (Em Dia, Vence Hoje, Atrasada, Concluída)
  • Orçamento: Valor orçado para a tarefa
  • Despesas: Valor total de despesas lançadas
  • Diferença: Diferença entre orçamento e despesas (positivo = economia, negativo = estouro)
  • Criada em: Data de criação da tarefa

8.4. Exportar Relatórios

Você pode exportar os relatórios em dois formatos:

8.4.1. Exportar CSV

Clique em "Exportar CSV" para baixar uma planilha com todas as tarefas filtradas. O arquivo CSV pode ser aberto no Excel, Google Sheets ou qualquer software de planilhas.

8.4.2. Exportar PDF

Clique em "Exportar PDF" para gerar um relatório profissional em PDF contendo:

  • Cabeçalho Personalizado: Logo e nome da sua empresa (configurado em Configurações > Empresa)
  • Linha de Separação: Cor da marca da empresa aplicada no cabeçalho
  • Data de Geração: Data e hora da geração do relatório
  • Gráfico de Produtividade: Visualização em alta resolução do gráfico de produtividade
  • Tabela Completa: Todas as tarefas com suas informações financeiras e status SLA coloridos
  • Rodapé: Informações da empresa e link para o SmartProj
Dica: Configure o logo e a cor da marca da sua empresa em Configurações > Empresa para personalizar os relatórios em PDF.

8.5. Cores e Indicadores

Os relatórios usam cores consistentes para facilitar a visualização:

  • Status SLA:
    • Em Dia - Verde: Tarefa dentro do prazo
    • Vence Hoje - Amarelo: Tarefa vence hoje
    • Atrasada - Vermelho: Tarefa vencida e não concluída
    • Concluída - Azul: Tarefa concluída
  • Diferença Financeira:
    • Verde: Valor positivo (economia no orçamento)
    • Vermelho: Valor negativo (estouro de orçamento)
  • Prioridades:
    • Baixa - Cinza
    • Média - Azul
    • Alta - Amarelo
    • Urgente - Vermelho
  • Status das Tarefas: Herdam a cor personalizada das colunas do Kanban de cada projeto

Exemplo Visual da Tela de Relatórios:

🔍 Filtros

Orçamento Total
R$ 150.000,00
Despesas Total
R$ 98.500,00
Diferença
R$ 51.500,00

📋 Tarefas Detalhadas

Título Projeto Status Prioridade SLA Orçamento Despesas Diferença
Implementar autenticação Sistema Web Em Progresso Alta Em Dia R$ 15.000 R$ 8.500 R$ 6.500
Revisar código backend API Gateway Concluída Alta Concluída R$ 8.000 R$ 9.200 -R$ 1.200
Criar testes unitários Sistema Web A Fazer Média Atrasada R$ 5.000 R$ 0 R$ 5.000

9. Gerenciamento de Usuários

Gerentes podem gerenciar usuários da empresa.

9.1. Criar Usuário

  1. Acesse Usuários no menu principal
  2. Clique em "Novo Usuário"
  3. Preencha:
    • Email: Email único do usuário
    • Senha: Mínimo 6 caracteres
    • Nome: Nome completo
    • Função: Gerente, Membro ou Visualizador
  4. Clique em "Salvar"
Funções:
  • Gerente: Acesso completo, pode gerenciar usuários
  • Membro: Pode editar recursos onde está associado
  • Visualizador: Apenas visualização, sem edição

9.2. Excluir Usuário

Ao excluir um usuário, você pode transferir todas as suas atribuições (projetos, tarefas, equipes) para outro usuário, garantindo que nenhum dado seja perdido.

  1. Abra o usuário que deseja excluir
  2. Clique em "Excluir"
  3. Selecione o usuário que receberá as atribuições
  4. Confirme a exclusão
Atenção: Não é possível excluir o último gerente. Promova outro usuário a gerente primeiro.

10. Assistente IA (Aistem)

O Aistem é um assistente de inteligência artificial integrado ao SmartProj que permite interagir com o sistema usando linguagem natural.

10.1. Como Usar o Aistem

  1. Clique no botão flutuante do assistente (geralmente no canto inferior direito)
  2. Digite sua pergunta ou comando em linguagem natural
  3. O Aistem processará sua solicitação e executará ações ou fornecerá informações

10.2. Exemplos de Comandos

  • "Crie um projeto chamado Marketing Digital" - Cria um novo projeto
  • "Mostre meus projetos ativos" - Lista projetos com status ativo
  • "Adicione uma tarefa 'Desenvolver API' no projeto X" - Cria tarefa em um projeto
  • "Quais tarefas estão atrasadas?" - Lista tarefas com prazo vencido
  • "Mostre o progresso do projeto Y" - Exibe estatísticas do projeto

10.3. Aistem no WhatsApp

O Aistem também pode ser acessado pelo WhatsApp. Envie mensagens de texto ou áudio para o número da empresa e o Aistem responderá automaticamente. Veja mais detalhes na seção WhatsApp.

10.4. Respostas de Áudio (TTS)

Quando ativado nas configurações, o Aistem pode responder mensagens de voz com áudio. A resposta será em áudio se:

  • O usuário enviou uma mensagem de voz
  • A resposta for curta o suficiente (dentro do limite configurado)
  • O TTS estiver habilitado no painel de configurações

10.5. Limpeza de Histórico de Conversas

É possível apagar o histórico de conversas com o Aistem de duas formas:

  • Página "Histórico de Conversas" (/ai-agent/history.php): possui o botão "Limpar todo o histórico", que apaga todas as conversas do usuário logado — incluindo as conversas feitas pelo WhatsApp, que ficam na mesma base.
  • Modal do widget do assistente: o modal "Histórico de Conversas" tem o botão "🗑️ Limpar tudo" e um botão de apagar em cada conversa da lista, ambos com confirmação. Ao apagar a conversa ativa, o widget volta para a mensagem de boas-vindas.

10.6. Consultas SQL Somente Leitura

Quando as ferramentas padrão não cobrirem um filtro complexo, o Aistem pode montar e executar consultas SQL somente leitura (tool run_select_query). A consulta é restrita a SELECT, executada em transação de leitura com limite de tempo e de linhas, garantindo que nenhum dado seja alterado.

10.7. Tarefas Grandes e Multi-etapa

Para pedidos grandes ou com várias etapas (ex: criar um projeto com várias tarefas e lembretes), o Aistem executa todas as etapas e responde uma única vez ao final, com o resultado completo — sem mensagens intermediárias como "um momento".

O Aistem entende comandos em português e pode ajudar com criação, consulta e gerenciamento de recursos do sistema.

11. WhatsApp

O SmartProj se integra ao WhatsApp de duas formas:

  • Evolution API: conexão via WhatsApp Web (QR Code), ideal para testes e cenários flexíveis.
  • WhatsApp Business API (WABA / Meta): integração oficial com a Meta, recomendada para uso produtivo e envio em escala.

Em ambos os casos, os usuários podem conversar com o Aistem diretamente pelo aplicativo do WhatsApp.

11.1. Como Funciona

  1. O usuário envia uma mensagem para o número da empresa no WhatsApp
  2. A Evolution API encaminha a mensagem para o SmartProj via webhook
  3. O SmartProj identifica o usuário pelo telefone
  4. O Aistem processa a mensagem e envia uma resposta
  5. A resposta é entregue ao usuário pelo WhatsApp

11.2. Tipos de Mensagem Suportados

  • Texto: respostas diretas do Aistem
  • Áudio: transcrito para texto antes de ser processado
  • Imagem: o Aistem descreve o conteúdo da imagem
  • Documento: o Aistem extrai e resume o texto do documento

11.3. Respostas de Áudio

Se o usuário enviar uma mensagem de voz e o TTS estiver ativado, o Aistem pode responder com áudio. O administrador pode configurar:

  • Modelo de voz (ex: pt_BR-faber-medium)
  • Velocidade da fala
  • Limite máximo de caracteres da resposta
  • Se deseja resposta automática de áudio para mensagens de voz

11.4. Proteção contra Loops com Bots

O SmartProj possui proteção automática contra outros bots ou agents que possam entrar em loop de mensagens. Se o mesmo número enviar mensagens repetidas ou com padrões de bot em curto espaço de tempo, o sistema responderá apenas uma vez.

11.5. WhatsApp Business API (WABA / Meta)

A aba Configurações > Integrações > WABA permite conectar o SmartProj ao WhatsApp oficial da Meta.

  1. Crie um app no Facebook Developers com o produto WhatsApp.
  2. Obtenha o Access Token, Phone Number ID e Business Account ID.
  3. Verifique seu número de negócio na Meta.
  4. Preencha os campos na aba WABA e salve.
  5. Configure o webhook no app da Meta usando a URL exibida na tela e o Webhook Verify Token.
  6. Ative a integração e envie uma mensagem de teste.

O webhook da Meta deve apontar para /api/waba-webhook.php. Se o App Secret for preenchido, o SmartProj validará automaticamente a assinatura X-Hub-Signature-256 de cada evento.

A WABA funciona em paralelo com a Evolution API. Quando ativa, o Aistem responde mensagens recebidas por WABA; a tool send_whatsapp_message e os lembretes também usam WABA automaticamente.

11.6. Alerta de Status no Topo da Página

Administradores e líderes veem um alerta vermelho no topo quando uma instância WhatsApp (Evolution ou WABA) está realmente desconectada. Esse alerta:

  • Nunca aparece na landing page.
  • Não aparece para usuários comuns (só para admins/líderes).
  • Não aparece quando a integração está desativada ou não configurada.
  • Só aparece quando há uma instância realmente desconectada.

11.7. Prioridade de Canais e Fallback

Com Evolution API e WABA configuradas, o envio de mensagens segue estas regras:

  • Respostas do Aistem: saem pelo mesmo canal em que o usuário chamou (Evolution ou WABA). Se o envio pelo canal original falhar (instância desconectada, erro de API), o sistema tenta reenviar automaticamente pelo outro canal (fallback Evolution ↔ WABA).
  • Lembretes: a Evolution API tem prioridade quando está ativa, configurada e com a instância conectada. Se estiver desativada ou desconectada, o envio desvia automaticamente para a WABA (Meta).

Os lembretes deixam de ser enviados quando a tarefa é concluída ou cancelada, ou quando o projeto é concluído, pausado, cancelado ou arquivado.

Para usar o WhatsApp, o telefone do usuário precisa estar vinculado a um perfil do SmartProj. Acesse Configurações > Empresa ou preencha o campo telefone no perfil do usuário. Para WABA, consulte também o guia docs/waba-integration.md.

12. Configurações

11.1. Perfil do Usuário

Acesse através do menu do avatar (canto inferior esquerdo) > Configurações

  • Editar nome completo
  • Alterar foto de perfil
  • Atualizar telefone e biografia
  • Alterar senha

12.2. Configurações da Empresa

Acesse Configurações > Empresa para personalizar as informações da sua empresa.

  • Nome da empresa: Nome que aparece nos relatórios e documentos
  • Logo da empresa: Upload de imagem para cabeçalho de relatórios em PDF (formatos: PNG, JPG, SVG)
  • Cor da marca: Cor principal da empresa usada em cabeçalhos de relatórios em PDF
  • Endereço: Endereço completo da empresa
  • Telefone: Número de contato
  • Website: URL do site da empresa
Dica: O logo e a cor da marca configurados aqui serão usados automaticamente nos relatórios em PDF exportados, dando uma aparência profissional e personalizada aos documentos.

12.3. Integrações

Acesse Configurações > Integrações para configurar serviços externos.

  • WhatsApp (Evolution): configure a Evolution API, crie a instância e conecte o QR Code.
  • WABA (WhatsApp Business API / Meta): configure o Access Token, Phone Number ID, Business Account ID, App Secret e Webhook Verify Token.
  • TTS (Text-to-Speech): disponível apenas para super admin, permite configurar vozes e respostas de áudio.

12.4. TTS — Respostas de Áudio

O super admin pode acessar Super Admin > Configurações > aba TTS para configurar:

  • Habilitar TTS: ativa/desativa respostas de áudio
  • Modelo de voz: voz usada na síntese (ex: pt_BR-faber-medium)
  • Velocidade: velocidade da fala (recomendado 1.2 a 1.4)
  • Formato: MP3 (recomendado) ou OGG
  • Máximo de caracteres: respostas maiores serão enviadas como texto
  • Resposta automática para áudio: responde em áudio quando o usuário enviar mensagem de voz

12.5. STT — Transcrição de Áudio (Whisper.cpp)

O super admin pode acessar Super Admin > Configurações > aba TTS para configurar a transcrição local de mensagens de voz recebidas pelo WhatsApp usando Whisper.cpp, sem custo de API externa:

  • Habilitar Whisper STT: ativa a transcrição local de áudios recebidos
  • Modelo: escolha entre tiny (mais rápido), base (recomendado) e small (mais preciso)
  • Idioma: idioma principal dos áudios (pt, en, es) ou auto-detectar
  • Threads: quantidade de threads usadas pela transcrição (mais threads = mais rápido, mas mais CPU)

A transcrição local só funciona se o Whisper.cpp estiver instalado no servidor em /opt/whisper.cpp/ com o binário em /opt/whisper.cpp/build/bin/whisper-cli e o modelo selecionado em /opt/whisper.cpp/models/ggml-<modelo>.bin.

12.6. Aistem — Prompt de Sistema e Auditoria (Super Admin)

Em Super Admin > Configurações, na área do Aistem:

  • Prompt de Sistema: o campo é somente leitura e exibe o prompt real em uso pelo agente (gerado em código). Não é mais possível editá-lo pela tela.
  • Auditoria de tool calls: a tela admin/aistem-logs.php mostra cada ferramenta (tool) executada pelo agente, com nome, argumentos, resultado, status e erro — útil para diagnosticar o comportamento do agente.

12.7. Privacidade, Termos e Cookies

O SmartProj disponibiliza páginas legais em conformidade com a Lei Geral de Proteção de Dados (LGPD):

  • Política de Privacidade: descreve como dados pessoais são tratados, os direitos dos titulares e o uso de provedores externos.
  • Termos de Uso: regras de uso da plataforma, responsabilidade pelo conteúdo e limitação de responsabilidade da Onsiite.
  • Política de Cookies: tipos de cookies utilizados, cookies de terceiros e como gerenciá-los.

Responsabilidade do usuário: ao usar o SmartProj e suas integrações (IA, WhatsApp, pagamento etc.), você reconhece que parte dos dados será processada por plataformas externas sob suas próprias políticas. É sua responsabilidade obter as autorizações necessárias, não inserir dados sensíveis sem base legal e cumprir a LGPD.

12.8. Cancelar Conta

Apenas gerentes podem cancelar a conta da empresa. Esta ação é irreversível e exclui todos os dados.

  1. Acesse Configurações > Empresa
  2. Role até a seção "Zona de Perigo"
  3. Clique em "Cancelar Conta"
  4. Leia os avisos cuidadosamente
  5. Digite o nome da empresa para confirmar
  6. Confirme a exclusão
ATENÇÃO: Ao cancelar a conta, TODOS os dados serão excluídos permanentemente: projetos, tarefas, usuários, equipes, dados financeiros. Esta ação NÃO pode ser desfeita!

13. Dúvidas Frequentes

Como adiciono um usuário a um projeto?

Abra o projeto, vá na aba "Membros" e clique em "Adicionar Membro". Selecione o usuário desejado.

Posso ter múltiplos usuários atribuídos a uma tarefa?

Sim! Você pode atribuir quantos usuários quiser a uma tarefa. Basta adicionar cada um individualmente.

Como altero o status de uma tarefa?

Você pode arrastar a tarefa entre colunas no Kanban, ou editar a tarefa e alterar o status manualmente.

O que acontece se eu excluir um usuário?

Você pode escolher transferir todas as atribuições (projetos, tarefas, equipes) para outro usuário antes de excluir. Nenhum dado é perdido.

Como vejo o progresso de um projeto?

Na página de detalhes do projeto, você verá automaticamente o percentual de conclusão baseado nas tarefas concluídas. Também há relatórios específicos na seção "Relatórios".

Posso personalizar as colunas Kanban?

Sim! Você pode criar, editar, reordenar e excluir colunas Kanban em cada projeto. Clique no ícone de configurações das colunas.

Como funcionam os lembretes?

Você pode criar lembretes para tarefas. Quando a data/hora chegar, você receberá uma notificação no navegador e por email (se configurado).

Qual a diferença entre Orçamento e Despesa?

Orçamento é o valor planejado para uma tarefa. Despesa é o valor realmente gasto. O sistema calcula automaticamente a diferença.

Como uso o Aistem pelo WhatsApp?

Envie uma mensagem de texto ou áudio para o número da empresa no WhatsApp. O Aistem identificará seu usuário pelo telefone vinculado e responderá automaticamente.

Por que às vezes o Aistem responde em texto e não em áudio?

O Aistem responde em áudio apenas quando: (1) você enviou uma mensagem de voz, (2) o TTS está habilitado, e (3) a resposta é curta o suficiente para caber no limite configurado. Respostas longas ou complexas são enviadas como texto.

O SmartProj entra em loop com outros bots?

Não. O sistema possui proteção automática contra loops com bots. Se detectar mensagens repetidas ou padrões de bot, responde apenas uma vez ao mesmo número.

Precisa de mais ajuda? Entre em contato com o suporte.

SmartProj v1.4.10 - Desenvolvido por Onsiite Tech

Documentação da API REST

API completa para integração com o SmartProj

Introdução

A SmartProj API é uma API REST completa que fornece acesso programático a todos os recursos do sistema.

Base URL: https://smartproj.com.br/api/v1
Versão: 1.0.0
Formato: JSON

Estrutura de Resposta

Todas as respostas da API seguem um formato consistente com os campos success, data ou error, e message ou code.

Sucesso
{ "success": true, "data": { // Dados da resposta }, "message": "Operação realizada com sucesso" }
Erro
{ "success": false, "error": "Mensagem de erro descritiva", "code": "ERROR_CODE" }

Autenticação

Todas as requisições (exceto login e registro) requerem autenticação via Bearer Token no header.

POST /auth/login

Realiza login e retorna token de autenticação.

Parâmetros do Body:

Campo Tipo Obrigatório Descrição
email string SIM Email do usuário
password string SIM Senha do usuário

Resposta de Sucesso:

Status: 200 OK

Retorna dados do usuário e token de autenticação.

Request
{ "email": "user@example.com", "password": "senha123" }
Response 200
{ "success": true, "data": { "user": { "id": "uuid", "email": "user@example.com", "role": "leader", "display_name": "Nome do Usuário" }, "token": "session_id_or_jwt" } }
cURL
curl -X POST https://smartproj.com.br/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "password": "senha123" }'
POST /auth/register

Registra um novo usuário no sistema.

Parâmetros do Body:

Campo Tipo Obrigatório Descrição
email string SIM Email único do usuário
password string SIM Senha (mínimo 6 caracteres)
display_name string Não Nome de exibição do usuário
GET /auth/me

Obtém dados do usuário autenticado.

Headers: Authorization: Bearer {token}

Register Request
{ "email": "novo@example.com", "password": "senha123", "display_name": "Novo Usuário" }
Get Current User (cURL)
curl -X GET https://smartproj.com.br/api/v1/auth/me \ -H "Authorization: Bearer {token}"
Inclua o token no header Authorization: Bearer {token} em todas as requisições autenticadas.

Usuários

GET /users

Lista todos os usuários visíveis para o usuário atual.

Permissões: Gerentes veem usuários gerenciados, Super Admin vê todos.

GET /users/:id

Obtém usuário específico. Use /users/me para usuário atual.

POST /users

Cria novo usuário (apenas gerentes e super admin).

Parâmetros do Body:

Campo Tipo Descrição
email string Email do novo usuário
password string Senha inicial
display_name string Nome completo
role string Função: leader, member, viewer
PUT /users/:id

Atualiza dados do usuário.

DELETE /users/:id

Exclui usuário (com transferência de atribuições).

Create User Request
{ "email": "user@example.com", "password": "senha123", "display_name": "Nome Completo", "role": "member" }
List Users (cURL)
curl -X GET https://smartproj.com.br/api/v1/users \ -H "Authorization: Bearer {token}"
Delete User (cURL)
curl -X DELETE https://smartproj.com.br/api/v1/users/{id} \ -H "Authorization: Bearer {token}"

Empresas

GET /companies

Obtém configurações da empresa do usuário atual.

PUT /companies

Atualiza configurações da empresa.

Parâmetros do Body:

Campo Tipo Descrição
company_name string Nome da empresa
address string Endereço completo
phone string Telefone de contato
brand_color string Cor da marca (hex)
company_logo file Logo da empresa (upload)
Get Company (cURL)
curl -X GET https://smartproj.com.br/api/v1/companies \ -H "Authorization: Bearer {token}"
Update Company Request
{ "company_name": "Minha Empresa", "address": "Rua Exemplo, 123 - São Paulo/SP", "phone": "(11) 98765-4321", "brand_color": "#ff0000" }
Response 200
{ "success": true, "message": "Configurações atualizadas", "data": { "company_name": "Minha Empresa", "brand_color": "#ff0000" } }

Centros de Custo

GET /cost-centers

Lista todos os centros de custo.

POST /cost-centers

Cria centro de custo.

Parâmetros do Body:

Campo Tipo Descrição
name string Nome do centro de custo
code string Código identificador
description string Descrição opcional
PUT /cost-centers/:id

Atualiza centro de custo.

DELETE /cost-centers/:id

Exclui centro de custo.

List Cost Centers (cURL)
curl -X GET https://smartproj.com.br/api/v1/cost-centers \ -H "Authorization: Bearer {token}"
Create Cost Center Request
{ "name": "Marketing", "code": "MKT", "description": "Centro de custo de marketing" }
Response 200
{ "success": true, "data": { "id": "uuid-here", "name": "Marketing", "code": "MKT" } }

Equipes

GET /teams

Lista todas as equipes.

POST /teams

Cria equipe.

Parâmetros do Body:

Campo Tipo Descrição
name string Nome da equipe
description string Descrição da equipe
GET /teams/:id/members

Lista membros da equipe.

POST /teams/:id/members

Adiciona membro à equipe.

Parâmetros do Body:

Campo Tipo Descrição
user_id string UUID do usuário
Create Team Request
{ "name": "Equipe de Desenvolvimento", "description": "Equipe responsável pelo desenvolvimento" }
List Teams (cURL)
curl -X GET https://smartproj.com.br/api/v1/teams \ -H "Authorization: Bearer {token}"
Add Member Request
{ "user_id": "550e8400-e29b-41d4-a716-446655440000" }
Response 200
{ "success": true, "data": { "id": "uuid-here", "name": "Equipe de Desenvolvimento" } }

Projetos

GET /projects

Lista projetos do usuário.

Query Parameters:

  • status - Filtrar por status (draft, active, paused, completed, cancelled)
GET /projects/:id

Obtém projeto específico com estatísticas.

POST /projects

Cria novo projeto (cria colunas Kanban padrão automaticamente).

Parâmetros do Body:

Campo Tipo Descrição
name string Nome do projeto
description string Descrição do projeto
status string Status: draft, active, paused, completed, cancelled
start_date date Data de início (YYYY-MM-DD)
end_date date Data de término (YYYY-MM-DD)
color string Cor do projeto (hex)
cost_center_id string UUID do centro de custo (opcional)
GET /projects/:id/kanban-columns

Lista colunas Kanban do projeto.

GET /projects/:id/gantt

Dados para visualização Gantt.

GET /projects/:id/calendar

Dados para visualização Calendário.

Create Project Request
{ "name": "Novo Projeto", "description": "Descrição do projeto", "status": "active", "start_date": "2025-01-01", "end_date": "2025-12-31", "color": "#DC143C", "cost_center_id": "uuid-opcional" }
List Projects (cURL)
curl -X GET https://smartproj.com.br/api/v1/projects?status=active \ -H "Authorization: Bearer {token}"
Get Kanban Columns (cURL)
curl -X GET https://smartproj.com.br/api/v1/projects/{id}/kanban-columns \ -H "Authorization: Bearer {token}"
Response 200
{ "success": true, "data": { "id": "uuid-here", "name": "Novo Projeto", "status": "active" } }

Tarefas

GET /tasks

Lista tarefas com filtros opcionais.

Query Parameters:

  • project_id - Filtrar por projeto
  • status - Filtrar por status
  • priority - Filtrar por prioridade
POST /tasks

Cria nova tarefa.

Parâmetros do Body:

Campo Tipo Descrição
project_id string UUID do projeto
title string Título da tarefa
description string Descrição da tarefa
status string Status: todo, in_progress, completed
priority string urgent, high, medium, low
due_date date Data de vencimento (YYYY-MM-DD)
budget decimal Orçamento previsto
kanban_column_id string UUID da coluna Kanban (opcional)
assignees array Array de UUIDs dos responsáveis
POST /tasks/:id/move

Move tarefa entre colunas Kanban.

Create Task Request
{ "project_id": "550e8400-e29b-41d4-a716-446655440000", "title": "Nova Tarefa", "description": "Descrição da tarefa", "status": "todo", "priority": "high", "due_date": "2025-01-15", "budget": 1000.00, "kanban_column_id": "uuid-opcional", "assignees": ["uuid-user1", "uuid-user2"] }
List Tasks (cURL)
curl -X GET https://smartproj.com.br/api/v1/tasks?project_id={id} \ -H "Authorization: Bearer {token}"
Move Task Request
{ "kanban_column_id": "550e8400-e29b-41d4-a716-446655440000" }
Response 200
{ "success": true, "data": { "id": "uuid-here", "title": "Nova Tarefa", "status": "todo" } }
Add Checklist Item
{ "title": "Item do checklist", "position": 0 }
Update Checklist Item
{ "title": "Item atualizado", "is_completed": true, "position": 1 }

Sub-recursos de Tarefas

GET /tasks/:id/subtasks

Lista subtarefas da tarefa.

GET /tasks/:id/items

Lista itens de checklist da tarefa (ordenados por posição).

POST /tasks/:id/items

Cria novo item de checklist na tarefa.

Parâmetros do Body:

Parâmetro Tipo Obrigatório Descrição
title string Sim Título do item
position integer Não Posição na lista
PUT /tasks/:id/items/:itemId

Atualiza item de checklist (título, status de conclusão ou posição).

DELETE /tasks/:id/items/:itemId

Exclui item de checklist da tarefa.

GET /tasks/:id/comments

Lista comentários da tarefa.

GET /tasks/:id/attachments

Lista anexos da tarefa.

GET /tasks/:id/reminders

Lista lembretes da tarefa.

GET /tasks/:id/assignees

Lista usuários atribuídos à tarefa.

Get Subtasks (cURL)
curl -X GET https://smartproj.com.br/api/v1/tasks/{id}/subtasks \ -H "Authorization: Bearer {token}"
Get Checklist Items (cURL)
curl -X GET https://smartproj.com.br/api/v1/tasks/{id}/items \ -H "Authorization: Bearer {token}"
Get Comments (cURL)
curl -X GET https://smartproj.com.br/api/v1/tasks/{id}/comments \ -H "Authorization: Bearer {token}"
Get Attachments (cURL)
curl -X GET https://smartproj.com.br/api/v1/tasks/{id}/attachments \ -H "Authorization: Bearer {token}"

Financeiro

GET /financial/entries

Lista entradas financeiras com filtros.

Query Parameters:

  • task_id - Filtrar por tarefa
  • project_id - Filtrar por projeto
  • type - expense ou budget
  • start_date - Data inicial (YYYY-MM-DD)
  • end_date - Data final (YYYY-MM-DD)
POST /financial/entries

Cria entrada financeira.

Parâmetros do Body:

Campo Tipo Descrição
task_id string UUID da tarefa
type string Tipo: expense (despesa) ou budget (orçamento)
amount decimal Valor da entrada
description string Descrição da entrada
entry_date date Data da entrada (YYYY-MM-DD)
GET /financial/projects/:projectId?summary=true

Resumo financeiro por projeto (total despesas, orçamento, diferença).

Create Financial Entry Request
{ "task_id": "550e8400-e29b-41d4-a716-446655440000", "type": "expense", "amount": 500.00, "description": "Despesa de marketing", "entry_date": "2025-01-15" }
List Entries (cURL)
curl -X GET https://smartproj.com.br/api/v1/financial/entries?type=expense \ -H "Authorization: Bearer {token}"
Project Summary (cURL)
curl -X GET https://smartproj.com.br/api/v1/financial/projects/{id}?summary=true \ -H "Authorization: Bearer {token}"
Response 200
{ "success": true, "data": { "total_budget": 10000.00, "total_expenses": 7500.50, "difference": 2499.50 } }

Relatórios

GET /reports/projects/progress

Progresso de projetos (total tarefas, concluídas, percentual).

GET /reports/tasks/status

Contagem de tarefas por status.

GET /reports/tasks/priority

Contagem de tarefas por prioridade.

Project Progress (cURL)
curl -X GET https://smartproj.com.br/api/v1/reports/projects/progress \ -H "Authorization: Bearer {token}"
Tasks by Status (cURL)
curl -X GET https://smartproj.com.br/api/v1/reports/tasks/status \ -H "Authorization: Bearer {token}"
Response 200 (Status)
{ "success": true, "data": { "todo": 15, "in_progress": 8, "completed": 42 } }
GET /reports/financial/summary

Resumo financeiro geral.

Query Parameters:

  • start_date - Data inicial (YYYY-MM-DD)
  • end_date - Data final (YYYY-MM-DD)
GET /reports/financial/by-project

Resumo financeiro agrupado por projeto.

GET /reports/users/activity

Atividade de usuários (tarefas criadas, comentários, entradas financeiras).

GET /reports/teams/performance

Performance de equipes (membros, projetos, tarefas, concluídas).

Estatísticas e Gráficos

Endpoints para obter dados estatísticos utilizados nos gráficos do Dashboard, Projetos e Tarefas.

GET /api/dashboard-stats.php

Retorna estatísticas completas do dashboard do usuário autenticado.

Query Parameters (Opcionais):

Parâmetro Tipo Padrão Descrição
statusPeriod string 30 Período em dias para tarefas por status (ou 'all')
productivityPeriod string 30 Período em dias para gráfico de produtividade
completionPeriod string 30 Período em dias para taxa de conclusão (ou 'all')
Os dados de tasksByStatus incluem as cores dinâmicas das colunas do Kanban.
Response 200
{ "success": true, "data": { "tasksByStatus": [ { "status_name": "Em Progresso", "color": "#3b82f6", "count": 12 } ], "productivity": [ { "date": "2024-11-20", "created": 5, "completed": 3, "overdue": 2 } ], "completionRate": { "total": 89, "completed": 54 } } }
cURL
curl -X GET \ "https://smartproj.com.br/api/dashboard-stats.php?statusPeriod=7" \ -H "Authorization: Bearer {token}"
GET /api/project-stats.php

Retorna estatísticas detalhadas de um projeto específico.

Query Parameters:

Parâmetro Tipo Obrigatório Descrição
project_id string (UUID) SIM ID do projeto
Response 200
{ "success": true, "data": { "progress": { "total": 25, "completed": 15, "in_progress": 8, "todo": 2 }, "tasksByStatus": [...], "timeline": [...], "tasksByPriority": [...], "productivity": [...] } }
cURL
curl -X GET \ "https://smartproj.com.br/api/project-stats.php?project_id={uuid}" \ -H "Authorization: Bearer {token}"
GET /api/task-stats.php

Retorna estatísticas detalhadas de uma tarefa específica.

Query Parameters:

Parâmetro Tipo Obrigatório Descrição
task_id string (UUID) SIM ID da tarefa
activity_days integer Não Período em dias (padrão: 7)
Use activity_days com valores como 7, 15, 30, 60 ou 90.
Response 200
{ "success": true, "data": { "checklistProgress": { "total": 4, "completed": 3 }, "activityHistory": [...], "attachmentsByType": [...], "taskTime": {...} } }
cURL
curl -X GET \ "https://smartproj.com.br/api/task-stats.php?task_id={uuid}&activity_days=30" \ -H "Authorization: Bearer {token}"

Exemplo de Uso

cURL
# Obter estatísticas do dashboard com filtro de 7 dias curl -X GET "https://smartproj.com.br/api/dashboard-stats.php?statusPeriod=7&productivityPeriod=7" \ -H "Authorization: Bearer {seu_token}" # Obter estatísticas de um projeto específico curl -X GET "https://smartproj.com.br/api/project-stats.php?project_id={uuid_do_projeto}" \ -H "Authorization: Bearer {seu_token}" # Obter estatísticas de uma tarefa (últimos 30 dias de atividades) curl -X GET "https://smartproj.com.br/api/task-stats.php?task_id={uuid_da_tarefa}&activity_days=30" \ -H "Authorization: Bearer {seu_token}"

Assistente IA

Estes endpoints são internos: usam a sessão do usuário logado (cookie), e não o token Bearer da API REST v1.
DELETE /api/ai-conversation.php?all=1

Apaga todo o histórico de conversas do usuário logado com o Aistem, incluindo as conversas feitas pelo WhatsApp (que ficam na mesma base).

Query Parameters:

  • all=1 - Obrigatório para apagar todas as conversas
cURL (sessão logada)
curl -X DELETE "https://smartproj.com.br/api/ai-conversation.php?all=1" \ -H "Cookie: PHPSESSID={sessao_do_usuario}"

Exemplos de Uso

JavaScript (Fetch API)

JavaScript
// Login async function login(email, password) { const response = await fetch('https://smartproj.com.br/api/v1/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); const data = await response.json(); if (data.success) { localStorage.setItem('api_token', data.data.token); return data.data.user; } } // Listar projetos async function getProjects() { const token = localStorage.getItem('api_token'); const response = await fetch('https://smartproj.com.br/api/v1/projects', { headers: { 'Authorization': `Bearer ${token}` } }); return await response.json(); } // Criar tarefa async function createTask(projectId, title) { const token = localStorage.getItem('api_token'); const response = await fetch('https://smartproj.com.br/api/v1/tasks', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ project_id: projectId, title: title, priority: 'high' }) }); return await response.json(); }

cURL

cURL
# Login curl -X POST https://smartproj.com.br/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"user@example.com","password":"senha123"}' # Listar projetos curl -X GET https://smartproj.com.br/api/v1/projects \ -H "Authorization: Bearer {token}" # Criar tarefa curl -X POST https://smartproj.com.br/api/v1/tasks \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "project_id": "uuid", "title": "Nova Tarefa", "priority": "high" }'

Python (requests)

Python
import requests BASE_URL = "https://smartproj.com.br/api/v1" # Login response = requests.post(f"{BASE_URL}/auth/login", json={ "email": "user@example.com", "password": "senha123" }) data = response.json() token = data['data']['token'] # Listar projetos headers = {"Authorization": f"Bearer {token}"} projects = requests.get(f"{BASE_URL}/projects", headers=headers).json() # Criar tarefa task_data = { "project_id": "uuid", "title": "Nova Tarefa", "priority": "high" } new_task = requests.post( f"{BASE_URL}/tasks", json=task_data, headers=headers ).json()

Códigos de Status HTTP

Código Significado Quando Usar
200 OK Requisição bem-sucedida
201 Created Recurso criado com sucesso
204 No Content Exclusão bem-sucedida (sem conteúdo)
400 Bad Request Dados inválidos na requisição
401 Unauthorized Não autenticado
403 Forbidden Sem permissão para a ação
404 Not Found Recurso não encontrado
422 Unprocessable Entity Validação falhou (ex: email duplicado)
500 Internal Server Error Erro interno do servidor

Exemplos de Erros

400 - Bad Request

JSON
{ "success": false, "error": "Email e senha são obrigatórios" }

401 - Unauthorized

JSON
{ "success": false, "error": "Não autenticado" }

422 - Unprocessable Entity

JSON
{ "success": false, "error": "Este email já está cadastrado" }

SmartProj API v1.0 - Desenvolvido por Onsiite Tech

Aistem - Assistente IA

Tarefa

Projeto

Progresso da Checklist

Atividades

Mantenha Ctrl (ou Cmd) pressionado para selecionar múltiplos