share_id теперь UUID вместо последовательного номера (непредсказуемые ссылки)

This commit is contained in:
apuc committed 2026-09-21 15:04:08 +03:00
1 parent c6f658fb2f
commit 6ea71e1864
1 file changed
+7 -11
+7 -11
View File
@@ -16,6 +16,7 @@
import json import json
import os import os
import sqlite3 import sqlite3
import uuid
from datetime import datetime from datetime import datetime
DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "results.db") 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: def save_result(interpretation: dict, raw_result: dict) -> str:
""" """
Сохранить результат анализа. Возвращает share_id (числовой, начиная с 10005). Сохранить результат анализа. Возвращает share_id — случайный UUID
(непредсказуемый, чтобы ссылки нельзя было перебирать).
""" """
init_db() init_db()
conn = _connect() conn = _connect()
# Следующий ID: MAX(id) + 1, но не меньше FIRST_ID # Случайный UUID для публичной ссылки (id остаётся автоинкрементным для внутренней сортировки).
row = conn.execute("SELECT MAX(id) AS max_id FROM results").fetchone() share_id = uuid.uuid4().hex
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)
conn.execute( conn.execute(
""" """
INSERT INTO results (id, share_id, created_at, raw_json, summary, warnings, metrics, advice) INSERT INTO results (share_id, created_at, raw_json, summary, warnings, metrics, advice)
VALUES (?, ?, ?, ?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?, ?)
""", """,
( (
next_id,
share_id, share_id,
datetime.now().isoformat(timespec="seconds"), datetime.now().isoformat(timespec="seconds"),
json.dumps(raw_result, ensure_ascii=False), json.dumps(raw_result, ensure_ascii=False),