Etiqueta: visualeditor |
Etiqueta: visualeditor |
||
| Linha 19: | Linha 19: | ||
## Criar uma página para cada operação do CRUD | ## Criar uma página para cada operação do CRUD | ||
## Verificar se o usuário tem permissão para realizar a operação | ## Verificar se o usuário tem permissão para realizar a operação | ||
## Atualizar as alterações realizadas no CRUD no banco de dados | |||
# CRUD de Usuário | # CRUD de Usuário | ||
## Criar uma página para cada operação do CRUD | ## Criar uma página para cada operação do CRUD | ||
## Verificar se o usuário tem permissão para realizar a operação | ## Verificar se o usuário tem permissão para realizar a operação | ||
## Atualizar as alterações realizadas no CRUD no banco de dados | |||
# CRUD de Organizações | # CRUD de Organizações | ||
## Criar uma página para cada operação do CRUD | ## Criar uma página para cada operação do CRUD | ||
## Verificar se o usuário tem permissão para realizar a operação | ## Verificar se o usuário tem permissão para realizar a operação | ||
## Atualizar as alterações realizadas no CRUD no banco de dados | |||
# Buscar livros disponíveis para empréstimo | # Buscar livros disponíveis para empréstimo | ||
## Receber os termos da busca por um campo (linha de formulário) | ## Receber os termos da busca por um campo (linha de formulário) | ||
| Linha 35: | Linha 38: | ||
## Ao clicar no botão, enviar uma solicitação para o dono do livro | ## Ao clicar no botão, enviar uma solicitação para o dono do livro | ||
## O empréstimo do livro será aceito ou não pelo dono | ## O empréstimo do livro será aceito ou não pelo dono | ||
## A entrega do livro deve ser negociada pelos usuários | ## A forma de entrega do livro deve ser negociada pelos usuários | ||
## Entrar na lista de espera ao requerer um livro não disponível | ## Entrar na lista de espera ao requerer um livro não disponível | ||
# Avisar de datas para devolução | # Avisar de datas para devolução | ||
Edição das 14h46min de 14 de outubro de 2016
Escopo
- Aplicação web e mobile voltada para controle, doação e empréstimo de livros que permite:
- Cadastrar todos os livros que o usuário possui ou que ele deseja adquirir
- Aos usuários Incluir organizações que permitirão o movimento de livros
- Solicitar os livros via sistema e aprovação/negação pelo dono
- Selecionar o processo de entrega (pessoal, Correios, Malote, etc) pelos usuários
- Pontuar de acordo com os empréstimos realizados de forma a ser qualificado publicamente.
- Disponibilizar um Chat para contato
- Gerenciar os empréstimos e devoluções notificando prazos e gerando multas quando houver atrasos
- Solicitar feedbacks após o empréstimo e/ou devolução
Requisitos Funcionais
- CRUD de Livros
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- Atualizar as alterações realizadas no CRUD no banco de dados
- CRUD de Usuário
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- Atualizar as alterações realizadas no CRUD no banco de dados
- CRUD de Organizações
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- Atualizar as alterações realizadas no CRUD no banco de dados
- Buscar livros disponíveis para empréstimo
- Receber os termos da busca por um campo (linha de formulário)
- Realizar a busca no banco de dados (SELECT)
- Filtrar os resultados por localidade, datas, gênero ou popularidade
- Permitir múltiplos filtros simultaneamente
- Exibir o resultado da pesquisa em uma página
- Solicitar livro para empréstimo
- Exibir botão de "empréstimo" na pesquisa de livros
- Ao clicar no botão, enviar uma solicitação para o dono do livro
- O empréstimo do livro será aceito ou não pelo dono
- A forma de entrega do livro deve ser negociada pelos usuários
- Entrar na lista de espera ao requerer um livro não disponível
- Avisar de datas para devolução
- Enviar e-mail / sms de aviso uma semana, três dias e um dia antes da data de devolução
- Notificar via aplicativo uma semana, três dias e um dia antes da data de devolução
- Capturar ISBN do livro (2ª etapa)
- Criar função para ativar a câmera do smartphone para capturar o código do ISBN no momento de cadastro do livro
- Criar função para digitar o código do ISBN no momento do cadastro do livro
- Dispor livros em estantes virtuais conforme gênero
- Armazenar para cada livro do usuário, sua posição na estante
- Realizar a busca no banco de dados (SELECT) dos livros que o usuário possui
- Para cada estante, realizar a busca no banco de dados (SELECT) dos livros que pertencem àquele gênero
- Exibir o resultado da pesquisa em uma página de acordo com a posição
- Permutar livros (2ª etapa)
- Empréstimo bidirecional: o usuário pede um livro e empresta um à outro usuário
- Devolver livros
- O processo de devolução também é de responsabilidade dos usuários
- Solicitar feedback ao final do empréstimo para ambos os usuários
- Vender livros (2ª etapa)
- Receber num formulário o preço e as opções de frete oferecidas pelo vendedor
- Atualizar o livro no banco de dados (UPDATE) marcando-o como posto à venda
- Disponibilizar um botão para que interessados possam entrar em contato com o vendedor
- Gerenciar livros emprestados
- Realizar a busca no banco de dados (SELECT) dos livros, filtrando somente aqueles que estão emprestados
- Exibir o resultado da pesquisa em uma página
- Prorrogar data de devolução
- Exibir formulário para receber a mensagem de prorrogação e a quantidade de dias
- Enviar solicitação via e-mail para o dono do livro
- Aumentar (ou não) o prazo de devolução de acordo com a resposta do dono
- Enviar e-mail de confirmação (ou não confirmação) da prorrogação ao solicitante
- Dar feedback
- Criar atributo de créditos do usuário (positivo, negativo e neutro)
- Criar função para qualificar o usuário após um empréstimo / venda
- Qualificar solicitante e atendente do pedido de empréstimo / venda
- Opções de qualificação: prazo de entrega/devolução, estado do livro, negociação.
- Formar "lista de espera" para livros
- O usuário solicita um livro já emprestado e fica na "lista de espera" dele
- Sua posição na lista de espera é classificada tanto por data de solicitação quanto por créditos (qualificação)
- Gerar etiqueta de identificação
- Gerar um código de barras para cada livro cadastrado
- Salvar automaticamente código de barras nas informações do livro
Tarefas (para o Treinamento)
Gerais (todos devem fazer)
- Resolver os exercícios de Python no URI
- Realizar o fork do projeto no GitHub
- Fazer, pelo menos, um pull request ao projeto
- Desenhar pelo menos uma tabela do diagrama do banco de dados
- Contribuir com o desenvolvimento do projeto web final (escolher tarefa específica)
- Seguir as regras da pep-8 (bônus)
- Criar um nome mais comercial
Específicas
- Documentar o projeto
- Criar o script de teste unitário do projeto
- Implementar a busca de livros com filtros
- Implementar o CRUD de Livros
- Implementar o cadastro, login/logout e perfil do usuário
- Implementar as páginas de exibição dos livros por categoria/filtro
- Implementar o sistema de permutação
- Implementar o sistema de empréstimo
- Implementar o sistema de devolução
- Implementar o sistema de negociação de prazos
- Implementar o sistema de gerenciamento dos livros emprestados
- Implementar o sistema de multa (simples, sem gerar cobrança direta)
- Implementar o sistema de vendas (simples, sem gerar cobrança direta)
- Implementar o sistema de emails
- Criar o banco de dados
- Implementar as tabelas por meio de ORM
Requisitos não-funcionais
- Interpretador: CPython 3.4
- Framework web: Django 1.9 e Flask 0.10
- SGBD: PostgreSQL 9.4
- Versionamento: Git
- Servidor HTTP: Gunicorn 19.4
Autores
- Júlia Rizza
- Luiz Cláudio Theodoro
Colaboradores
- Eustáquio Fernandes Júnior
- Matheus Silva Santos
- Gustavo Gardusi
- Pedro Henrique da Costa Avelar
- Marc Sué Pires Morais Junior
- Kethllen Andrey Santos
Projetos Similares
OpenLibrary
O Openlibrary é um projeto de catalogação e viabilização de empréstimos e vendas de livros, totalmente gratuito, feito pela InternetArchive.
Ele é feito em Python com a api de wiki Infogami (que é baseada em web.py) e tem seu código fonte disponível no github. Há também uma página com instruções para contribuições assim como uma documentaçao para desenvolvedores. Há também o link da "central de desenvolvedores" que contém todos os acima, além de links para outras páginas e também está disponibilizado o download do banco de dados do projeto.