Кейсы · Проверка приложения
Портал для клиентов, собранный ИИ на Firebase: проверен и исправлен
Образец заказа: портал и студии вымышленные, данные тестовые. Он собран в Claude Code для этого кейса; каждая находка и исправление — настоящий прогон. Исправленный портал работает в сети, его можно открыть самому.
Откройте портал сами
Открыть живой портал →Исправленный портал работает на Firebase, страницы на Cloudflare. Регистрация закрыта, письма не уходят, поэтому войдите одним из четырёх демо-входов; каждый ведёт туда, где работает этот человек. Загружать можно картинки и PDF до 2 МБ. Каждую ночь всё возвращается к исходному состоянию, а с этими входами все видят, что добавили другие, так что вводите вымышленное.
Демо-входы
- Владелец студии:
camille@atelierbrume.example/demo-owner - Фрилансер на одном проекте:
oskar@bergmotion.example/demo-freelancer - Главный контакт клиента:
jonas@velolumen.example/demo-client - Основатель (админка всех студий):
founder@folioport.example/demo-founder
Что проверено уже на живом портале
- Живые страницы совпадают с проверенной сборкой файл в файл и содержат только публичные настройки: ни приватных ключей, ни карт исходного кода.
- Без входа база, хранилище файлов и серверные функции отклоняют любое чтение и запись, а ответ про несуществующую запись не отличается от ответа про чужую.
- Ссылка даёт только свои файлы; выключенные, просроченные ссылки и ссылки приостановленной студии не открываются; файлы отдаются так, что не выполняются как страницы.
- Все четыре роли проверены вручную: вход, загрузки от студии, фрилансера и клиента, админка основателя.
Найдено только на настоящем Firebase и исправлено: каждая загрузка получала отказ, потому что правила хранилища читали больше записей, чем позволяет Firebase; загруженный файл никогда бы не появился, потому что сервер ждал второго события о загрузке, которое шлёт только локальная копия; админка основателя падала без индекса базы; файл, присланный клиентом, прятался за фильтром, и казалось, что загрузка не прошла. Несколько низких остаются в списке для владельца, например серверные функции принимают запросы с любого сайта (вход человека им всё равно нужен).
Цель
Приложение на Firebase хранит, кто что читает и меняет, в правилах доступа, а в портале много людей: владелец и команда студии, фрилансеры на одном проекте, главный контакт клиента и его коллеги, гости со ссылкой, основатель, который ведёт все студии. Вопрос: в портале, который ИИ сдал как готовый, видит и меняет ли каждый только то, что ему положено?
Сложность
На обычном пути портал работал: проекты, этапы, утверждения, файлы и ссылки вели себя как надо, а без входа посетитель не получал ничего. В заметках самого ИИ было обещано, что этап утверждает только главный контакт клиента и что каждый файл проверяется при каждом открытии. Ошибки проявлялись, только когда один человек делал то, что положено другому: коллега клиента, фрилансер, тот, кто только что ушёл, приостановленная студия.
Решение
Сначала правила владельца записали: для каждого человека в портале — что он может видеть и менять в каждой его части; неясные случаи решал владелец. Потом каждое правило проверили от имени этого человека на локальной копии с тестовыми данными, напрямую через базу, хранилище файлов и серверные функции, а не только через страницы. Исправления уходили ИИ обычными словами, в три раунда, и каждый раунд проверяли заново: что исправлено и что сломалось. Потом портал переехал на настоящий проект Firebase, и там его проверили тоже.
Результат
29 проблем в портале, как его сдали: 5 высоких, 12 средних, 12 низких. Люди клиента могли читать заметки, которые студия вела о них; любой со стороны студии мог записать утверждение от имени клиента и переписать прошлые решения; адрес файла открывался и после того, как человек потерял доступ или студию приостановили; загруженный файл HTML или SVG открывался как страница на адресе самого портала. После трёх раундов 26 исправлены, 3 — частично; высоких не осталось. Сами исправления внесли 2 высоких и 6 средних, например имена кириллицей или с надстрочными знаками, как Émile, перестали проходить регистрацию; обе высокие и половина средних исправлены. Владельцу оставлены: 3 средних, для которых нужны нарочные странные шаги, вроде похожей буквы из другого алфавита в имени, и несколько низких. Ещё 12 мест, где владелец позже решил иначе, чем разумно сделал ИИ, тоже изменены, и ошибками ИИ они не считаются. Один портал, собранный один раз: цифры описывают этот портал, а не долю для таких приложений.
Услуга
Такая же проверка для вашего приложения
Вы присылаете код, а не пароли. Каждая проблема — с примером, кто что мог сделать, а каждое исправление проверяется заново на то, что оно сломало.


