diff --git a/scalable_sync.py b/scalable_sync.py index 15c060f..e798183 100644 --- a/scalable_sync.py +++ b/scalable_sync.py @@ -359,26 +359,29 @@ class WealthfolioMCP: ) draft_data = draft_result.structured_content or {} - drafts = draft_data.get("drafts", []) + draft_rows = draft_data.get("drafts", []) - if len(drafts) != len(activities): + if len(draft_rows) != len(activities): raise RuntimeError( "Wealthfolio returned an incomplete draft batch: " - f"expected {len(activities)}, got {len(drafts)}" + f"expected {len(activities)}, got {len(draft_rows)}; " + + json.dumps(draft_data, default=str) ) - invalid = [ - draft for draft in drafts - if not draft.get("accountId") - or not draft.get("activityType") - or not draft.get("activityDate") + invalid_rows = [ + row for row in draft_rows + if row.get("errors") + or not row.get("validation", {}).get("isValid", False) + or not row.get("draft", {}).get("accountId") ] - if invalid: + if invalid_rows: raise RuntimeError( "Wealthfolio returned invalid activity drafts: " - + json.dumps(invalid, default=str) + + json.dumps(invalid_rows, default=str) ) + drafts = [row["draft"] for row in draft_rows] + commit_result = asyncio.run( self._connect_and_call( "commit_activity_drafts",