feat: assign deterministic operation UUIDs
This commit is contained in:
@@ -8,6 +8,7 @@ import hashlib
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
import uuid
|
||||
from collections import defaultdict
|
||||
from datetime import datetime, timedelta
|
||||
from decimal import Decimal, ROUND_HALF_UP
|
||||
@@ -18,6 +19,7 @@ from xml.etree import ElementTree as ET
|
||||
NS = {'m': 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'}
|
||||
EPOCH = datetime(1899, 12, 30)
|
||||
COLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
OPERATION_NAMESPACE = uuid.UUID('7a4a1c7d-7d3c-4f53-9f45-5e7dbb2c6f31')
|
||||
|
||||
|
||||
def excel_date(value):
|
||||
@@ -106,12 +108,14 @@ def cash_transactions(rows, start, end):
|
||||
description = text(f'{operation}. {comment}'.strip('. '))
|
||||
digest = hashlib.sha256(f'{operation_at}|{amount}|{description}'.encode()).hexdigest()[:16]
|
||||
occurrences[digest] += 1
|
||||
source_id = f'vtb-broker-cash:{digest}:{occurrences[digest]}'
|
||||
transactions.append({
|
||||
'operationAt': operation_at,
|
||||
'amountSigned': amount,
|
||||
'commission': 0,
|
||||
'description': description,
|
||||
'sourceId': f'vtb-broker-cash:{digest}:{occurrences[digest]}',
|
||||
'sourceId': source_id,
|
||||
'operationId': str(uuid.uuid5(OPERATION_NAMESPACE, source_id)),
|
||||
'_sourceRow': number,
|
||||
})
|
||||
if not transactions:
|
||||
@@ -151,6 +155,7 @@ def portfolio(rows, holdings_start, movement_start, trades_start, trades_end, ac
|
||||
item['sourceRow'] = number
|
||||
item['concludedAt'] = concluded_at
|
||||
item['sourceId'] = f"vtb-broker-trade:{item['tradeId'] or number}"
|
||||
item['operationId'] = str(uuid.uuid5(OPERATION_NAMESPACE, item['sourceId']))
|
||||
trades.append(item)
|
||||
return {
|
||||
'schemaVersion': 'broker-portfolio-1.0',
|
||||
|
||||
Reference in New Issue
Block a user