Giter VIP home page Giter VIP logo

soundcollect's People

Contributors

carlosmillansfc avatar otarioboladzesfc avatar sysadminsfc avatar

Watchers

 avatar  avatar

soundcollect's Issues

Creación de usuarios

Para la creación de usuarios entiendo que es el registro de nuevos usuarios, quizá después sea crearlos desde el dashboard o así pero no lo sé.

Controller

Controller for the CRUD of observations

Request

Create the Form Request Clases for validaton and authorization

Guardar nombre del método con que han calibrado dispositivo

añadir "calibration_method" columna a la tabla de usuarios que será 'foreign_key', para guardar el método con qué han calibrado el dispositivo.

Tabla 'calibration_methods' tendrá siguiente información:

id, name
1, sonometro
2, microfono exterior
3, dispositivo calibrado
4, sin referencia

"calibration_method" referirá a 'id' de la tabla 'calibration_methods'.

"calibration_method" puede tener valor NULL, onUpdate->cascade, onDelete->restrict

API Routes for observations

When designing the CRUD of the observations I need to implement the routes as well and define the name, prefix, middlewares, etc.

Parámetros acústicos

@OtariOboladzeSfC @CarlosMillanSfC
Después de la reunión de validación con la Generalitat (22/02/2024), se determinó que en esta pantalla:

image

La información se presentará de la siguiente manera:

  • LAeq, nivell de pressió equivalent en ponderació A
  • LAeq,T: Nivell de pressió equivalent per un interval de mesura T en ponderació A (la ponderació A és un mètode per ajustar i coincidir els mesuraments amb el llindar de sensibilitat de l’oïda humà, en les seves freqüències).
  • LAmax: Nivell de pressió màxim mesurat en ponderació A.
  • LAmin: Nivell de pressió mínim mesurat en ponderació A.
  • L90: Nivell de pressió sonora excedit el 90% del temps.
  • L10: Nivell de pressió sonora excedit el 10% del temps.
  • Dentro de un menú comprimido en la misma pantalla (solo se desplegará si la persona usuaria hace click): Sharpness (S), Loudness (N), Roughness (R), Fluctuation Strength (F).

La información para calcular cada parametro esta en este documento que ha subido ICR al drive: https://drive.google.com/file/d/1yuEdJ4rvetj71Ixr4XPWkQ0_23luppuv/view?usp=sharing

Reset-password endpoint

Hay que comprobar si este endpoint funciona correctamente:

Route::post('/reset-password', \App\Http\Controllers\Auth\NewPasswordController::class)
->middleware(['guest:sanctum'])
->name('password.store');

add terms and conditions page

google play store nos pide tener una pagina para Terms and Conditions, he añadido una tura en Web de laravel pero no funciona, puedes ver porque? o hacemos un api endpoint para Terms? @CarlosMillanSfC

Idioma registros que buscar por el mapa

Cuando miras una ubicación registrada del mapa interactivo, en la categoría “Tipus de so”, sale “Natural sounds” → debería salir en CATALÁN

Paso a Paso
Al moverme por el mapa interactivo del inicio y acceder a uno de los sitios registrados, al abrir la información sale alguna parte en inglés

correct timestamp on observations

sound observations have 2 hour offset on timestamp, even though the server is located in Frankfurt Germany that are on the same timezone as Barcelona Spain.

Get info of the device uploading a sound.

Oto me pidió que buscara de dónde sacar información sobre el dispositivo que subía el sonido para imagino poder sacar info del hardware del mismo (micrófono y eso) y así poder calibrar el sonido que ha subido de una forma más precisa.

Lo primero que pensamos fue en el objeto request de la petición que envía en sus cabeceras metadatos como la IP y otros, un ejemplo sacado de postman sería:

Accept: application/json
Content-Type: multipart/form-data; boundary=--------------------------504027672992432765525468
Authorization: Bearer 61|AKrFut7vh0kZm5gn4LEfR7CPAW3eOjG6t3dbk4Zl110286c9
User-Agent: PostmanRuntime/7.36.3
Cache-Control: no-cache
Postman-Token: 9c062c0f-167a-4c49-b6d7-cc97a1a6cb92
Host: soundcollectapp.com
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 1008458

De aquí el que más creo que podría servirnos es la cabecera "User-Agent" que desde pc yo sé que envía datos del navegador (estilo versión, cual, etc.) y quería ver desde el móvil.

Puse unos logs en producción para sacar info de esa cabecera y me da esto:

[2024-03-07 11:53:39] production.ALERT: Mozilla/5.0 (Linux; Android 12; M2102J20SG Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/122.0.6261.64 Mobile Safari/537.36

(en producción porque claro, tengo que ver qué cabeceras se envían desde el móvil y así comprobar lo más acorde al caso de uso posible).

De esa cadena de datos la más interesante parece ser: M2102J20SG que al buscar en google veo que es como un "identificador de dispositivio", según chatGPT

YO
what does this mean in a phone? M2102J20SG

ChatGPT
The code "M2102J20SG" appears to be a model or device identification number for a mobile phone. However, without additional context, it's challenging to provide specific information about the device. Phone model codes are typically used by manufacturers to distinguish between different variations or versions of their devices.

If you have more details or context about the phone or the brand it belongs to, I may be able to provide more information. Alternatively, you can search online using the model code along with the brand name to find specific details about the phone.

Después de hablar con Oto confirmamos que es una info que nos sirve y veremos si hay una API que al pasar este dato nos devuelva info del dispositivo (con tener la marca ya sería lo mínimo suficiente) y de momento he encontrado esta:
https://deviceinfohw.ru/devices/

Implementar lógica is_expert en usuarios

En relación a la issue ScienceForChange/SoundCollect_dashboard#30

Según he visto en un documento hay una lógica ya pensada para saber cuando un usuario es experto y cuando no:

https://docs.google.com/document/d/1JIFflHnbWOXS4FcMta-ZuBiKqobn3Ts2XTi54jUO8Io/edit

  • A Través de gamificación - si acumularán más que 21 puntos
  • A través de base de datos - si datos personales tiene campo “is_expert=true”

En la app en servidor se calculan y devuelven los puntos en memoria, al hacer la petición:
https://soundcollectapp.com/api/observations?with-levels=true

Actualizo el campo is_expert del usuario si su nivel es mayor que 21.

sound observations

I'll put the main parameters of the sound observation here for the reference:

  • Acoustics (from sound to fixed parameters)
  • Psycho-acoustic (general questions about space perceptions by users)
  • Meta (pictures, weather, location...)

conectar a ec2 python url

es posible conectar desde laravel a ec2 donde hay python para ejecutar un script de bash?

hay que ejecutar "docker run -ti --rm -p 80:5000 -v .:/flask-simple-app flask-server:0.4 " antes de que se realiza traducir sonidos a parametros.

Hay alguna libreria de Laravel que nos permite usar SSH? @CarlosMillanSfC

Model

Create the model for Observations

save sounds temporarily

can you save sounds with the user name or email on the server temporarily? for sound calibration pilot day we need to save sounds with the user identifiers.
sample: user_123 converted sounds to parameters and server saved all sounds as:

  • user_123_sound_1
  • user_123_sound_2
  • user_123_sdrgisughnsiugh

only for a pilot days, which will be 6 in total within 4 months.
@CarlosMillanSfC

Change int id for uuid id

Es mala práctica exponer id auto-incrementales. Es una falla de seguridad que puede ser explotada, especialmente si la API es pública

Verify-email endpoint

Hay que comprobar si este endpoint funciona correctamente:

Route::post('/verify-email', \App\Http\Controllers\Auth\VerifyEmailController::class)
->middleware(['throttle:6,1'])
->name('verification.verify');

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.