From 486eee4feb65b752422fbb8a7237bcef26567b35 Mon Sep 17 00:00:00 2001 From: ericwyuan Date: Thu, 20 Aug 2026 09:26:42 +0800 Subject: [PATCH] =?UTF-8?q?fix(db):=20frame=5Ftimestamp=20ISO8601=20?= =?UTF-8?q?=E5=BD=92=E4=B8=80=E5=8C=96=20+=20perf(edge):=20ollama=20num=5F?= =?UTF-8?q?predict=201024=E2=86=92512?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - db_layer._dt_or_none 支持 ISO 8601(带 T/Z/时区偏移) 归一化为 MariaDB DATETIME 标准格式, 修复 1292 Incorrect datetime value - edge config ollama num_predict 512: qwen2.5:7b 在 ARM 上 1024 token 融合需 200s, 降到 512 加速且输出足够 --- fam-core/src/fam_core/db_layer.py | 24 ++++++++++++++++++++++-- fam-edge/config/config.yaml | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/fam-core/src/fam_core/db_layer.py b/fam-core/src/fam_core/db_layer.py index af00032..a19671c 100644 --- a/fam-core/src/fam_core/db_layer.py +++ b/fam-core/src/fam_core/db_layer.py @@ -176,8 +176,28 @@ def get_video_url_exists(video_path: str) -> bool: # ============================================================ def _dt_or_none(value): - """datetime 字段归一化: 空串/None → NULL(MariaDB 严格模式拒绝 '' 插入 DATETIME 列)""" - return value if value else None + """datetime 字段归一化(MariaDB 严格模式兼容) + + - 空串/None/'None'/'null' → NULL + - ISO 8601(2026-08-20T01:06:44Z / 2026-08-20T01:06:44.123+00:00)→ '2026-08-20 01:06:44' + - 已为标准格式则原样返回 + """ + if value is None: + return None + s = str(value).strip() + if s in ('', 'None', 'null', 'NaN'): + return None + # 归一化 ISO 8601 -> 'YYYY-MM-DD HH:MM:SS' + s2 = s.replace('T', ' ').replace('Z', '').replace('z', '') + if '+' in s2[10:]: + s2 = s2[:s2.index('+')] + if '.' in s2: + s2 = s2[:s2.index('.')] + try: + dt = datetime.strptime(s2, '%Y-%m-%d %H:%M:%S') + return dt.strftime('%Y-%m-%d %H:%M:%S') + except Exception: + return None def insert_event(task_id: int, event_start_time: str, event_end_time: str, diff --git a/fam-edge/config/config.yaml b/fam-edge/config/config.yaml index c7cc96f..848892d 100644 --- a/fam-edge/config/config.yaml +++ b/fam-edge/config/config.yaml @@ -72,6 +72,6 @@ models: model_name: "qwen2.5:7b" base_url: "http://localhost:11434" timeout: 300 - num_predict: 1024 + num_predict: 512 circuit_breaker: enabled: false