# RAA deployment Last updated: 2026-08-04. RAA is not a separate code project anymore. The source of truth for code and documentation is: - local workspace: `D:\DEVELOPMENT\new_vk_parser` - canonical Gitea repo: `http://192.168.1.135:3000/exostring/new_vk_parser.git` - branch: `main` The old local copy `D:\DEVELOPMENT\raa-parser_poster` and old Gitea repo `exostring/raa-parser_poster.git` are not the deployment source of truth. Do not continue feature work there. ## Runtime - Public admin URL: `https://raa.panel.f-n8.ru` - Coolify project/environment: `n8_parser` / `production` - Coolify app: `RAA admin` - Coolify app UUID: `korokrhpoyqxf0nw2y8vk7lp` - Coolify git repository: `http://192.168.1.135:3000/exostring/new_vk_parser.git` - Coolify git branch: `main` - Postgres container: `m9v14hzfh5mk9kelxzcqvhc6` - Postgres DB/user: `raa_parser` / `raa_parser_user` - Destination: `raa-fn8`, CTID `105`, IP `192.168.1.105` - Edge proxy: Caddy in CTID `110` proxies `raa.panel.f-n8.ru` to Coolify Traefik at `192.168.1.105:80` - Health check: `https://raa.panel.f-n8.ru/health` ## Per-Project Settings These values belong in Coolify env or the RAA database, not in code. Coolify env/secrets: - `ADMIN_SITE_TITLE=RAA Редакторская` - `ADMIN_APP_TITLE=RAA Редакторская` - `DB_*` for `raa_parser` - `APP_SECRET_KEY` - `ADMIN_BOOTSTRAP_LOGIN` - `ADMIN_BOOTSTRAP_PASSWORD` - `TG_BOT_TOKEN` copied from FN-8 - `TELEGRAM_API_ID` copied from FN-8 - `TELEGRAM_API_HASH` copied from FN-8 - `VK_ACCESS_TOKEN` copied from FN-8 for parsing Database settings: - `local_bot_api_url=http://127.0.0.1:8081` - `tg_media_channel_id=-1004312015562` (`VK RAW RAA`) - `tg_poster_chat_id=-1001303630155` (`Red Airsoft | Страйкбол`) - `publication_common_tags=#raa_news #страйкбол` - `vk_poster_owner_id=-36860851` - `vk_poster_from_group=true` - `vk_poster_access_token` is the RAA community token - `site_poster_enabled=false` - `site_poster_provider=""` until a website adapter is configured - Optional social text headers/footers: - `tg_poster_header_text` / `tg_poster_footer_text` - `vk_poster_header_text` / `vk_poster_footer_text` - `max_poster_header_text` / `max_poster_footer_text` Empty header/footer settings add nothing. MAX sends wrapper text as HTML. For clickable text use: `Link text`. Wrapper HTML is normalized before publishing: broken/unsupported tags are stripped, readable text is kept. ## Workers As last checked on 2026-08-03: - `vk-parser=true` - `media-uploader=true` - `ai-qualifier=false` - `ai-writer=false` - `tg-poster=false` - `vk-poster=false` - `site-poster=false` - `tg_poster_enabled=false` - `vk_poster_enabled=false` AI qualifier/writer are configured with user-provided token, models, and prompts, but both the worker controls and double-safety settings were still off. Turning them on will spend LLM tokens and process the pending RAA raw posts. ## RAA Categories RAA categories live in the RAA `content_categories` table. The UI has only `name`, `tag`, `sort_order`, status, and actions; do not add separate category description or site fields for RAA unless the user asks for a website taxonomy. Current active categories: - `1` `AEG — Страйкбольные электропневматические приводы: автоматы, пистолеты-пулемёты, карабины, дробовики на электроприводе. Новинки, обновления линеек, сравнения моделей.` / `aeg_страйкбол` - `2` `GBB — Газовые страйкбольные приводы всех форм-факторов: пистолеты, автоматы, пистолеты-пулемёты на газовом приводе. GBB, GBBR, CO2, AEP.` / `gbb_страйкбол` - `3` `СПРИНГ — Пружинные болтовые снайперские реплики. Новинки, апгрейд, обзоры болтовок.` / `спринг_страйкбол` - `4` `HPA / ВВД — Системы на внешнем баллоне высокого давления: движки, регуляторы, линии, баллоны, переходники, настройка.` / `ввд_страйкбол` - `5` `ПИРОТЕХНИКА — Страйкбольная пиротехника: дымовые гранаты, шумовые устройства, сигнальные шашки, петарды, страйкбольные гранаты и подствольники.` / `пиротехника_страйкбол` - `6` `ТЮНИНГ — Внутреннее устройство и улучшение приводов: гирбоксы, хоп-апы, стволы, моторы, шестерни, поршни, электроника, платы управления, мастерские и сервисные центры.` / `тюнинг_страйкбол` - `7` `ОБВЕС — Всё, что крепится снаружи реплики: цевья, рукоятки, приклады, крышки, трассерные насадки, глушители, фонари, ЛЦУ, сошки, антабки, крепления.` / `обвес_страйкбол` - `8` `ПРИЦЕЛЬНЫЕ — Прицельная оптика: коллиматоры, прицелы, увеличители, голографические прицелы, ночная оптика, тепловизоры, целеуказатели.` / `прицел_страйкбол` - `9` `РАСХОДНИКИ — Шары всех калибров и производителей, аккумуляторы, газ, масла, смазки, батарейки, зарядные устройства и всё для обслуживания привода.` / `расходники_страйкбол` - `10` `НОЧНОЙ СТРАЙКБОЛ — Снаряжение, приводы и тактики для игры в тёмное время суток: ПНВ, тепловизоры, ИК-маркеры, трассеры, ИК-фонари, маскировка под ночь.` / `ночной_страйкбол` - `11` `ЗАЩИТА — Защита игрока на полигоне: маски, очки, сетки, шлемы, наушники, налокотники, наколенники, перчатки, щитки.` / `защита_страйкбол` - `12` `СНАРЯЖЕНИЕ И ЭКИПИРОВКА — Одежда, снаряжение и экипировка для страйкбола и поля: плитоносцы, разгрузки, подсумки, рюкзаки, боевые рубашки, штаны, берцы, флиски, панамы, балаклавы, ремни, медицина, связь.` / `снаряжение_страйкбол` - `13` `СОБЫТИЯ — Страйкбольные игры, сценарники, турниры, соревнования, выставки, фестивали и любые мероприятия сообщества.` / `события_страйкбол` - `14` `НОВОСТИ МАГАЗИНОВ — Поступления в магазины, новые позиции в каталогах, акции, распродажи, открытие новых точек продаж.` / `магазины_страйкбол` - `18` `Не целевой контент` / `НЦК` `sort_order=18` is a service category used by the AI writer contract for automatic rejection of non-target content. ## Deployment Notes Legacy CT cleanup: - CT `107` (`raa-parser-poster`) was stopped and removed on 2026-08-04. - CT `104` (`raa-sender`) is not an error: it still runs the legacy VK reposting app (`vk-reposter`) and can legitimately post to its configured Telegram channel. To deploy code changes for both FN-8 and RAA: 1. Work only in `D:\DEVELOPMENT\new_vk_parser`. 2. Push to `gitea/main`. 3. Both Coolify applications should deploy from the same commit SHA. 4. Trigger deployment manually via Coolify API only when the webhook does not queue it. 5. Poll deployment status sparingly; full Docker rebuilds can take 7-11 minutes because Coolify currently rebuilds the image with `--no-cache` and reinstalls Debian/ffmpeg dependencies. Do not put project-specific defaults into migrations or `.env.example`. Put them in Coolify env or each project's database settings.