| (26 revisões intermediárias por 7 usuários não estão sendo mostradas) | |||
| Linha 10: | Linha 10: | ||
= Requisitos Funcionais = | = Requisitos Funcionais = | ||
<br> | <br> | ||
# CRUD de Livros ''(Júlia)'' | |||
## Criar uma página para cada operação do CRUD | |||
## Verificar se o usuário tem permissão para realizar a operação | |||
# CRUD de Usuário ''(Júlia)'' | |||
## Criar uma página para cada operação do CRUD | |||
## Verificar se o usuário tem permissão para realizar a operação | |||
# Buscar livros disponíveis para empréstimo ''(''Gustavo'')'' | |||
## 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, valor, gênero ou popularidade | |||
## Permitir múltiplos filtros simultaneamente | |||
## Exibir o resultado da pesquisa em uma página | |||
# Reservar livro disponível ''(''Gustavo'')'' | |||
## Exibir somente livros disponíveis | |||
## Página para reserva de livros | |||
## Requerir um livro não disponível | |||
# Avisar de datas para devolução (Marc Sué) | |||
## Enviar e-mail / sms de aviso um dia antes da data de devolução | |||
# Capturar ISBN do livro (Marc Sué) | |||
## 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 (Pedro) | |||
## Realizar a busca no banco de dados (SELECT) dos gêneros que o usuário possui | |||
## Para cada estante. realizar a busca no banco de dados (SELECT) dos livros que pertencem aquele gênero | |||
## Exibir o resultado da pesquisa em uma página | |||
# Permutar livros (Luana) | |||
## Informar uma lista de usuários que desejam trocar livro(s) que não possuem, por outro(s) possuem | |||
# Emprestar livros (<strike>Luana</strike>) (Marc Sué) | |||
## Catálogo de livros dos usuários | |||
## Informar endereço do usuário que está pedindo o livro, o tempo que o deseja ter e a reputação atual do usuário | |||
## Calcular frete, emitir etiqueta, informar prazo para devolução (além do tempo de entrega) | |||
# Devolver livros (Ademar) | |||
## Informar endereço de retorno ao dono do livro | |||
## Calcular frete e emitir etiqueta para devolução | |||
## Qualificar usuário pelo empréstimo e pela devolução | |||
#Vender livros (Mateus) | |||
## 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 (Leonardo) | |||
## Realizar a busca no banco de dados (SELECT) dos livros, filtrando para ter como resultado 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 | |||
# Qualificar usuário | |||
## 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 | |||
#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 | |||
<br> | |||
= 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 = | = Requisitos não-funcionais = | ||
| Linha 18: | Linha 106: | ||
* '''Versionamento''': Git | * '''Versionamento''': Git | ||
* '''Servidor HTTP''': Gunicorn 19.4 | * '''Servidor HTTP''': Gunicorn 19.4 | ||
<br> | |||
= Autores = | |||
<br> | |||
* Júlia Rizza | |||
* Luiz Cláudio Theodoro | |||
<br> | |||
= Colaboradores = | |||
<br> | |||
* 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 [https://openlibrary.org/ Openlibrary] é um projeto de catalogação e viabilização de empréstimos e vendas de livros, totalmente gratuito, feito pela [https://archive.org/ 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 [https://github.com/internetarchive/openlibrary github]. Há também [https://openlibrary.org/dev/docs/committing uma página com instruções para contribuições] assim como uma [http://code.openlibrary.org/en/latest/ documentaçao para desenvolvedores]. Há também o link da [https://openlibrary.org/developers "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. | |||
Edição atual tal como às 17h52min de 30 de setembro de 2016
Escopo
- Aplicação web voltada para o empréstimo e controle de livros dos usuários.
- Poderão ser cadastrados todos os livros que o usuário possui ou que ele deseja adquirir
- Poderá ser solicitado o empréstimo de livros de outros usuários, emprestar seus próprios livros e gerenciar todos os empréstimos por categorias como: tempo, conservação, proximidade, etc.
- Haverá pontuação de acordo com os empréstimos realizados de forma a ser qualificado publicamente.
Requisitos Funcionais
- CRUD de Livros (Júlia)
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- CRUD de Usuário (Júlia)
- Criar uma página para cada operação do CRUD
- Verificar se o usuário tem permissão para realizar a operação
- Buscar livros disponíveis para empréstimo (Gustavo)
- 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, valor, gênero ou popularidade
- Permitir múltiplos filtros simultaneamente
- Exibir o resultado da pesquisa em uma página
- Reservar livro disponível (Gustavo)
- Exibir somente livros disponíveis
- Página para reserva de livros
- Requerir um livro não disponível
- Avisar de datas para devolução (Marc Sué)
- Enviar e-mail / sms de aviso um dia antes da data de devolução
- Capturar ISBN do livro (Marc Sué)
- 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 (Pedro)
- Realizar a busca no banco de dados (SELECT) dos gêneros que o usuário possui
- Para cada estante. realizar a busca no banco de dados (SELECT) dos livros que pertencem aquele gênero
- Exibir o resultado da pesquisa em uma página
- Permutar livros (Luana)
- Informar uma lista de usuários que desejam trocar livro(s) que não possuem, por outro(s) possuem
- Emprestar livros (
Luana) (Marc Sué)- Catálogo de livros dos usuários
- Informar endereço do usuário que está pedindo o livro, o tempo que o deseja ter e a reputação atual do usuário
- Calcular frete, emitir etiqueta, informar prazo para devolução (além do tempo de entrega)
- Devolver livros (Ademar)
- Informar endereço de retorno ao dono do livro
- Calcular frete e emitir etiqueta para devolução
- Qualificar usuário pelo empréstimo e pela devolução
- Vender livros (Mateus)
- 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 (Leonardo)
- Realizar a busca no banco de dados (SELECT) dos livros, filtrando para ter como resultado 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
- Qualificar usuário
- 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
- 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.