Arquivar novembro 2016

O que é o Geoadmin?

Bem, finalmente, nosso querido Geoadmin foi lançado. Mas vamos por partes!

Neste post gostaria de explicar para vocês o que é o Geoadmin, quais foram as principais motivações para a construção do mesmo e, principalmente, como ele pode te ajudar.

Principais Motivações

O Geoadmin tem algumas motivações principais. A Sigma, criadora do sistema possui em sua rede de contatos, diversos prestadores de serviços, gestores ambientais e agroindústrias com uma dificuldade imensa de gerenciar seus empreendimentos (ou de seus clientes), do ponto de vista fundiário e ambiental.

Não é por falta de capacidade destes prestadores ou destes gestores, mas sim pela própria natureza dos serviços executados.

São diversos tipos de documentos, em diversos formatos, para uma gama de atividades a ser cumprida muito ampla. Só organizar estes documentos já é uma tarefa complicada.

Alguns fatos:

  1. Geralmente estes dados estão “organizados” em um planilhão do Excel;
  2. Os arquivos que realmente são necessários durante a execução ou com o fim do trabalho, estão em pastas no sistema operacional. No máximo distribuída na rede interna;
  3. Não é possível gerenciar os metadados destes arquivos – você deve procurar uma lista enorme de documentos e abrir um a um até encontrar o correto;
  4. Não existe controle de acesso ou se existe é bastante deficitário;
  5. Não existe um controle de revisões. Sempre devemos procurar qual é o arquivo final mais atual (você provavelmente já viu arquivo_final_1, arquivo_final_1_final, arquivo_final_1_final_de_verdade);
  6. Falta de integração entre membros da mesma equipe;

É aí que entra o Geoadmin.

Com ele, você elimina estas falas de organização e permite a colaboração entre os diversos membros da equipe, através de um repositório de arquivos centralizado (e seguro!), onde as pessoas que mais precisam, podem encontrar o que precisam de forma rápida e eficiente.

Podemos resumir os pilares do Geoadmin:

  • Organização;
  • Colaboração entre equipes;
  • Rastreabilidade;

Como me registro?

O registro para avaliação é gratuito!

Após o cadastro, iremos construir sua conta para você e enviaremos um email assimq ue a mesma estiver pronta. Todo o processo não leva mais de um minuto.

Como funciona?

O Geoadmin é um sistema web, totalmente online, que permite que você, proprietário, prestador de serviço, agroindústria ou parte interessada na gestão fundiária e ambiental de um empreendimento, gerencie suas informações em único lugar.

Certo, mas quais informações posso gerenciar?

O sistema permite que você gerencie, imediatamente, as seguintes informações:

  1. Empreendimentos;
  2. Licenças;
  3. Condicionates;
  4. Ocorrências e não conformidades;
  5. Proprietários;
  6. Propriedades;
  7. Prestadores de Serviços;
  8. Serviços (a serem prestados);
  9. Eventos de serviços;
  10. Anexos;
  11. Documentação fundiária (matrículas e registro de imóveis);
  12. Documentação processo licenciamento;

O sistema é todo georreferenciado, permitindo que você visualize todas estas informações em um mapa completo, visualizando a distribuição de seus dados no espaço.

Mapa Interativo

mapa

Na figura acima, estamos mostrando para vocês a tela principal, onde você consegue visualizar todas as propriedades administradas, bem como os serviços em execução na mesma.

O mapa é interativo, permitindo que você navegue pelo mesmo, pesquise por propriedades e/ou proprietários, bem como faça medições rápidas.

Legal, mas quero usar minhas imagens no sistema. É possível?

Além destas camadas, podemos fazer upload das suas imagens, sem custo, possibilitando que você integre as imagens que você já possui no sistema.

Calendário, notificações e agenda

O Geoadmin possui um perfil gerencial muito interessante. Através dele é possível agendar
tarefas e/ou eventos e controlar as etapas de execução dos serviços relacionados.

Um cenário fictício: o gestor de um empreendimento precisa regularizar a outorga de água de um pivô central.

Através do sistema, você pode agendar um serviço, informando data de início e data de fim, bem como as etapas que compreendem este serviço, através de eventos.

calendario

Existem duas formas de você ficar antenado nas tarefas que você precisa cumprir (ou cobrar)
de um terceiro:

  1. Notificações via email;
  2. Integração da Agenda;

O sistema, todos os dias durante a noite, verifica quais são seus compromissos dos próximos dias e envia um email com links diretos para eles.

Neste email de notificação, existem os seguintes itens:

  1. Atividades Realizadas (lista de atividades realizadas no sistema, como por exemplo: usuário A cadastrou nova propriedade B);
  2. Serviços e eventos próximos (lista de eventos mais próximos, de acordo com a data atual);
  3. Licenças próximas do vencimento (para cada serviço, olhamos as licenças que estão para vencer e te alertamos);

A integração de agenda, permite que você integre sua agenda, seja ela do Google, Outlook ou qualquer outro calendário, através de um botão de download.

Você faz o download de seus compromissos e importa este calendário em seu software de agenda específico.

Esta integração te informa os mesmos dados que estão disponíveis nas notificações via email, com a vantagem de você poder levar onde quiser, seja em sua agenda do smartphone ou qualquer outro programa que deseje.

Anexos

O Geoadmin permite que você faça upload de diversos arquivos, relacionados a diferentes objetos do sistema.

É possível incluir anexos de diversos foramtos (PDF, DOC, imagens, etc)
a propriedades, proprietários, entre outros.

Esses arquivos são armazenados de forma segura, em nossos servidores e os backups são realizados diariamente.

Além disso, o sistema possui uma interface de pesquisa de anexos fantástica, permitindo que você pesquise não só pelo nome do arquivo, mas pelo contexto que o mesmo está inserido, seja em uma propriedade, proprietário e até mesmo licenças.

Dashboard

O sistema possui um dashboard ou painel de controle, de forma que os gestores tenham informações rápidas sobre o que estão administrando.

Abaixo segue uma figura de como o dashboard funciona. Existem estatísticas específicas sobre suas informações do sistema e ainda estamos construindo outras, conforme desenvolvemos
novas funcionalidades.

dashboard

Conclusões

Após ler sobre as capacidades do Geoadmin te convido a se cadastrar.

Temos certeza de que o Geoadmin irá ajudar você e sua organização e trabalharem melhor, com mais eficiência.

Celery e Tarefas assícronas com Python

O Celery é um aplicação, escrita em Python, que permite que você delegue tarefas a diversos workers, localizados em outros servidores.

O Celery é uma forma bastante de realizar estes jobs ou tarefas de forma assíncrona, sem ter de quebrar muito a cabeça com conceitos complicados e difíceis de serem acertados.

Primeiramente, vou explicar como o Celery funciona, em termos de arquitetura.

Temos alguns componentes principais envolvidos:

  1. Aplicação – este carinha aqui é a sua aplicação normal, a qual o usuário ou outra máquina interage;
  2. Broker – este componente é uma fila de mensagens, utilizada para transportar mensagens entre os processos que estamos descrevendo aqui. O Celery permite o uso de diversos brokers, como redis e RabbitMQ. Usamos o redis por aqui, mas é uma preferência;
  3. Worker – este é o componente que trabalha de verdade. Qualquer tarefa agendada pela aplicação no broker, será executada pelo worker;
  4. Beat – é um componente opcional, mas funciona como um agendador de tarefas, que dispara de tempos em tempos as tarefas para o broker, como uma aplicação;

Com esta arquitetura, é bastante fácil escalar a coisa toda para funcionar em várias máquinas, bastando adicionar mais workers conforme a frequência das tarefas aumentam. O Celery é muito customizável e tem opções importantes, como controle de filas (algumas tarefas só podem ser processadas uma a uma, em uma única fila, sem concorrência alguma, enquanto outras podem ser paralelizadas), aplicaçoes de monitoramento (como o Flower) e extensões de biblioteca para os desenvolvedores (como o Jobtastic).

Vamos hoje dar um exemplo bastante simples, integrado a um projeto Django. Não vamos entrar em muitos detalhes de como subir os workers ou o broker, pois vai depender muito do seu ambiente.

Imagine que sua aplicação manda emails. Quase todas as aplicações (web) mandam emails, mas algumas mandam mais emails que outras e com maior frequência. Entre o ponto em que uma requisição feita pelo usuário é processada e uma resposta é retorna, vários segundos podem se passar e não queremos deixar o usuário esperando. Então decidimos delegar o envio do email, que é mais demorado, para uma tarefa assícrona no Celery.

Como fazer isto?

Bem, primeiramente é necessário configurar sua aplicação Celery. Fazemos (aqui na SIGMA) por meio de um arquivo celery.py, localizado junto wsgi.py do projeto. Ele é mais ou menos assim:

# coding: utf-8
"""Configuração inicial do Celery"""
from __future__ import absolute_import
import os
from django.conf import settings

if not "DJANGO_SETTINGS_MODULE" in os.environ:
    os.environ["DJANGO_SETTINGS_MODULE"] = "settings.local"  # aqui na SIGMA usamos settings separados para cada ambiente

from celery import Celery
app = Celery('nome-da-app')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

Com esta configuração batuta, podemos iniciar um worker, por exemplo. Além disso, usamos o autodiscover do Celery, que percorrerá todas as INSTALLED_APPS e cadastrará todas as tarefas dentro dos módulos tasks.py.

Ok, com o Celery configurado, podemos startar um worker.

celery -A projeto worker -l info

Agora, vamos criar nossa task e chamar ela de dentro de uma view qualquer. Crie um arquivo chamado tasks.pyem uma de suas apps, por exemplo, sistema.

Para definir a task, utilizaremos um decorador:

from projeto.celery import app  # lembre do nosso arquivo celery.py?


@app.task()
 def email_async(email, assunto, template, contexto):
    template_html = get_template(template)
    template_txt = get_template(template.replace('.html', '.txt'))
    if isinstance(contexto, dict):
        contexto = Context(contexto)

    contexto['email_header_image'] = get_random_image()
    html = template_html.render(contexto)
    txt = template_txt.render(contexto)
    if isinstance(email, basestring):
        email =[email]

    send_mail(assunto,
              txt,
              'remetente',
              recipient_list=email,
              html_message=html)

Com a tarefa definida, podemos invocá-la de forma assícrona. O Celery tem muitas formas de se invocar uma tarefa. Existe um negócio chamado canvas que permite você combinar as tarefas de forma assícrona, paralelas, etc. Confira a documentação do canvas.

Vá em uma de suas views que enviam emails:

from .tasks import email_async

def view_qualquer(request):

    # faça alguma coisa útil

    email_async.delay('novo email', 'sistema/email.html', {'variavel_contexo_a': 'foo', 'b': 'novo email maroto'})

O segredo da chamada assícrona está no método delay, que irá usar o broker para agendar a tarefa e futuramente será executada por um worker.

É um resumo muito curto para mostrar todas as capacidades do Celery, mas é um projeto muito bem mantido, utilizado por muita gente.

O exemplo que demos, apesar de parecer bobo, é bastante significativo quando estamos falando de uma aplicação que envia centenas ou milhares de emails por dia, diminuindo muito o impacto nos servidores de aplicação e permitindo que você lide com uma carga bem mais alta.

Iremos fazer uma pequena série sobre o Celery. Tem jeito de consultar o status da tarefa, agendar tarefas periódicas, controlar exceções e um monte de coisa legal.

Fique ligado e obrigado!