Update main.py
Browse files
main.py
CHANGED
|
@@ -234,12 +234,38 @@ def generate_sozo_report(project_id):
|
|
| 234 |
|
| 235 |
logger.info(f"Report draft generated for project {project_id}")
|
| 236 |
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
|
| 240 |
-
'
|
| 241 |
-
|
| 242 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 243 |
|
| 244 |
logger.info(f"Project {project_id} updated with draft data")
|
| 245 |
|
|
|
|
| 234 |
|
| 235 |
logger.info(f"Report draft generated for project {project_id}")
|
| 236 |
|
| 237 |
+
# Clean and validate data before updating Firebase
|
| 238 |
+
try:
|
| 239 |
+
# Ensure rawMarkdown is a string and handle any encoding issues
|
| 240 |
+
raw_markdown = draft_data.get('raw_md', '')
|
| 241 |
+
if raw_markdown:
|
| 242 |
+
# Clean any problematic characters that might cause JSON parsing issues
|
| 243 |
+
raw_markdown = str(raw_markdown).replace('\x00', '').replace('\ufeff', '')
|
| 244 |
+
logger.info(f"Raw markdown length: {len(raw_markdown)}")
|
| 245 |
+
|
| 246 |
+
# Ensure chartUrls is a proper list/dict
|
| 247 |
+
chart_urls = draft_data.get('chartUrls', [])
|
| 248 |
+
if isinstance(chart_urls, (list, dict)):
|
| 249 |
+
logger.info(f"Chart URLs count: {len(chart_urls)}")
|
| 250 |
+
else:
|
| 251 |
+
logger.warning(f"Chart URLs is not a list/dict: {type(chart_urls)}")
|
| 252 |
+
chart_urls = []
|
| 253 |
+
|
| 254 |
+
update_data = {
|
| 255 |
+
'status': 'draft',
|
| 256 |
+
'rawMarkdown': raw_markdown,
|
| 257 |
+
'chartUrls': chart_urls
|
| 258 |
+
}
|
| 259 |
+
|
| 260 |
+
logger.info(f"Updating project {project_id} with cleaned data")
|
| 261 |
+
project_ref.update(update_data)
|
| 262 |
+
|
| 263 |
+
except Exception as update_error:
|
| 264 |
+
logger.error(f"Error preparing update data for project {project_id}: {str(update_error)}")
|
| 265 |
+
logger.error(f"Draft data keys: {list(draft_data.keys()) if draft_data else 'None'}")
|
| 266 |
+
logger.error(f"Raw markdown type: {type(draft_data.get('raw_md'))}")
|
| 267 |
+
logger.error(f"Chart URLs type: {type(draft_data.get('chartUrls'))}")
|
| 268 |
+
raise update_error
|
| 269 |
|
| 270 |
logger.info(f"Project {project_id} updated with draft data")
|
| 271 |
|