76 lines
3.0 KiB
Python
76 lines
3.0 KiB
Python
import os
|
|
import requests
|
|
import json
|
|
from datetime import datetime
|
|
from zoneinfo import ZoneInfo
|
|
|
|
# Configuration
|
|
NOTION_TOKEN = "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"
|
|
PAGE_ID = "2ff88f42854480008314c9013414d1d0"
|
|
BERLIN_TZ = ZoneInfo("Europe/Berlin")
|
|
|
|
def add_status_to_notion():
|
|
headers = {
|
|
"Authorization": f"Bearer {NOTION_TOKEN}",
|
|
"Content-Type": "application/json",
|
|
"Notion-Version": "2022-06-28"
|
|
}
|
|
|
|
# 1. Update the 'Total Duration (h)' field
|
|
# First, get current value
|
|
resp = requests.get(f"https://api.notion.com/v1/pages/{PAGE_ID}", headers=headers)
|
|
page_data = resp.json()
|
|
current_hours = page_data.get("properties", {}).get("Total Duration (h)", {}).get("number") or 0.0
|
|
new_hours = current_hours + 3.2
|
|
|
|
# Update property
|
|
update_payload = {
|
|
"properties": {
|
|
"Total Duration (h)": {"number": new_hours},
|
|
"Status": {"status": {"name": "Doing"}}
|
|
}
|
|
}
|
|
requests.patch(f"https://api.notion.com/v1/pages/{PAGE_ID}", headers=headers, json=update_payload)
|
|
|
|
# 2. Append the Status Update Block
|
|
timestamp = datetime.now(BERLIN_TZ).strftime('%Y-%m-%d %H:%M')
|
|
report_content = (
|
|
"Investierte Zeit in dieser Session: 03:12\n"
|
|
"Neuer Status: Doing\n\n"
|
|
"Arbeitszusammenfassung:\n"
|
|
"Wir haben heute den entscheidenden technischen Durchbruch bei der bidirektionalen Datensynchronisation zwischen dem Company Explorer (CE) und SuperOffice CRM (SO) erzielt.\n\n"
|
|
"1. Infrastruktur-Stabilisierung: Das Git-Repository wurde über eine interne Docker-Netzwerk-Verbindung (gitea-internal) stabil angebunden.\n"
|
|
"2. Pipeline-Durchstich (SO -> CE): Firmenstammdaten aus SuperOffice (Contact ID 2) werden sauber in den Company Explorer übertragen.\n"
|
|
"3. Round-Trip & Write-Back (CE -> SO): Das Protokoll für den Rückschreibeprozess wurde geknackt. Erkenntnis: SuperOffice ignoriert UrlAddress beim PUT, wir nutzen jetzt das Urls-Array. Pflichtfelder wie Number2 werden nun explizit mitgegeben."
|
|
)
|
|
|
|
block_payload = {
|
|
"children": [
|
|
{
|
|
"object": "block",
|
|
"type": "heading_2",
|
|
"heading_2": {
|
|
"rich_text": [{"type": "text", "text": {"content": f"🤖 Status-Update ({timestamp} Berlin Time)"}}]
|
|
}
|
|
},
|
|
{
|
|
"object": "block",
|
|
"type": "code",
|
|
"code": {
|
|
"rich_text": [{"type": "text", "text": {"content": report_content}}],
|
|
"language": "yaml"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
final_resp = requests.patch(f"https://api.notion.com/v1/blocks/{PAGE_ID}/children", headers=headers, json=block_payload)
|
|
|
|
if final_resp.status_code == 200:
|
|
print(f"✅ SUCCESS: Notion Task updated. Total hours now: {new_hours}")
|
|
else:
|
|
print(f"❌ ERROR: {final_resp.text}")
|
|
|
|
if __name__ == "__main__":
|
|
add_status_to_notion()
|