diff --git a/dashboard/backend/db/opc_db.py b/dashboard/backend/db/opc_db.py index 147a222..f74423f 100644 --- a/dashboard/backend/db/opc_db.py +++ b/dashboard/backend/db/opc_db.py @@ -365,11 +365,20 @@ async def update_task( task = dict(row) task["tags"] = json.loads(task["tags"]) if task["tags"] else [] + # Convert datetime objects to ISO format strings for JSON serialization + old_values_for_history = old_values.copy() + updates_for_history = updates.copy() + for key in ["created_at", "updated_at", "completed_at", "due_date"]: + if old_values_for_history.get(key): + old_values_for_history[key] = old_values_for_history[key].isoformat() + if updates_for_history.get(key): + updates_for_history[key] = updates_for_history[key].isoformat() + # Log history await conn.execute(""" INSERT INTO task_history (task_id, action, actor, actor_type, old_value, new_value) VALUES ($1, $2, $3, $4, $5, $6) - """, task_id, "updated", actor, "human", json.dumps(old_values), json.dumps(updates)) + """, task_id, "updated", actor, "human", json.dumps(old_values_for_history), json.dumps(updates_for_history)) return task diff --git a/dashboard/backend/routers/opc_tasks.py b/dashboard/backend/routers/opc_tasks.py index f099ce2..fa7f06b 100644 --- a/dashboard/backend/routers/opc_tasks.py +++ b/dashboard/backend/routers/opc_tasks.py @@ -221,7 +221,7 @@ async def move_task( await opc_db.stop_time_entry(task_id=task_id) if move.status == "done": - updates["completed_at"] = datetime.utcnow() + updates["completed_at"] = datetime.utcnow().replace(tzinfo=None) updated_task = await opc_db.update_task( task_id=task_id,