Repository navigation
TaleEngine v2.1.0 Beta
Подготовка к публичному доступу. Три вещи, которые в редизайн не входили, но
без которых открывать приложение посторонним нельзя.
Исправлено — панель отладки больше не показывает чужую переписку
Буфер отладки был ОДИН на всё приложение, а эндпоинты /api/debug/log вообще
не спрашивали, кто пришёл. В режиме аккаунтов туда попадали ходы всех
пользователей, и любой залогиненный видел в панели 🐞 сводку чужих сообщений.
- Каждая запись помечается владельцем, выдача фильтруется по нему.
- Право на общий просмотр есть только у администратора, и решается это в слое
доступа, а не в модуле лога. Параметрall=trueот обычного пользователя
игнорируется, а не выполняется. - Очистка тоже изолирована: свои записи удаляются, чужие остаются.
- Служебное поле владельца наружу не отдаётся.
- Владелец проставляется контекстной переменной, а не протаскиванием параметра
через шлюз LLM:llm_gatewayпро пользователя ничего не знает и знать не
должен, а фоновая задача генерации наследует пометку вместе с контекстом. - Заодно буфер увеличен со 100 до 400 записей: теперь он делится на всех.
Изменено — стандартная фильтрация по умолчанию
disable_safety был True: каждый новый пользователь получал снятые фильтры
провайдера, при этом сам интерфейс красил этот переключатель в цвет опасности.
Два сигнала противоречили друг другу.
- Новые профили получают стандартную фильтрацию. Снятие фильтров остаётся
доступным, но становится осознанным выбором, а не тем, что достаётся молча. - Уже сохранённые настройки существующих пользователей не меняются: их
параметры грузятся поверх умолчаний. Тихо менять поведение работающей
установки хуже, чем оставить как есть. - Одноразовая подсказка при первом старте и бейдж состояния во вкладке
«Генерация»: режим виден с одного взгляда, без чтения абзаца.
Изменено — секреты переезжают в переменные окружения
Пароль администратора, код доступа и токен Telegram-бота хранились в таблице
app_settings открытым текстом. Резервная копия базы, её экспорт или чужой
доступ к файлу означали компрометацию всего сразу.
- Новые переменные
ADMIN_PASSWORDиACCESS_CODE(TELEGRAM_BOT_TOKENуже
был). Заданное в окружении перекрывает базу, а не дополняет её: значения
уже сохранены, и «запасной вариант» проиграл бы базе — перенос вышел бы
бессмысленным. - Поля таких секретов в админке помечаются замком и блокируются, а запись их из
интерфейса игнорируется на сервере. Иначе сохранение «проходило» бы, а
работало всё равно значение из.env— худший вид молчаливого расхождения. scripts/scrub_secrets.pyвычищает секреты из базы после переноса. Ничего не
делает молча: показывает найденное, предупреждает о значениях без пары в
окружении, требует подтверждения и делает резервную копию. Значения на экран
не печатаются..gitignoreс.env,data/*.dbи*.sqlite3закоммичен.