• Geral
  • Lançada versão v2.1

tiagoalves

Endereço Mercure para publicar mensagem (onde "mercure" é o nome do host)

esse endereço será chamado internamente via o PHP

MERCURE_PUBLIC_URL=http://mercure:3000/.well-known/mercure

Endereço Mercure para consumir mensagem

esse endereço será chamado via o navegador web

MERCURE_CONSUMER_URL=http://127.0.0.1:3000/.well-known/mercure
http://(aqui vai o nome do seu computador):3000/.well-known/mercure

mas no caso se for Windows eu fiz um container só do mercure, faça um maquina no docker e roda abaixo o servidor mercure

mercure:
image: novosga/mercure:v0.11
restart: always
ports:
- "3000:3000"
environment:

same value from ports

SERVER_NAME: ":3000"

default publish key, must be changed

MERCURE_PUBLISHER_JWT_KEY: "!ChangeMe!"
MERCURE_EXTRA_DIRECTIVES: "anonymous 1; cors_origins *"

    israel7souza

    Só vi a resposta agora, já tinha feito funcionar aqui, quando abri o docker-compose eu vi que tinha errado nisso.
    Já customizei o app do painel e estou terminando de customizar o app de triagem, mas empaquei na modificação do payload da triagem. Aproveitei que já haviam os campos para envio do nome e documento e consegui fazer o post, mas a resposta vem com erro:

    Return value of Novosga\Entity\Cliente::getEndereco() must be an instance of Novosga\Entity\Endereco, null returned

    Adicionei um campo de endereço na request (mas não dá pra ficar colocando endereço no autoatendimento), e já tentei enviar de tudo: array vazio, string vazia, objeto vazio, null, mas neste caso ele retorna:

    You must define a type for Novosga\Entity\Cliente::$endereco.

    Verifiquei no código do novoSGA e em Cliente.orm.yml a entidade Endereço está integrada à Entidade Cliente sem definição de tipo e também não diz se pode ser null:

        embedded:
            endereco:
                class: Novosga\Entity\Endereco
                columnPrefix: end_

    No arquivo Endereco.orm.yml o tipo é definível como "integrável" e os campos podem ser nulos.

    Novosga\Entity\Endereco:
        type: embeddable
        fields:
            pais:
                type: string
                length: 2
                nullable: true
            cep:
                type: string
                length: 25
                nullable: true
            estado:
                type: string
                length: 3
                nullable: true
            cidade:
                type: string
                length: 30
                nullable: true
            logradouro:
                type: string
                length: 60
                nullable: true
            numero:
                type: string
                length: 10
                nullable: true
            complemento:
                type: string
                length: 15
                nullable: true

    A questão é: se a API permite a emissão de senhas sem os dados do cliente, por qual motivo ao adicionar o cliente é exigido a inserção de dados do endereço? (que aliás eu não vi em lugar algum do sistema em si)

    Enfim, já que estou com esta demanda aqui no meu órgão, estou disposto a colaborar com o desenvolvimento do sistema na medida do possível, porém não tenho tanto conhecimento das regras de negócio como você, por isso busquei ajuda aqui. 😄

      Não consigo cadastrar novo usuario: [Lotação] Lotação é utilizada para definir o perfil de acesso do usuário nas unidades.
      Onde configuro este item de LOTAÇÃO na configuração de usuario?

        tiagoalves A questão é: se a API permite a emissão de senhas sem os dados do cliente, por qual motivo ao adicionar o cliente é exigido a inserção de dados do endereço? (que aliás eu não vi em lugar algum do sistema em si)

        Permite informação apenas do nome+documento para buscar ou inserir um cliente. Esse é o mesmo payload desde versões antigas quando nem existia a entidade cliente.

        Na versão gratuita não tem muita utilidade os demais campos, mas por exemplo existe um módulo comercial para visualizar e cadastrar clientes.

          tonyferreira "Lotação" é apenas a junção de "Unidade" + "Perfil", o usuário precisa ter ao menos um perfil em pelo menos uma unidade.

          tiagoalves

          Me da uma mão no painel também não consigo vocalizar, chamando só com sinal é super rápido, mas vocalizar não chama.

            rogeriolino Já tentei de diversas formas, inclusive já encontrei o código que provoca o erro:

            You must define a type for Novosga\Entity\Cliente::$endereco.

            É no arquivo Entity.Cliente.yml do Serializer, onde está:

            Novosga\Entity\Cliente:
                properties:
                    id:
                        read_only: true
                    nome:
                        type: string
                    documento:
                        type: string

            Deveria Estar:

            Novosga\Entity\Cliente:
                properties:
                    id:
                        read_only: true
                    nome:
                        type: string
                    documento:
                        type: string
                    endereco:
                        type: array

            O problema é que isso gera o seguinte erro:

            ReflectionProperty::getValue() expects parameter 1 to be object, array given

            E no serializer não tem o tipo "object" e eu não entendo muito de symfony nem de doctrine pra saber onde que ocorre essa conversão de array pra objeto. Além disso não há nenhum log sobre isso pra me ajudar a seguir o stack trace.

            israel7souza Sobre o Painel eu fiz apenas o MVP, preciso mudar algumas coisas na página de configuração do fork que eu fiz. Foi relativamente simples, em algumas horas já estava funcionando. Como sou de um órgão da segurança publica vou ter que mudar algumas coisas antes de publicar no github.

            Quando estiver validado, se possível posso fazer um PR no projeto original e lançar uma release nova.
            É claro que tá tudo bem desatualizado mas pelo menos algumas funções como a vocalização e o chamado pelo nome já estariam disponíveis.

            Update:
            Resolvi o problema (aparentemente)

            Ao invés de declarar o tipo específico (string, array, etc) no serializer, o mesmo deve ser a entidade (que é um objeto):

            Novosga\Entity\Cliente:
                properties:
                    id:
                        read_only: true
                    nome:
                        type: string
                    documento:
                        type: string
                    endereco:
                        type: Novosga\Entity\Endereco

            Nesse caso é só mandar um objeto vazio no lugar do endereço no JSON que ele vai retornar com a senha:

            {
            	"unidade": $unidade,
            	"servico": $servico,
            	"prioridade": $prioridade,
            	"cliente": {
            		"nome": "$nome",
            		"documento": "$documento",
            		"endereco": {}
            	}
            }

            Estou fazendo testes aqui mas aparentemente deu certo.

              israel7souza
              Qual ambiente tu subiu esse novoSGA? Docker? Windows?
              Já viu a questão da configuração do Mercure (no painel v2.1 não funciona se o mercure não estiver configurado direito).

              Testa na última release v2.0.1 (eu testei web e desktop e funcionou nas duas), o chamado vai demorar pra cair no painel, se chamar é problema no mercure mesmo pois essa versão usa o socket.io.

                tiagoalves

                Eu uso wamp server no Windows, para o novosga e para o mercure rodo um docker somente com docker.

                tiagoalves
                A release panel-app v2.0.1 não tem conexão com mercure.
                Somente a panel-app v2.1 foi realizado o Removing socketio, adding support for mercure.
                Demora muito a comunicação com a a versão 2.0.1 do painel
                Quando coloco somente para chamar pelo sons do painel de atenção, fica rápido demais a resposta é imediata, mas se eu coloco a vocalização não chama panel-app v2.1.

                  israel7souza

                  israel7souza Quando coloco somente para chamar pelo sons do painel de atenção, fica rápido demais a resposta é imediata, mas se eu coloco a vocalização não chama panel-app v2.1.

                  Chama a senha no painel mas não vocaliza? Isso que você quer dizer?

                  Eu implementei a vocalização de forma manual (não usei o checkbox).

                    5 dias depois

                    israel7souza Então, quando eu terminar a customização pro meu órgão vou fazer uma PR pra disponibilizar a versão com as funcionalidades.