API and Troubleshooting¶
API Endpoints¶
flowchart LR
subgraph YearConfiguration
Y1[GET /year-configuration/{year}]
Y2[POST /year-configuration/{year}]
Y3[PATCH /year-configuration/{year}]
end
subgraph SyncJobs
S1[GET /sync/jobs/year/{year}]
S2[GET /sync/jobs/year/{year}/latest]
S3[POST /sync/dispatch]
S4[GET /sync/jobs/{jobId}/stream<br/>SSE]
S5[POST /sync/factors/{moduleId}/{dataTypeId}]
S6[POST /sync/recalculate-emissions/{moduleId}]
S7[POST /sync/units]
S8[POST /sync/jobs/{jobId}/cancel]
end
subgraph Files
F1[POST /files/temp]
F2[GET /files/{filePath}]
end Initiate Sync — POST /sync/dispatch¶
Request:
{
"ingestion_method": 1,
"target_type": 0,
"year": 2023,
"filters": {},
"config": {
"module_type_id": 1,
"data_entry_type_id": 1
},
"file_path": "/tmp/uploads/file.csv"
}
Response:
{ "job_id": 94 }
SSE Stream Update¶
{
"job_id": 94,
"module_type_id": 1,
"target_type": 0,
"year": 2023,
"state": 3,
"result": 0,
"status_message": "Job finished",
"meta": {
"rows_processed": 150,
"rows_skipped": 5,
"rows_with_factors": 145,
"rows_without_factors": 5
}
}
Troubleshooting¶
flowchart TD
Issue[Problem Reported] --> Symptom{Symptom}
Symptom -->|Year not configured| S1[Check notFound flag]
S1 --> Fix1[Ensure createConfig<br/>succeeds before refetch]
Symptom -->|Upload success<br/>but no data| S2[Check recalculationStatus]
S2 --> Fix2[Trigger recalculation<br/>for module]
Symptom -->|SSE drops| S3[Check network tab]
S3 --> Fix3[Job may complete<br/>refresh to see status]
Symptom -->|Module incomplete| S4[Check latestJobs]
S4 --> Fix4[Look for failed/warning<br/>jobs in store]
Symptom -->|Cannot copy| S5[Check previous year]
S5 --> Fix5[Must have state=FINISHED<br/>result=SUCCESS]
Symptom -->|Job stuck RUNNING| S6[Backend may have restarted]
S6 --> Fix6[Use cancel button or<br/>POST /sync/jobs/{jobId}/cancel]
Symptom -->|Common upload<br/>no status/download| S7[Check latest_common_data_job<br/>at module level in config]
S7 --> Fix7[Ensure backend enrichment<br/>includes common jobs]
Fix1 --> Resolved
Fix2 --> Resolved
Fix3 --> Resolved
Fix4 --> Resolved
Fix5 --> Resolved
Fix6 --> Resolved
Fix7 --> Resolved
Resolved[Issue Resolved] Debug Checklist¶
- Inspect store state in the browser console:
const yearConfig = useYearConfigStore();
console.log("Config:", yearConfig.config);
console.log("Not found:", yearConfig.notFound);
const dataManagement = useBackofficeDataManagement();
console.log("Sync jobs:", dataManagement.syncJobs);
-
Verify API responses: open the Network tab and filter by
year-configurationorsyncto inspect payloads. -
Check the SSE connection:
const store = useBackofficeDataManagement();
console.log("SSE Connection:", store.sseConnection);
i18n Keys¶
Page-level¶
data_management_reporting_yeardata_management_sync_units_from_accreddata_management_year_not_configureddata_management_year_not_configured_hintdata_management_create_yeardata_management_reporting_year_hintopen_year_for_usersdata_management_open_year_disabled_tooltip
Module-level¶
data_management_recalculate_emissionsdata_management_recalculation_neededdata_management_recalculation_successdata_management_recalculation_warningdata_management_recalculation_errorcommon_disabledcommon_filter_incomplete
Reduction Objectives¶
data_management_reduction_objectivesdata_management_institution_carbon_footprint_titledata_management_institution_carbon_footprint_descriptiondata_management_population_projections_titledata_management_population_projections_descriptiondata_management_unit_reduction_scenarios_titledata_management_unit_reduction_scenarios_descriptiondata_management_define_reduction_objectives_titledata_management_define_reduction_objectives_description
Uploads¶
common_upload_csvcsv_sync_completedcsv_sync_completed_with_warningscsv_sync_failedcsv_sync_success_captioncsv_sync_warnings_captioncsv_sync_connection_lostdata_management_connection_faileddata_management_no_previous_jobsdata_management_copy_faileddata_management_job_in_progressdata_management_cancel_job
Config¶
year_config_savedyear_config_save_erroryear_config_target_year_erroryear_config_percentage_erroryear_config_reference_year_error
Future Improvements¶
- Dynamic available years (currently hardcoded
MIN_YEARS = 2024) - Download reduction objective files (TODO in code)
- Batch recalculation for multiple modules
- Export year configuration
- Import year configuration from JSON
- Real-time collaboration (multiple admins)
- Audit trail for configuration changes
- Progress indicators for long-running uploads (SSE + cancel button)
- Bulk operations (enable/disable multiple modules)
- Template configurations for new years