# Отзывы об организаторе и тренере · #394 / родитель #372 Предложение Astra для Owner · 02.11.2026. Только продуктовый дизайн. Ни реализация, ни независимая QA, ни DEV acceptance этим пакетом не заявляются. Рекомендация: **два предмета отзыва — организация встречи и проведённая тренировка; один понятный путь после участия.** На игре и соответствующем профиле — короткая сводка и тексты участников, без звёзд, среднего балла и общего рейтинга человека. Публичный текст создаётся отдельно и осознанно. Старые приватные записи остаются приватными. ## Что есть и чего не хватает Installed alpha19 / API0.27 / `7f33e9da0cf7b52d260567bbfb37114a3613d479`, receipt `r41479055286-a2` — факт из trusted assignment, runtime не проверялся. Прочитан HEAD `1d8a0c9b0115a499a786384c0f60da7de17c66d0`; локально подтверждены clean status и дерево `5a82f31d9ca1f4a1f3b8bcd27e97bf919628178f`, совпадающее с указанным installed tree. Более ранние handoff описывают свои попытки, а не опровергают supplied DEV acceptance. | Вид записи | Сейчас | Предлагаемое расширение | |---|---|---| | Приватная обратная связь об организации | Автор + ответственный организатор; 1–5 и/или текст ≤500. Есть discrepancy-сценарии, включая отмену, unknown и manager без участия | Сохранить. Не использовать её широкий допуск как доказательство посещения | | Приватная обратная связь о тренировке | Текст ≤500 без оценки навыка; `trainer_led`, адресат выводится сервером; текущий gate шире подтверждённого опыта | Сохранить приватность и контракт. Жалоба об отмене не называется посещённой тренировкой | | Публичный отзыв об опыте организатора/тренера | Требуемой системы нет | Новый отдельный opt-in текст и публикационная ревизия с проверенным основанием | | Вопросы об игре | Существующий GAME CommentsSection | Оставить вопросами/обсуждением конкретной игры; посещение для вопроса не нужно. Не подменять ими отзыв о человеке | | Личная заметка | Только автор; текущий create — manager | Не расширять роли заметок. Черновик нового отзыва — временный текст своей формы, не новый продукт заметок | | Peer | Приватная обратная связь по совместной игре; строгий confirmed-experience gate | Не менять в этом scope; никаких публичных оценок игроков или смены уровня | | Safety | PR471: report точной версии полученного PRIVATE PEER и чтение назначенным независимым Cases reviewer | Новые виды, премодерация, публичный ответ и апелляция ещё требуют узкого расширения. PR471 их не даёт | Публичные venue-reviews остаются отдельным незавершённым предметом; текущий широкий venue writer закрыт. PG1a/1b/2/3/4 заново не реализуются. ## Кому можно писать Для новой публичной подачи нужны одновременно: точная прошедшая игра, серверное `now ≥ ends_at`, lifecycle published/completed, явный `held`, исторически допустимая participation через `eligibleFromTransitions`, актуальное `present` от другого человека (`manager_explicit`) либо независимое исправление Cases (`case_reviewer`), отсутствие открытого спора о посещении и нерешённого конфликта основания. Самоотметка, заявка, роль manager, чекбокс «был» и профиль тренера не заменяют эти условия. Обычный organizer mark независим от автора, но не является независимой проверкой качества услуги. Адресат — **тот, кто выполнял роль на этой встрече**. Организатор оценивается за договорённости, подготовку и ведение встречи; присутствие организатора в roster игроков не обязательно. Для тренера необходима именно состоявшаяся тренировка с этим человеком, а не его присутствие как игрока. `trainer_led` и историческая привязка исполнителя обязательны; известная замена/спор закрывает подачу до уточнения. Подтверждение автора «занимался у этого тренера» дополняет, но не заменяет серверное основание. Сейчас `responsibleOrganizer()` выбирает текущего active manager, а `loadGameMeta()` читает текущую связь trainer profile. Это не полный исторический proof. Перед публичным запуском нужен небольшой неизменяемый снимок роли и provenance в контексте встречи, с независимой коррекцией через Cases. Существующий `trainer_display_name_snapshot` хранит отображение, не доказывает исполнение. Для старой встречи без надёжной истории — «Уточняем, кто проводил встречу», без автоматического backfill из сегодняшних ролей. Для новых встреч фиксируется связанная с проведением версия роли; изменения после неё не переносят отзывы. | Случай | Решение | |---|---| | Посторонний / pending / rejected / отказ до начала | Только чтение доступного публичного раздела. Для записи нет допуска | | Отказ/удаление после начала | Сам по себе не стирает historical eligibility. Всё равно нужны допустимый present, held и разрешённые споры | | No-show / unknown / missing | Публичная отправка закрыта; своё уточнение в PG2. Missing = version 0, existing unknown = version >0 | | Опоздание, но present | Допускается; признак late не публичен | | Нет отметки / organizer не отвечает | Запрос отметки и независимой помощи доступны без требования одобрить текст. Помощь ≠ назначенный разбор: показывать реальный receipt/status | | Организатор или тренер тоже участник | Может оценить другого исполнителя только по тем же основаниям; себя в любой роли оценить нельзя; своя отметка не годится | | Замена тренера / смена организатора | Подтверждённый фактический исполнитель; спорная замена — hold. Новый manager не получает старые приватные записи или право ответа за прежнего человека | | cancelled / not_held / спор о held | Нет публичного отзыва о посещении. Приватная обратная связь/жалоба об отмене сохраняется по действующим правам | | Позднее исправление | Допуск пересчитывается. Новый срок, штраф или потеря права из-за ожидания не вводятся | Для unknown/оспоренного итога текущий outcomes API предоставляет manager-only запись, а не готовый независимый resolver. Узкий Cases-путь проверки основания held/исторической роли — условие публичного запуска. До этого зависимые случаи честно закрыты; attendance correction в одиночку не создаёт held. ## Где читать и писать 1. `/games/[gameId]`: рядом с «Организует» — «Отзывы об организации»; в существующей карточке тренера — «Отзывы о тренировках». Сводка: число реально опубликованных текущих текстов, два коротких примера либо «Пока нет опубликованных отзывов». Отзывы относятся к исполнителю в роли, не обязательно к открытой игре. Кнопка «Поделиться опытом» выбирает только собственную подходящую прошлую встречу. 2. `/players/[publicPlayerId]`: в общей композиции профиля отдельный раздел «Как организатор», если сервер разрешает эту публичную роль; «Как тренер» — только в допустимом trainer context. Булевый self-declared trainer сам по себе не допускает запись. Нет новой страницы `/trainers/...`; `/profile/trainer` — собственный редактор. Не расширять Radar и каталог ради этой поставки. 3. `/my-games?view=history` → `/my-games/[gameId]/results?section=feedback`: основной вход написания, уточнения и своих состояний. Существующая приватная история остаётся отдельной. Никакого нового dashboard. Когда один человек организует и тренирует, показываем **одну карточку человека**, внутри два подписанных действия/вкладки. Пользователь выбирает предмет; нет «итого 4,8» и двух одинаковых отзывов. Автоматической отправки в обе роли нет. В каждой роли — один актуальный публичный отзыв автора об этом исполнителе; новая подтверждённая встреча позволяет обновить его, не набить счётчик постоянными визитами. Счётчик — количество текстов данной роли, не людей по всему сервису и не посещений. Профильные privacy/visibility fences сохраняются. Публичный здесь означает «всем, кому доступна соответствующая публичная поверхность», не обещание анонимного доступа ко всем профилям. Если профиль недоступен, не создавать обходной публичный профиль через отзывы; game-local сводка допустима только по уже разрешённой публичной ролевой проекции. При её отсутствии публичный раздел закрыт, приватная связь остаётся. Снятие directory opt-in/закрытие роли скрывает связанную публичную проекцию, не стирая историю; повторное открытие не снимает moderation hold. Block меняет доступ конкретного зрителя, не удаляет критику для всех. ## Форма и публичная идентичность Форма: предмет/адресат, выбор аудитории, короткий текст; до двух необязательных тем. Для организации: «Договорённости», «Ход встречи», «Общение». Для тренировки: «Объяснения», «Внимание к участникам», «Организация занятия». Темы — навигация по содержанию, без отдельных оценок. Текст публичного отзыва обязателен, 1–500 после trim, plain text; в первой версии без вложений, ссылок и упоминаний. Нейтральное и отрицательное мнение равноправны положительному. По умолчанию **«Лично организатору/тренеру»**, с видимостью «Вы и адресат». Это существующий private flow. Переключение на «Публично» открывает отдельный пустой черновик и предпросмотр; обратно — отдельный private draft. Ни старый отзыв, ни текст из private поля не копируется автоматически. Приватная оценка организации 1–5 остаётся в private форме; у тренировки оценки навыка нет. Публичных числовых оценок/агрегатов сейчас не предлагаем: текст и предмет полезнее ложной точности малой выборки и не создают общий рейтинг человека. В демо числа — явно вымышленные счётчики, а не реальные рейтинги. Публичная подпись фиксированная: **«Участник игры» / «Участник тренировки»**. Без имени, фото, account ID, profile link, стабильного межпрофильного псевдонима. Сервер знает автора для допуска и дублей. Это выбор минимизации графа посещений, не обещание анонимности: по деталям опыта автора иногда узнают. Адресат публичного отзыва видит ту же безопасную проекцию, без private proof и списка участников; private сообщение, напротив, не обещает скрыть автора от адресата. Предпросмотр показывает ровно текст, темы, роль, безопасную подпись и смысл бейджа. Отдельный пустой checkbox подтверждает **эту редакцию**, адресата, роль и аудиторию. Любая правка сбрасывает согласие; consent связывается с точной ревизией/хешем проекции. Бейдж «Участие подтверждено» означает только принятые сведения о посещении и контекст услуги, не независимую истинность каждого слова, профессиональную квалификацию или GPS-проверку. В публичных DTO/DOM/URL/cursor нет gameId, participationId, точной даты встречи/публикации, площадки частной встречи, roster, контактов и закрытых пояснений. Оpaque ID самого публичного отзыва допустим для операций. Имя и роль адресата берутся только из разрешённой публичной проекции. Текст и ответ проверяются также на косвенную идентификацию частной игры; исправляет автор, не автоматический перефразировщик. Необратимые копии уже увиденного текста удалить обещать нельзя. ## Проверка, изменения и жалобы Рекомендуем премодерацию точной публичной редакции существующим независимым Cases reviewer. Пока нет фактически работающего независимого разбора, весь новый public writer закрыт; кнопка сообщает «Публичные отзывы пока недоступны». Уже принятые тексты остаются читаемыми в рамках privacy fences. Нет выдуманной гарантии ответа и новой оплачиваемой команды. Не переносим 14-дневное окно и 48-часовую задержку из прежнего venue-предложения: для этих ролей сейчас нет основания добавлять таймер. При наличии доказуемого прошлого опыта можно подать и позднее; текст публикуется после решения, без автоматического выпуска по времени. Это рекомендуемые defaults, не установленный факт. Повторные запросы ограничивает существующая mutation/rate дисциплина; новых числовых квот и платных инструментов не назначаем. Состояния: свой черновик → отправлен, не опубликован → на исправлении / проверка основания → опубликован. Редактирование создаёт новую ревизию и требует нового согласия/решения. Прежний принятый текст остаётся видимым до принятия исправления; автор может сразу снять его. Withdrawal действует сразу для публичного чтения и связанных ответов, сохраняет private audit и занятый уникальный слот. Возврат — проверка того же слота, а не второй отзыв. У ответа один актуальный текст ≤500 от исторического адресата **в выбранной роли**, редактирование/снятие по тем же правилам; нет ветки ответов на ответ и передачи права новому manager. Ответ не раскрывает автора/его посещения и не требует личного контакта. Жалоба — на точную публичную ревизию отзыва или ответа, с причиной и коротким пояснением; автор получает причину отказа/снятия и может просить пересмотр через тот же Cases. Назначенный reviewer с действующими правами, step-up и COI; автор, адресат, заявитель, участник, исторический manager/creator и тренер этой встречи не разрешают свой спор. Пересмотр решения — другим доступным независимым reviewer; если такого нет, статус ожидающий, без обещанного срока. Не давать всей staff-очереди private evidence, не копировать private body в общий Case summary. Число жалоб, отсутствие ответа и недовольство адресата не скрывают отзыв автоматически. Давление, покупка положительных отзывов, угрозы не пустить на следующую игру, сговор и выдуманный опыт рассматриваются отдельно от негативной оценки услуги. Саморецензирование и повтор по author/event/subject/role блокируются сервером, смена idempotency key и withdrawal не открывают новый слот. Новая спорная отметка до публикации ставит hold. После публикации одностороннее изменение organizer-ом не удаляет критику: сохранить основание, открыть независимую проверку; бейдж заменить на «Основание уточняется», не раскрывая спор. Доказанное независимым решением отсутствие опыта или нарушение ведёт к снятию. Privacy/account ограничения применяются отдельно и одинаково к положительным и отрицательным текстам; нельзя маскировать organizer veto как массовую жалобу. На execute/replay, решении и чтении проверяются соответствующие актуальные права. UNKNOWN не считается успешной подачей и не пересылается новым намерением. ## Два внешних ориентира, а не перенос правил Airbnb требует релевантного личного опыта, запрещает давление и обмен вознаграждения на отзыв; несогласие с оценкой и субъективное мнение сами по себе не основание удаления. Наш вывод: отделить услугу/роль и независимый разбор от воли получателя. [Официальная политика Airbnb](https://www.airbnb.com/help/article/2673). ClassPass сообщает, что новые отзывы перестали быть анонимными, старые при этом не меняются, и описывает ответы партнёров. Наш вывод иной по публичной идентичности: для частных игр оставляем нейтральную подпись, сохраняя авторство внутри. Полезны точный контекст услуги и запрет ретроспективной смены аудитории. [Официальное описание ClassPass](https://classpass.com/partners/blog/classpass-review-system). Оба источника прочитаны 02.11.2026; их обещания, рейтинги и юридические формулировки не становятся правилами GoBadminton. ## Передача и пределы Ближайший implementation scope и минимальные проверки — в `CURSOR_BRIEF.md`; матрица решений — `ELIGIBILITY.json`; восемь интерактивных состояний — `index.html`. Это файлы одного предложения #394, не новый backlog и не запуск Cursor. Обязательных продуктовых вопросов Owner сейчас нет: предложен конкретный вариант. Фактическое обслуживание независимых Cases и доказуемость исторической роли — проверяемые release dependencies, не просьба о micro-GO. Без них public writer не включается. Сговора и узнавания автора по содержанию полностью устранить нельзя. STYLE_GUIDE_PARITY: использованы проверенные локальные токены, SurfacePanel, role badge, mini-tabs, Button, форма и семейство ProfileDialog/Spacious40 из frozen Guide; все 48 файлов manifest совпали с SHA256. Onest и логотип встроены из локальных product assets. Новая семантика role-review summary составлена из этих семей; отдельный design system не создавался. Галерея — интерактивная иллюстрация, а не копия полнофункционального приложения. Проверка файлов и JS описана в brief; browser visual QA и Owner UAT не заявлены.