diff --git a/modules/interfaces/interfaceTicketObjects.py b/modules/interfaces/interfaceTicketObjects.py index d65e3457..3df6464f 100644 --- a/modules/interfaces/interfaceTicketObjects.py +++ b/modules/interfaces/interfaceTicketObjects.py @@ -509,7 +509,28 @@ class TicketSharepointSyncInterface: def _create_csv_content(self, data: list[dict]) -> bytes: """Create CSV content with 4-row structure matching reference code.""" if not data: - return b"" + # Build an empty table with the expected columns from schema + cols = list(self.task_sync_definition.keys()) + + df = pd.DataFrame(columns=cols) + + # Row 1 & 2: keep your current banner lines + header_row1 = pd.DataFrame( + [["Header 1"] + [""] * (len(cols) - 1)], columns=cols + ) + header_row2 = pd.DataFrame( + [["Header 2"] + [""] * (len(cols) - 1)], columns=cols + ) + + # Row 3: table headers + table_headers = pd.DataFrame([cols], columns=cols) + + final_df = pd.concat( + [header_row1, header_row2, table_headers, df], ignore_index=True + ) + csv_text = StringIO() + final_df.to_csv(csv_text, index=False, header=False) + return csv_text.getvalue().encode("utf-8") # Create DataFrame from data df = pd.DataFrame(data)