Сударь, вы мне явно пытаетесь что-то сказать. Потрудитесь выражаться яснее. У вас есть какие-то технические предложения или вы просто занимаетесь троллингом?
Выше дискуссия на эту тему. Всё ещё думаю нужно ли тут вообще AI, а то он действительно может насоветовать так что приложение животному больше не понадобится.
Если честно, сначала я просто делал фичи, которые самому казались интересными. Таблички, скрипты, мини-вебка — всё это были быстрые эксперименты, чтобы понять, что вообще работает.
Приложение изначально было на flask, теперь на fastapi.
Когда стало понятно, что проект растёт и им потенциально могут пользоваться другие люди, уже пришлось собрать нормальную архитектуру. Рабочие вещи я перенёс, экспериментальный мусор — выкинул.
Python остался в основе, просто теперь это не куча скриптов, а аккуратный сервис.
Только что допилил фичу по восстановлению пароля по емейлу. Заняло ровно 2 промпта.
Секрет тут прост - промпты надо просить у chatgpt codex, дав возможность ознакомиться с проектом)
Вот пример на мою фичу:
Промпт
Ты — senior fullstack разработчик в проекте Diabnostic (микросервисная архитектура: отдельный Auth-сервис на Python/FastAPI, отдельный API-сервис и React/TypeScript SPA-фронтенд). В проекте уже реализованы:
Подтверждение e-mail при регистрации (с 6-значным кодом, TTL 15 минут, отправка через Yandex Cloud Postbox по AWS SES-совместимому API, фоновые задачи через FastAPI BackgroundTasks).
Рейтлимиты для e-mail-верификации (отдельно на отправку, проверку и повторную отправку).
Авторизация через JWT в HTTP-only cookies.
Капча (Cloudflare Turnstile / Яндекс Smart Captcha) на формах регистрации/логина.
Задача: реализовать фичу “Восстановление пароля по e-mail” на бэкенде (Auth-сервис) и фронтенде (SPA), в том же стиле, что и текущая e-mail-верификация. Учти безопасность, UX и рейтлимиты.
1. Общие требования
Нужен полноценный flow:
Пользователь на странице логина нажимает “Забыли пароль?”.
Переходит на отдельную страницу, вводит свой e-mail (и капчу, если она включена).
Получает письмо со ссылкой для сброса пароля (одноразовый токен + ограниченный срок действия).
По ссылке попадает на страницу “Сброс пароля”, вводит новый пароль, подтверждает.
Пароль меняется, все активные сессии этого пользователя инвалидируются.
Никаких утечек информации: во всех ответах API нельзя явно говорить, существует ли пользователь с таким e-mail. Ответ всегда “Если такой e-mail зарегистрирован, мы отправили инструкцию по восстановлению пароля”.
Используй уже существующую инфраструктуру:
тот же механизм отправки писем, что и для e-mail-верификации;
ту же систему рейтлимитов (slowapi или что сейчас используется);
ту же систему шаблонов HTML/текст-писем (сделай отдельный шаблон “reset password”, но в том же стиле).
2. Backend (Auth-service, FastAPI)
2.1. Модель данных
Добавь сущность для токенов сброса пароля. Вариант: отдельная таблица password_reset_tokens:
Если что-то не так — вернуть 400 или 422 с общим сообщением вида "Неверный или просроченный токен", без деталей.
Если всё ок:
обновить пароль пользователя (используй тот же хешер/валидатор, что и при регистрации/смене пароля),
пометить токен как used=true,
инвалидировать все существующие сессии/refresh-токены этого пользователя (если у нас есть такая механика; в простом варианте можно обновить поле password_changed_at и завязать проверку токенов на него).
Ответ 200 OK: { "message": "Пароль успешно изменён" }
Опционально:
Если удобно, можно добавить вспомогательный эндпоинт GET /auth/password-reset/validate?token=..., который просто говорит фронту, что токен жив/мертв, чтобы красиво показать страницу.
2.3. Рейтлимиты
На POST /auth/password-reset/request:
Рейтлимит по IP: например, 5 запросов в час.
Рейтлимит по e-mail: например, 3 запроса в час и 10 в сутки.
Используй ту же систему, что и для e-mail-верификации (slowapi или аналог). Если уже есть утилиты для рейтлимита, добавь отдельные ключи/константы, аналогично:
RATELIMIT_PASSWORD_RESET_REQUEST_IP
RATELIMIT_PASSWORD_RESET_REQUEST_EMAIL
Логика:
При превышении лимита возвращать 429 с локализованным сообщением.
2.4. Безопасность и логирование
Не логировать токен в явном виде в обычный лог (можно частично замаскировать).
Логировать события:
запрос сброса пароля (user_id если найден, IP, user-agent),
успешный сброс пароля.
Не раскрывать в API, есть ли аккаунт с таким e-mail.
3. Frontend (React/TypeScript SPA)
3.1. Страницы и маршруты
Ссылка “Забыли пароль?” на странице логина
На странице логина добавь ссылку/кнопку “Забыли пароль?”.
При клике — переход на новый маршрут, например /forgot-password.
Страница “Забыли пароль” (/forgot-password)
Форма:
поле email (с валидацией формата и обязательности),
виджет капчи, если включена (используй тот же компонент, что и в регистрации/логине),
кнопка “Отправить инструкцию”.
Состояния:
начальное,
loading (крутилка на кнопке),
success (показываем сообщение “Если такой e-mail зарегистрирован…”),
ошибки (сетевые, 429, капча, прочие).
Поведение:
После успешного POST запросе всегда показывать один и тот же success-экран, не держа пользователя в неведении.
Если пришёл 429 — показать аккуратное сообщение о слишком частых попытках.
Обнови документацию Swagger/OpenAPI для новых эндпоинтов.
При необходимости обнови .env.example (например, если добавляются переменные для фронтенд-URL для reset-ссылок).
Сгенерируй весь необходимый код (backend + frontend + миграции + тесты) в том же стиле, в котором уже написаны e-mail-верификация и существующие Auth-эндпоинты. Если есть сомнения по структуре проекта — сначала кратко опиши план изменений по файлам, затем приводи фрагменты кода по частям.
Я так и думал.
Нет, что Codex, что Claude прекрасно понимают русский язык.
Спасибо за высокую оценку!
Нет, описанных проблем не было, но я использую VPN, а не прокси.
А где можно ознакомиться с вашими, несомненно великолепными работами?
Сударь, вы мне явно пытаетесь что-то сказать. Потрудитесь выражаться яснее. У вас есть какие-то технические предложения или вы просто занимаетесь троллингом?
PWA уже готово. Посмотрите мою следующую статью.
Могу я узнать причины Вашей откровенной токсичности в моем посте? Это уже становится похоже на откровенный сталкинг.
Выше дискуссия на эту тему. Всё ещё думаю нужно ли тут вообще AI, а то он действительно может насоветовать так что приложение животному больше не понадобится.
Если честно, сначала я просто делал фичи, которые самому казались интересными. Таблички, скрипты, мини-вебка — всё это были быстрые эксперименты, чтобы понять, что вообще работает.
Приложение изначально было на flask, теперь на fastapi.
Когда стало понятно, что проект растёт и им потенциально могут пользоваться другие люди, уже пришлось собрать нормальную архитектуру. Рабочие вещи я перенёс, экспериментальный мусор — выкинул.
Python остался в основе, просто теперь это не куча скриптов, а аккуратный сервис.
Спасибо за обратную связь, добавлю эту информацию
Рекомендации убрал. Спасибо вам за подсказку. Теперь AI только собирает данные в общий отчет и прилично отупел. Думаю то что нужно)
Пример
В том и дело, что для людей подобных решений полно, а для животных, извините, кот наплакал.
Спасибо за обратную связь!
Пишите в тг, с радостью пообщаюсь)
Фича уже в разработке)
Интересно, не видел)
А так-то конечно можно и поржать, чего бы не поржать. Я в реальной практике такие проекты редко наблюдал)
За поржать, я так понимаю, вам на пикабу лучше =)
Сударь, так прелесть в том что этот промпт тоже сгенерированный.
А итоговый PR выглядит примерно так:
Приятно, что вы переживаете за судьбу проекта судя по вашей активности в комментариях)
Только что допилил фичу по восстановлению пароля по емейлу. Заняло ровно 2 промпта.
Секрет тут прост - промпты надо просить у chatgpt codex, дав возможность ознакомиться с проектом)
Вот пример на мою фичу:
Промпт
Ии очень любит ошибаться. Ему нельзя доверять. Когда под влиянием ИИ будет введена неверная доза инсулина будет очень грустно.