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),