feat: Oracle Canvas Component Schema and Qwen 3.6 integration (#31)

Co-authored-by: Sagnik <sagnik7896@gmail.com>
Reviewed-on: #31
This commit was merged in pull request #31.
This commit is contained in:
2026-04-20 01:43:39 +05:30
parent 57144e1bd3
commit e519339cc9
129 changed files with 625213 additions and 262 deletions

View File

@@ -17,8 +17,23 @@ except Exception: # pragma: no cover
_DB_URL = os.getenv("DATABASE_URL", "")
def _now() -> str:
return datetime.now(timezone.utc).isoformat()
def _now() -> datetime:
return datetime.now(timezone.utc)
def _iso(value: datetime | None) -> str | None:
return value.isoformat() if value else None
def _coerce_datetime(value: datetime | str | None) -> datetime | None:
if value is None or isinstance(value, datetime):
return value
if isinstance(value, str) and value.strip():
try:
return datetime.fromisoformat(value)
except ValueError:
return None
return None
def _db_ready() -> bool:
@@ -314,8 +329,8 @@ class OracleActionService:
json.dumps(action.get("componentIds") or []),
json.dumps(action.get("writebackPayload") or {}),
json.dumps(action.get("resultPayload") or {}),
action["createdAt"],
action["updatedAt"],
_coerce_datetime(action["createdAt"]),
_coerce_datetime(action["updatedAt"]),
)
finally:
await conn.close()
@@ -338,8 +353,8 @@ class OracleActionService:
"componentIds": row["component_ids"] or [],
"writebackPayload": row["writeback_payload"] or {},
"resultPayload": row["result_payload"] or {},
"createdAt": row["created_at"].isoformat() if row["created_at"] else None,
"updatedAt": row["updated_at"].isoformat() if row["updated_at"] else None,
"createdAt": _iso(row["created_at"]),
"updatedAt": _iso(row["updated_at"]),
}