added routing to the suggested ventilation transition times

This commit is contained in:
lrdossan 2025-02-06 16:59:00 +01:00
parent 04fb99848a
commit 0237bc0c77
5 changed files with 50 additions and 11 deletions

View file

@ -284,7 +284,7 @@ CAiMIRA backend includes a REST API for programmatic interaction with its models
2. **Test the API**:
Send a `POST` request to `http://localhost:8081/virus_report` with the required inputs in the body. Example request formats can be found in the [Virus Validator Code](https://gitlab.cern.ch/caimira/caimira/blob/master/caimira/src/caimira/calculator/validators/virus/virus_validator.py#L565).
Send a `POST` request to `http://localhost:8081/virus/report` with the required inputs in the body. Example request formats can be found in the [Virus Validator Code](https://gitlab.cern.ch/caimira/caimira/blob/master/caimira/src/caimira/calculator/validators/virus/virus_validator.py#L565).
3. **Example Response**:
A successful response will return data in the following format:
@ -293,7 +293,7 @@ CAiMIRA backend includes a REST API for programmatic interaction with its models
{
"status": "success",
"message": "Results generated successfully",
"report_data": {
"results": {
...
},
...

View file

@ -17,7 +17,28 @@ def generate_report(model: CO2DataModel) -> typing.Dict:
return dict(model.CO2_fit_params())
def submit_CO2_form(form_data: typing.Dict) -> typing.Dict:
def generate_transition_times(CO2model: CO2DataModel, vent_transition_times: list) -> list:
# The entire ventilation changes consider the initial and final occupancy state change
occupancy_transition_times = list(CO2model.occupancy.transition_times)
all_vent_transition_times: list = sorted(
[occupancy_transition_times[0]] +
[occupancy_transition_times[-1]] +
vent_transition_times)
return all_vent_transition_times
def request_CO2_transition_times(form_data: typing.Dict) -> list:
data_registry: DataRegistry = DataRegistry()
form_obj: CO2FormData = generate_form_obj(form_data=form_data, data_registry=data_registry)
CO2model: CO2DataModel = generate_model(form_obj=form_obj)
vent_transition_times: list = form_obj.find_change_points()
all_vent_transition_times: list = generate_transition_times(CO2model, vent_transition_times)
return all_vent_transition_times
def request_CO2_report(form_data: typing.Dict) -> typing.Dict:
data_registry: DataRegistry = DataRegistry()
form_obj: CO2FormData = generate_form_obj(form_data=form_data, data_registry=data_registry)

View file

@ -4,7 +4,6 @@ import typing
from caimira.calculator.validators.virus.virus_validator import VirusFormData
from caimira.calculator.store.data_registry import DataRegistry
from caimira.calculator.models.models import ExposureModel
import caimira.calculator.report.virus_report_data as rg

View file

@ -3,7 +3,7 @@ import traceback
import sys
from caimira.api.routes.base_handler import BaseRequestHandler
from caimira.api.controller.virus_report_controller import submit_virus_form
from caimira.api.controller.co2_report_controller import submit_CO2_form
from caimira.api.controller.co2_report_controller import request_CO2_transition_times, request_CO2_report
class VirusReportHandler(BaseRequestHandler):
@ -22,7 +22,25 @@ class VirusReportHandler(BaseRequestHandler):
response_data = {
"status": "success",
"message": "Results generated successfully",
"report_data": report_data,
"results": report_data,
}
self.write(response_data)
except Exception as e:
traceback.print_exc()
self.write_error(status_code=400, exc_info=sys.exc_info())
class CO2SuggestionsHandler(BaseRequestHandler):
def post(self):
try:
form_data = json.loads(self.request.body)
suggestion_data = request_CO2_transition_times(form_data)
response_data = {
"status": "success",
"message": "Results generated successfully",
"results": suggestion_data,
}
self.write(response_data)
@ -35,12 +53,12 @@ class CO2ReportHandler(BaseRequestHandler):
def post(self):
try:
form_data = json.loads(self.request.body)
report_data = submit_CO2_form(form_data)
report_data = request_CO2_report(form_data)
response_data = {
"status": "success",
"message": "Results generated successfully",
"report_data": report_data,
"results": report_data,
}
self.write(response_data)

View file

@ -1,8 +1,9 @@
from caimira.api.routes.landing_routes import LandingPageHandler
from caimira.api.routes.report_routes import VirusReportHandler, CO2ReportHandler
from caimira.api.routes.report_routes import VirusReportHandler, CO2SuggestionsHandler, CO2ReportHandler
routes = [
(r"/", LandingPageHandler),
(r"/co2_report", CO2ReportHandler),
(r"/virus_report", VirusReportHandler),
(r"/co2/transition_times", CO2SuggestionsHandler),
(r"/co2/report", CO2ReportHandler),
(r"/virus/report", VirusReportHandler),
]