AppCivicoPlataforma / AppCivico

Documentação de Endpoints para acesso à plataforma de AppCivicos do TCU.
130 stars 22 forks source link

Postagem muito limitada impedindo certas features #88

Closed GabrielDViana closed 7 years ago

GabrielDViana commented 7 years ago

A aplicação Ajuda Conselheiro, tem como requisito preencher checklists (para relatórios) e anexar imagens (no caso, mandaríamos essas imagens convertidas em base64, o que gera um grade string) à essas checklists. Não está sendo possível sequer mandar a checklists pelo fato de as perguntas da checklists como um todo passarem do limite de 4000 caracteres.

SkiaBr23 commented 7 years ago

Olá @GabrielDViana,

Não está sendo possível sequer mandar a checklists pelo fato de as perguntas da checklists como um todo passarem do limite de 4000 caracteres.

Como está sendo feito o armazenamento da checklist na postagem? Caso todo o conteúdo textual da checklist seja salvo, existem formas de otimização para armazenar somente as respostas (por exemplo), evitando o estouro do limite de 4000 caracteres. A aplicação então escreveria/leria as respostas de acordo com um modelo pré-estabelecido pelo cliente. Essa é apenas uma sugestão, visto que o problema reportado é sobre falta de espaço para conteúdo textual. Na medida do possível esse limite pode ser estendido, mas apenas se realmente for a solução mais adequada.

e anexar imagens (no caso, mandaríamos essas imagens convertidas em base64, o que gera um grade string)

O metamodelo conta com um endpoint específico para upload de arquivos como conteúdo de uma postagem, documentado nesse link e testável via API do Swagger. Utilizando este serviço, arquivos de até 4mb são enviados diretamente pela requisição de forma mais prática.

Aguardo feedback das respostas.

[]'s

GabrielDViana commented 7 years ago

Como está sendo feito o armazenamento da checklist na postagem?

As perguntas e suas respectivas respostas e por serem muito grandes, uma checklist ultrapassa 4000 caracteres. Exemplo:

{question: 'De maneira geral, os cardápios são bem elaborados?', answer: false},
{question: 'De maneira geral, os cardápios são bem aceitos pelos alunos?', answer: false },
{question: 'De maneira geral, os cardápios são bem elaborados?', answer: false },
{question: 'O cardápio fica exposto para os alunos e comunidade', answer: false},
{question: 'A escola recebe doação de alimentos?', answer: false}

Obs: Essa é apenas uma pequena parte do que um checklist representa, pois são muitas perguntas.

Utilizando este serviço, arquivos de até 4mb são enviados diretamente pela requisição de forma mais prática.

O problema, é que os conselheiros tem que enviar mais de um arquivo, então a opção seria, mandar mais arquivos na seção de conteúdo binário, ou que o JSON recebesse um array com imagens em base64.

SkiaBr23 commented 7 years ago

As perguntas e suas respectivas respostas e por serem muito grandes, uma checklist ultrapassa 4000 caracteres.

Qual seria o motivo de guardar toda a pergunta por extenso no conteúdo? Acredito que repetir as perguntas pra toda checklist de todos os conselheiros geraria uma redundância desnecessária no banco. Outros aplicativos que já utilizaram a Nuvem Cívica e continham interações desse gênero mantinham uma tabela simples (do lado do cliente ou salva na própria nuvem) que identificava as perguntas possíveis e seus códigos de identificação, economizando muito espaço no momento da gravação. Algo do tipo:

Q001 : 'De maneira geral, os cardápios são bem elaborados?', Q002 : 'De maneira geral, os cardápios são bem aceitos pelos alunos?' ... Q00N : 'Texto da pergunta N'

Dessa forma, ao registrar as respostas de uma checklist, o formato seria o seguinte:

 {"question": "Q001", "answer": false},
 {"question": "Q002", "answer": 5},
 {"question": "Q003", "answer": "Excelente"},

Essa abordagem otimiza o armazenamento das respostas tanto em espaço quanto em banda consumida para o envio das informações.


O problema, é que os conselheiros tem que enviar mais de um arquivo

Realmente a requisição de envio de conteúdo binário permite que apenas 1 arquivo seja atrelado ao conteúdo. Essa limitação permite uma melhor classificação e organização dos dados salvos no banco. Porém, dentro de uma postagem, podem ser cadastrados N conteúdos de acordo com a necessidade, permitindo então anexar vários arquivos à postagem.

Peço que tentem seguir as sugestões acima. Aguardo feedback.

[]'s

SkiaBr23 commented 7 years ago

Fechando esta issue. Caso ocorra algum problema ou possível dúvida sobre o assunto, favor reabrir.