soundcollect's People
soundcollect's Issues
Observations
Sound types
@JohanaSfC do sound types need to be in CAT? now its ENG
Create Postman collection for observations
- index
- store
- show
- update
- destroy
Translate sound into parameters
add MatLab package "signal processing toolbox" throu CLI into MatLab docker image
empty array vs NULL value for images
Database should save empty array "[]" instead of NULL if there are no images associated with the observation
PDF to Swagger switch
@CarlosMillanSfC can you check if the transition is done correctly? this will also be the way to document OdourCollect in the future.
would you be able to get this done this week? idea is to review URLs, header-body-path parameters and response bodies.
pdf: https://docs.google.com/document/d/1yjSKpc9hoHJ1c8A-Kn9naf2hQ9slXtWsDDJ1pe2CT_8/edit#heading=h.g3gv9a5rdep6
swagger: https://app.swaggerhub.com/apis-docs/science_for_change/SoundCollect/2.0.1
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
create soundcollect contact email
create [email protected] email for 'privacy policy' page in the app
Request
Create the Form Request Clases for validaton and authorization
API documentation
the API documentation refers to 422 and 500 errors besides 200, when are the 422 and 500 created?
better said: how to manually invoke them? 422 and 500 are not defined in the code right? are they created automatically by Laravel when exception occurs?
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](https://private-user-images.githubusercontent.com/83076037/307008939-5d2eafe1-3914-4435-88b3-8b9229d1a531.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM5ODg1NTUsIm5iZiI6MTcyMzk4ODI1NSwicGF0aCI6Ii84MzA3NjAzNy8zMDcwMDg5MzktNWQyZWFmZTEtMzkxNC00NDM1LTg4YjMtOGI5MjI5ZDFhNTMxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODE4VDEzMzczNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThiOTFiNTM2YWM4YTczZjMxNzkyY2RlMGZiY2UyNDVlOTQyOWJjNDNlYzhmNGVmM2Y2NzYyMWQ4NGY0MjMzZmEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.gBSY-IIWSkKfVJTwlcCqpPY_ElMvkTC7iKQv5-BGdEg)
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
Email on first registration
Email does not show up after first registration.
connect to remote server
can you connect to remote server and copy .WAV file into it? from Laravel I mean @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
User registration
What do we need to get user registration done with 4 digit pin?
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.
Migration
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? M2102J20SGChatGPT
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...)
SoundCollect picture uploads
what are the guidelines for a picture upload? what are the restrictions?
do we hide only faces? nude content? violence? @JohanaSfC
@CarlosMillanSfC can you investigate what are available products/API calls?
https://www.edenai.co/post/top-10-explicit-content-detection-apis
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
Restrict users under 14
can you add age restriction for users under 14 pls? we need it for declaration of Google Play terms @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
Flask server bypasing Laravel
Flask must bypass Laravel server and receive direct requests from the app.
Laeq floating to integer
Change Laeq, Lmin, L90... from floating point to integer in database, code and fronted.
Database answers table
Database needs answers table to store possible answers to psychoacoustic questions.
Guardar observación con segmentos
Cuando se guarda la observación, también se tiene que guardar los segmentos.
También hay 3 nuevos parámetros que se incluirán en cada segmento: 'freq_3', 'spec_3' y 'spec_3_dB'
@CarlosMillanSfC
leer el manual que ha creado johana
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.