Библиотека чтения
Создайте карточку истории поиска без хранения секретов
Сохраните полезную историю поиска о квантовании, отделяя секреты, отправленные условия, наблюдения ответа и собственные заметки читателя.
Перечислите открытые параметры для повторения запроса
Структура карточки истории должна точно соответствовать контракту фильтров API. В предлагаемом журнале LocalLLaMA сохраняйте отправленные q, subreddit, author, kind, from, to, min_score, limit и page, когда они используются. Короткий пример: q=quantization, subreddit=LocalLLaMA, limit=3, page=1. Даты храните в реально отправленном формате YYYY-MM-DD UTC. Эти значения объясняют условия, но не доказывают возвращение конкретного обсуждения; повтор не гарантирует того же ответа в будущем.
Считайте открытые параметры полями без учётных секретов, а не автоматически безвредными сведениями. Запрос может содержать название закрытого проекта, а заметка — идентифицировать человека, которого читатель не хотел раскрывать. Выбирайте, что хранить или экспортировать, вместо копирования всего объекта запроса. Исключите заголовки аутентификации. Если приложение сохраняет ответ локально, отделите его от запроса и отметьте время получения. Иначе ссылку на повтор поиска можно принять за архивную копию прежнего результата.
Храните секреты отдельно
Backend приложения должен иметь доступ к сохранённому API-ключу, чтобы отправлять X-API-Key или Authorization: Bearer. Одностороннего хеша недостаточно для исходящего запроса. Храните пригодный ключ в соответствующем серверном хранилище секретов, вне браузерных bundles, URL, экспортов истории и диагностических журналов. Сам сервис хранит хеш и префикс ключа для аутентификации — это другая задача. Полный ключ показывается один раз при регистрации или регенерации; последняя немедленно отменяет прежний ключ. История не должна случайно стать резервной копией секрета.
Разделяйте три отношения: аккаунт читателя в приложении, сессию оператора сервиса и API-ключ для получения данных. Служебные ключи и балансы принадлежат конкретному tenant; смена хоста не делает чужой ключ действительным. Исключение секретов из истории уменьшает один путь утечки, но не делает запросы и заметки безопасными от любых проблем браузера или контроля доступа. Проверьте собственные правила хранения и передачи. Не рекламируйте предлагаемую карточку как проверенную границу безопасности или готовую функцию истории API архива.
Сохраняйте заметки об интерпретации
Отделяйте наблюдения от выводов. В карточке можно отметить три показанные записи, отсутствие пригодного основного текста у одной и сохраняющийся вопрос об условиях измерения памяти. Это пример пометки, а не наблюдаемый архивный результат. Если сохраняете pagination.total, сохраняйте и pagination.relation, а также признаки продолжения и границ окна для объяснения ответа. Нижняя граница — не точное число. Ни одно из этих полей не измеряет релевантность записи или распространённость проблемы.
Дайте читателям коротко объяснять, почему они оставили ссылку. Обозначайте текст как их заметку, сохраняйте доступную идентичность источника и не смешивайте пометку с цитатой. Необязательные поля могут отсутствовать, а ссылки на родителей не дают полного обсуждения. Повторное открытие сохранённого ответа не обязано вызывать API; явное обновление — новый запрос. Успешное обновление стоит один кредит даже без записей. Сохраняйте неудачное или неопределённое обновление отдельно, а не заменяйте прежнее наблюдение пустой карточкой без объяснения.
Проверьте границы хранения
Определите удаление, экспорт и сроки хранения приложения, прежде чем обещать постоянную историю. Удаление локальной карточки удаляет выбранные вашей реализацией данные; оно не удаляет запись архива, не закрывает аккаунт сервиса и не меняет его платёжные записи. Очистка браузера, потеря устройства или ограничения хранилища могут убрать историю. Если предлагаете синхронизацию или резервные копии, описывайте и проверяйте их как отдельные функции приложения. Это не endpoints архива, и статья не устанавливает, что они реализованы.
Сервис здесь не указывает фиксированный срок хранения данных аккаунта; это не обещает постоянного доступа к архивному содержимому. Сохранённый запрос может оставаться понятным после исчезновения источника, если карточка отличает прежнее наблюдение от нового получения. Проверяйте экспорт на секреты и чувствительные заметки, затем дайте читателю выбрать, что оставить. Полезный результат — прослеживаемая запись поискового решения, а не гарантия бессрочной действительности её данных, интерпретации или ссылки.