Комментарии на карте
Обсуждение в точке карты: заметка с ответами, упоминаниями коллег через @ и отметкой «решено». Ссылку на ветку можно отправить — она откроет карту в этом месте.
Возможности
- Ветка обсуждения в точке карты: «Новый» → щелчок по месту → текст → «Опубликовать». Ветка помнит вид карты и, если щёлкнули по трубе или узлу, — этот объект.
- Ответы, правка и удаление своих сообщений; Ctrl+Enter — отправить.
- @упоминания по логину: упомянутый увидит ветку во вкладке «Мне» и значок «Есть новое».
- «Решено» закрывает ветку («Решено: кто, когда»); новый ответ открывает её снова, есть и «Открыть снова».
- Вкладки «Открытые», «Решённые», «Мне», поиск по тексту, «Точки на карте» — все ветки значками на карте.
- «Скопировать ссылку на ветку» — ссылка откроет карту в точке ветки и саму ветку.
Как это работает
Ветки хранятся в базе города (tgid_map_thread, сообщения — tgid_map_comment), поэтому их видят все пользователи этого города. Упоминания разбираются из текста по @логин и сверяются со списком пользователей. Непрочитанное считается для каждого отдельно (tgid_map_comment_seen): новые сообщения других в ветках, где вы писали или где вас упомянули.
Удаление: сообщение, на которое уже ответили, остаётся строкой «сообщение удалено», чтобы не терялся смысл ответов; ветка из одного сообщения удаляется целиком («Это единственное сообщение — ветка удалится целиком. Удалить?»).
Что нужно для работы
- Вход в систему, любая роль: писать и читать может каждый, кто видит карту.
- Список людей для @упоминаний — из базы пользователей; при входе через роли PostgreSQL — из ролей.
- Миграция
20261030_map_comments.sqlв базе города (API применяет её сам).
Шаги
Откройте «Инструменты» и наберите в поиске «Комментарии на карте» — пункт выделен рамкой.

Нажмите пункт — откроется окно.

«+ Новый» — окно уступает карту: щёлкните место, о котором речь (Esc — отмена). Окно вернётся с полем «Что обсудить»; @логин упоминает коллегу. Ctrl+Enter или «Опубликовать» создаёт ветку.

Ветка открыта: место на карте, сообщения с авторами, поле ответа. Ссылка на ветку копируется кнопкой — она откроет карту в этой точке. «Решено» закрывает ветку: она уходит из «Открытых» в «Решённые», но не удаляется. Отметка «Точки на карте» показывает все ветки значками.

Примеры
Парит у камеры. Обходчик заметил пар у камеры, открывает «Комментарии на карте» → «Новый», щёлкает по камере и пишет: «Здесь парит у камеры, @petrov.s проверьте, пожалуйста». Инженер видит «Есть новое», открывает ветку, ссылка ведёт к камере. После ремонта он отвечает «Заменили сальник» и нажимает «Решено».
Если не получается
- «Комментарии не загружены», «Ветка не открылась» — нет связи с сервером; повторите.
- «Комментарий не опубликован» — пустой текст или длиннее 4000 знаков.
- Упоминание не сработало — логин написан с ошибкой: подсказка при вводе «@» предлагает существующих.
Для разработчика
- API:
routers/map_comments.py,database/map_comments.py—GET /api/v1/map-comments(списки, поиск, до 500),GET …/geojson(точки),GET …/unread,GET …/people,GET …/{thread_id},POST /api/v1/map-comments,POST …/{thread_id}/comments,POST …/{thread_id}/resolve|reopen,PATCH|DELETE …/comments/{comment_id}. - Веб:
components/MapCommentsDialog.vue; ссылка на ветку — параметр&c=в адресе карты. - Тесты:
tests/test_map_comments.py.
