allowing different date time formats. see #737

This commit is contained in:
Mic 2026-04-10 01:01:00 +02:00
parent e29974af14
commit c625f2f351
2 changed files with 27 additions and 2 deletions

View file

@ -31,6 +31,7 @@ import {
getMailSubject, getMailSubject,
getTagsList, getTagsList,
extractJsonObject, extractJsonObject,
normalizeDateTimeString,
convertNewlinesToBr, convertNewlinesToBr,
cleanupNewlines, cleanupNewlines,
checkIfTagLabelExists, checkIfTagLabelExists,
@ -333,6 +334,13 @@ export class mzta_Menus {
taWorkingStatus.stopWorking(); taWorkingStatus.stopWorking();
return {ok:'0'}; return {ok:'0'};
} }
// Normalize date strings returned by the LLM
if (calendar_event_data_obj.startDate) {
calendar_event_data_obj.startDate = normalizeDateTimeString(calendar_event_data_obj.startDate);
}
if (calendar_event_data_obj.endDate) {
calendar_event_data_obj.endDate = normalizeDateTimeString(calendar_event_data_obj.endDate);
}
// Timezone management // Timezone management
calendar_event_data_obj.use_timezone = false; calendar_event_data_obj.use_timezone = false;
if(prefs_at.calendar_enforce_timezone){ if(prefs_at.calendar_enforce_timezone){
@ -405,10 +413,17 @@ export class mzta_Menus {
let task_data_obj = {}; let task_data_obj = {};
try{ try{
task_data_obj = extractJsonObject(task_data); task_data_obj = extractJsonObject(task_data);
if (!task_data_obj.dueDate || isNaN(Date.parse(task_data_obj.dueDate)) || task_data_obj.dueDate == '' ) { // Normalize date strings returned by the LLM
if (task_data_obj.dueDate) {
task_data_obj.dueDate = normalizeDateTimeString(task_data_obj.dueDate);
}
if (task_data_obj.InitialDate) {
task_data_obj.InitialDate = normalizeDateTimeString(task_data_obj.InitialDate);
}
if (!task_data_obj.dueDate) {
delete task_data_obj.dueDate; delete task_data_obj.dueDate;
} }
if (!task_data_obj.InitialDate || isNaN(Date.parse(task_data_obj.InitialDate)) || task_data_obj.InitialDate == '' ) { if (!task_data_obj.InitialDate) {
delete task_data_obj.InitialDate; delete task_data_obj.InitialDate;
} }
}catch(err){ }catch(err){

View file

@ -645,6 +645,16 @@ export function extractJsonObject(inputString) {
} }
} }
export function normalizeDateTimeString(str) {
if (!str || typeof str !== 'string') return null;
str = str.trim();
// Accept any non-digit separator (or none) between date/time components
const match = str.match(/^(\d{4})\D?(\d{2})\D?(\d{2})\D?(\d{2})\D?(\d{2})\D?(\d{2})(Z?)$/);
if (!match) return null;
const [, y, mo, d, h, mi, s, z] = match;
return `${y}${mo}${d}T${h}${mi}${s}${z}`;
}
export function isAPIKeyValue(id){ export function isAPIKeyValue(id){
return id.endsWith('_api_key'); return id.endsWith('_api_key');
} }