From 6ea71e18642b244d5e3251b39ab68c63fb63e86d Mon Sep 17 00:00:00 2001 From: Kavalar Date: Mon, 21 Sep 2026 15:04:08 +0300 Subject: [PATCH] =?UTF-8?q?share=5Fid=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D1=8C=20UUID=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BE=D0=B2=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BD=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=20(=D0=BD=D0=B5=D0=BF=D1=80=D0=B5=D0=B4=D1=81?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D1=83=D0=B5=D0=BC=D1=8B=D0=B5=20=D1=81=D1=81?= =?UTF-8?q?=D1=8B=D0=BB=D0=BA=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- storage.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/storage.py b/storage.py index 34ec05c..ae49acb 100644 --- a/storage.py +++ b/storage.py @@ -16,6 +16,7 @@ import json import os import sqlite3 +import uuid from datetime import datetime DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "results.db") @@ -51,27 +52,22 @@ def init_db(): def save_result(interpretation: dict, raw_result: dict) -> str: """ - Сохранить результат анализа. Возвращает share_id (числовой, начиная с 10005). + Сохранить результат анализа. Возвращает share_id — случайный UUID + (непредсказуемый, чтобы ссылки нельзя было перебирать). """ init_db() conn = _connect() - # Следующий ID: MAX(id) + 1, но не меньше FIRST_ID - row = conn.execute("SELECT MAX(id) AS max_id FROM results").fetchone() - next_id = (row["max_id"] + 1) if row["max_id"] is not None else FIRST_ID - if next_id < FIRST_ID: - next_id = FIRST_ID - - share_id = str(next_id) + # Случайный UUID для публичной ссылки (id остаётся автоинкрементным для внутренней сортировки). + share_id = uuid.uuid4().hex conn.execute( """ - INSERT INTO results (id, share_id, created_at, raw_json, summary, warnings, metrics, advice) - VALUES (?, ?, ?, ?, ?, ?, ?, ?) + INSERT INTO results (share_id, created_at, raw_json, summary, warnings, metrics, advice) + VALUES (?, ?, ?, ?, ?, ?, ?) """, ( - next_id, share_id, datetime.now().isoformat(timespec="seconds"), json.dumps(raw_result, ensure_ascii=False),