Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modelagem e implementação dos Pontos de Coleta #9

Closed
viniarck opened this issue Nov 3, 2015 · 8 comments
Closed

Modelagem e implementação dos Pontos de Coleta #9

viniarck opened this issue Nov 3, 2015 · 8 comments

Comments

@viniarck
Copy link
Contributor

viniarck commented Nov 3, 2015

@Vido e @alexandre pretendo começar o model e view do django app para os "pontos" (pontos de coleta).

Vou fazer a seguinte modelagem:

class PontosDeColeta(models.Model):

"""
Class used for modeling a instance of Pontos de Coleta in our DB.
by default, this table will be addressed as pontosdecoleta_pontosdecoleta
"""
# id = django default id...
name = models.CharField(max_length=200, default='')
type = models.CharField(max_length=30, default='')
latitude = models.FloatField(default=0.0)
longitude = models.FloatField(default=0.0)

A principio estes seriam os atributos mínimos de acordo com nossos dados existentes na pasta data para os pontos.sql.

Será que não seria interessante colocar também no nosso DB, informações de horário de funcionamento e telefone destes estabelecimentos?

Imagino que estas informações seriam interessante caso o Usuário/Carroceiro, vai fazer o deposito no lugar ele poderia saber o horário de antemão, ou até mesmo ligar para o estabelecimento para questionar alguma coisa. Talvez o telefone seja preciosismo mas imagino que se conseguissemos o horário de funcionamento e dias de funcionamento seria interessante.

@Vido , eu vi que varios dos nosso registros nos pontos.sql o nome deles são "type" imagino que é informação incoerente ou incompleta. Você poderia checkar com o pessoal do PIMP para atualizar os dados? ou fornecer uma fonte confiável?

Aguardo o retorno para continuar o desenvolvimento deste model e view.

@fernandobalm
Copy link
Contributor

Vinícius, 

Concordo com suas observações, sobre os dados a incluir. Se incluir o telefone, talvez seja interessante incluir também a pessoa de contato. Não seria interessante o endereço por extenso, mesmo já existindo a latitude e a longitude? Não seria interessante o tipo de material recebido (lixo eletrônico, óleo, plástico, papel, borracha, etc.) 1-> N? E talvez o preço pago por cada item? Ou estou inchando muito o db? 

Abraços!

Fernando Barreto de Almeida
mailto: [email protected]
http://fernandobalm.xpg.com.br
Telefone: 55 - 11 - 33410224
São Paulo - SP - Brasil

From: Vinicius Arcanjo
Sent: Tuesday, November 3, 2015 8:09 PM
To: PimpAPP/pimpapp-api
Subject: [pimpapp-api] Modelagem e implementação dos Pontos de Coleta (#9)

@Vido e @alexandre pretendo começar o model e view do django app para os "pontos" (pontos de coleta).

Vou fazer a seguinte modelagem:

class PontosDeColeta(models.Model):

"""
Class used for modeling a instance of Pontos de Coleta in our DB.
by default, this table will be addressed as pontosdecoleta_pontosdecoleta
"""

id = django default id...

name = models.CharField(max_length=200, default='')
type = models.CharField(max_length=30, default='')
latitude = models.FloatField(default=0.0)
longitude = models.FloatField(default=0.0)
A principio estes seriam os atributos mínimos de acordo com nossos dados existentes na pasta data para os pontos.sql.

Será que não seria interessante colocar também no nosso DB, informações de horário de funcionamento e telefone destes estabelecimentos?

Imagino que estas informações seriam interessante caso o Usuário/Carroceiro, vai fazer o deposito no lugar ele poderia saber o horário de antemão, ou até mesmo ligar para o estabelecimento para questionar alguma coisa. Talvez o telefone seja preciosismo mas imagino que se conseguissemos o horário de funcionamento e dias de funcionamento seria interessante.

@Vido , eu vi que varios dos nosso registros nos pontos.sql o nome deles são "type" imagino que é informação incoerente ou incompleta. Você poderia checkar com o pessoal do PIMP para atualizar os dados? ou fornecer uma fonte confiável?

Aguardo o retorno para continuar o desenvolvimento deste model e view.


Reply to this email directly or view it on GitHub.


Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus

@viniarck
Copy link
Contributor Author

viniarck commented Nov 4, 2015

@fernandobalm , ideia fantástica essa dos preços. Desta forma, um carroceiro poderia maximizar os lucros de acordo com o tipo de mercadoria que ele tem. Mas, em contrapartida, manter os preços e os telefones, significa que alguém deverá ser responsável por ficar atualizando (talvez mensalmente?) estes preços e telefones? Afinal, preços variam frequentmente e telefones eventualmente poderão mudar. Mas, de qualquer forma excelente ideia, acredito que poderiamos implementar como um "enhancement" em um segundo momento.

Bom, acredito que parar ser mais realista e pé no chão por enquanto, vou implementar o mínimo para esta issue, e no futuro podemos acrescentar novas funcionalidades (telefone, preços, horários de atendimento)

@Vido , então para este momento precisamos somente confirmar com o pessoal do PIMP, sobre esta questão dos nomes com "type" (que me parecem pontos incompletos). De antemão seria interessante se o pessoal do PIMP já sinalizasse o que seria possível de adicional eles obter destes pontos, desta maneira eu já adicionaria neste mesmo sprint.

Todos de acordo? aguardo o OK para iniciar o sprint.

@Vido
Copy link
Member

Vido commented Nov 4, 2015

@viniciusarcanjo,
Dentro do contexto desta modelagem de dados.
Qual a diferença entre PontosDeColeta e um Carroceiro?

@viniarck
Copy link
Contributor Author

viniarck commented Nov 4, 2015

@Vido, no meu entendimento PontosDeColeta e Carroceiro sao duas aplicacoes django (database) distintos. Por isto imaginei que o mais coerente seria criar um django app para o Pontos De Coleta, pelo meu entendimento este seria um modelo tambem, o qual teria a sua view. Caso eu enterpretei algo errado me avise.

Em relacao a esta modelagem, de acordo com os dados que temos no DB, a unica distincao entre ambos eh que carroceiro possui "address" e PontosDeColeta possui "type", mas conceitualmente seriam entidades/databases para propositos distintos, uma representa um Ponto de Coleta enquanto a outra representa um Carroceiro (embora tenham suas similaridades devido a nossa aplicacao simples).

@viniarck
Copy link
Contributor Author

viniarck commented Nov 4, 2015

hmm @Vido, acho que entendi seu ponto relendo novamente a especificação na issue #1 . Do ponto de vista da aplicação consumer, Carroceiro e Pontos De Coleta seriam praticamente a mesma coisa, Mas, ainda sim confesso que estou confuso em relação se faz sentido a separação, apesar das similaridades. Qual sua sugestão? Valeu!

@fernandobalm , você teria alguma sugestão também?

@fernandobalm
Copy link
Contributor

Prezados,

Atendo—me somente ao conceito, creio que são entidades diferentes. Carroceiro parece a mim ser uma pessoa, que tem nome, idade, cor, sexo, renda, capacidade de carga, área de atuação, etc, atributos que podem num primeiro momento não ser úteis, mas que se for pensada numa aplicação futura mais completa e complexa, podem servir para traçar políticas de atendimento, políticas sociais, direcionamento de coletas, relatórios gerenciais, marketing, etc. Já um ponto de coleta para mim é um local físico, que pode estar associado a uma pessoa jurídica ou não, possui endereço, tipo de material aceito, horário de funcionamento, preço pago por material, etc, que analogamente pode ser útil futuramente para o usuário escolher onde, o que e quando descartar. 

Se fizermos tudo numa entidade só agora, no futuro, se for desejado um tratamento específico diferenciado para carroceiros e pontos de coleta imagino que estaremos amarrados e teremos que dar um nó, talvez carregando isto por toda a vida do sistema ou tendo que fazer uma cirurgia nele que pode ser traumática com dados já em produção. Se separarmos agora, ainda que na aplicação atual sejam muito semelhantes, estamos deixando pronta a estrutura para crescimento escalável e flexível, com menor impacto em produção.

Imagino que cada um deles, além dos métodos padrão, teriam métodos específicos, como por exemplo, LocalizaCarroceiro, que poderia permitir ao usuário descartador escolher baseado não só na localização, mas eventualmente em alguma característica do carroceiro que ele queira incentivar.

Mas devo ressaltar que não tive tempo ainda de estudar a aplicação e somente vi aquela apresentação inicial exibida pelo Lucas no dia da conferências. Assim, estou guiando-me apenas pelo conceito do que podem significar estas entidades. Se eu estiver fora de contexto, desconsiderem o que falei.

Qualquer questão basta falarem.

Abraços!

Fernando Barreto de Almeida
mailto: [email protected]
http://fernandobalm.xpg.com.br
Telefone: 55 - 11 - 33410224
São Paulo - SP - Brasil

From: Vinicius Arcanjo
Sent: Wednesday, November 4, 2015 9:48 PM
To: PimpAPP/pimpapp-api
Cc: Fernando Barreto de Almeida
Subject: Re: [pimpapp-api] Modelagem e implementação dos Pontos de Coleta (#9)

hmm @Vido, acho que entendi seu ponto relendo novamente a especificação na issue #1 . Do ponto de vista da aplicação consumer, Carroceiro e Pontos De Coleta seriam praticamente a mesma coisa, Mas, ainda sim confesso que estou confuso em relação se faz sentido a separação, apesar das similaridades. Qual sua sugestão? Valeu!

@fernandobalm , você teria alguma sugestão também?


Reply to this email directly or view it on GitHub.


Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus

@Vido
Copy link
Member

Vido commented Nov 5, 2015

Sobre dos Dados:

Só esclarendo:

  • O arquivo long_lat_pimp_carroceiros_app.sql contem apenas Catadores/Carroceiros do projeto Pimp. Esta base foi fornecida pelo Mundano do Pimp. Esta base compreende apenas as cidade de São Paulo
  • O outro arquivo pontos.sql aparentemente trata apenas de 'pontos de coleta'. Eu acredito que esta base foi puxada de algum lugar da internet. Mas eu não conheço a origem desta base. Acredito que ela compreende os pontos do Brasil.

Sobre os Models:

@fernandobalm, sim eu conconrdo. No mundo real existe PontosDeColeta e Carroceiro. Um é uma Organização e outro é um Individuo. Mas para quem vai usar o App, isso importa?

Vou fazer uma tabelinha para comprar os dados das bases:

Atributo x Base Carroceiro Ponto de Coleta
name Sim Sim
phone SIm Não, mas poderia ter
address SIm Não, mas o Ponto tem um endereço
latitude, longitude Sim Sim
tipo Não, mas poderia ter Sim
tipo_de_material Não, mas deveria Não, mas deveria

@fernandobalm, com relação a cirurgia traumática, as opções aqui são as seguintes:

  • Separar, e desde já criar entropia no código, esperando que no futuro esta descisão atenda as necesidades que ainda não conhecemos.
  • Manter as duas entidades juntas, mas diferenciadas pelo type. Lidaremos com a entropia apenas quanto houver vantagens concretas para a mudança.

Logo, usando o princípio YAGNI (You aren't gonna need it), não vejo motivo de se ter um model apenas para PontosDeColeta e outro apenas Carroceiro. O que vamos criar são lógicas duplicadas e tratamentos para juntar duas coisas em uma.

@viniarck
Copy link
Contributor Author

viniarck commented Nov 5, 2015

@Vido, obrigado pelo esclarecimento.

Vou utilizar esta issue entao para ajustar o script para inserir os pontos.sql no mesmo db do Carroceiro e como voce disse, serao diferenciados pelo type.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants