Commit Graph

330 Commits

Author SHA1 Message Date
863b11be28 meta(handoff): write NEXT_SESSION — Task A DONE, Task B unblocked
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 10:11:19 +03:00
c196964d03 feat(snolla-local-admin): RESTORE DONE — local .NET admin live (6 /admin URLs)
Task A complete. Local catch-all IIS site `snolla` restored from RUVDS:
- Selective tar-copy ~100MB (excluded stale App_Data assets/galleries/themes
  8.76GB — now in MinIO), NOT the full 8.66GB.
- Web.config already pointed at mssql.kzntsv.site MoreThenCms (user snolla)
  + MinIO S3 drop-in with real keys (placeholder_count=0) — repoint not needed.
- Elevated setup script (ASCII-only, PS5.1 BOM-less-safe):
  scripts/local-snolla-admin-restore/setup-local-snolla-admin.ps1
- AppPool snolla (.NET v4.0, AppPoolIdentity, recycle@200MB), IIS site *:80,
  ACL, hosts-override (6 aliases -> 127.0.0.1), FW block inbound 80.
- Smoke GREEN: tandemmebel/labtools/labtoolspro/emspb/kupimknigi/on
  .snolla.com/admin/account/login -> 200, real MoreThenCms login form.

Unblocks Task B (on-snolla-vds-migration). MinIO upload-acceptance = manual
operator follow-up. Records: .tasks/snolla-local-admin-restore.md + STATUS.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 10:10:44 +03:00
d4278e79f9 meta(handoff): write NEXT_SESSION — snolla local admin + on-snolla design
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 09:45:32 +03:00
b1b0092cdc design(snolla): local .NET admin restore + on.snolla.com VDS migration
Two linked tasks, spec in .wiki/concepts/ per project-discipline.

Task A — snolla-local-admin-restore: восстановить локальный catch-all IIS-сайт
`snolla` (снесён 2026-06-08) копированием C:\sites\snolla\ с RUVDS (прод-админ
с MinIO drop-in), conn → mssql.kzntsv.site MoreThenCms. Доступ
<alias>.snolla.com/admin через hosts-override, один AppPool. Адреса + siteIds
извлечены из MoreThenCms DB read-only.

Task B — on-snolla-vds-migration (blocked by A): on.snolla.com (siteId
B9ECDB50…, alias on, "Internal Site", culture en) с RUVDS IIS → VDS Node
snolla-app 0.42.1, реконструкция Liquid-шаблонов из боевого сайта+админки
(исходников нет). По рецепту tandemmebel-vds-deploy-runbook.

Board entries: .tasks/STATUS.md + per-task files.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-20 09:45:06 +03:00
a02c4b86a2 wiki: ingest de-vds-3xui source chronicle + gitignore .tmp/.tasks/.lock
sources/de-vds-3xui-setup-2026-07-14.md (new) — session chronicle capturing
the 3x-ui 3.5.0 troubleshooting: login 403 = CSRFMiddleware (X-CSRF-Token,
GET {BP}csrf-token), direct DB insert into inbounds no longer renders
(client model split across clients/client_inbounds/client_traffics → use
panel API add with stringified settings), wrapper `x-ui setting` doesn't
persist creds (binary only). Reference JSON lifted from working nl-vds 32030.
Entity sources: bound. +index.md sources line, +log.md ingest entry.
gitignore: .tmp/ (cred-bearing local throwaway, like .scratch/) and
.tasks/.lock (runtime). .tmp/ removed from disk.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 15:01:26 +03:00
543ded79bd wiki: de-vds-3xui real RF-client confirmed (session via 32030)
User connected through the DE node right now — plain VLESS 32030 proven
working on real RF client again. Task [de-vds-3xui-setup] closed. Flipped
Проверено block to ; +log.md decision entry.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 14:57:52 +03:00
3e8c580b13 meta(tasks): close [de-vds-3xui-setup] in OpeItcLoc03/admin 2026-07-14 11:57:07 +00:00
f0965cf512 wiki: ingest de-vds-3xui (Fornex Germany VPN, plain VLESS 32030)
New entity de-vds-3xui — Germany VPS 130.17.17.158 (Fornex, Ubuntu 24.04),
3x-ui 3.5.0 / xray 26.7.11, plain VLESS 32030 security=none (analog of nl-vds-3xui;
masked protocols intentionally NOT raised). Captured 3.5.0 gotchas vs 3.2.7:
CSRF on all panel POSTs (X-CSRF-Token, GET {BP}csrf-token), direct DB INSERT
into inbounds no longer renders (client model split across clients/
client_inbounds/client_traffics → use panel API add), wrapper `x-ui setting`
doesn't persist creds (binary only). Server-side e2e verified; real RF-client
test pending user. +index.md, +log.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-14 14:40:23 +03:00
37c179601a meta(tasks): update [de-vds-3xui-setup] in OpeItcLoc03/admin 2026-07-14 11:40:17 +00:00
5d613c3405 meta(tasks): create [de-vds-3xui-setup] in OpeItcLoc03/admin 2026-07-14 11:18:49 +00:00
ee7f5a2d18 chore(handoff): tandemmebel 8df10ee deploy DONE + loose end (Portainer STAGING-comments)
Сессия 2026-07-13-tandemmebel-8df10ee-deploy завершена. Deploy на прод GREEN,
задача закрыта (fe8e5882). NEXT_SESSION.md дополнен этой сессией поверх прежних
pending-треков (vehicles-loader 0.4.1 verify ждёт 07-14 06:21 MSK, books-vds
консолидация, ntfy pin). Loose end: Portainer stack 20 устаревшие STAGING-комменты
(косметика, rule line уже LIVE).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 22:52:47 +03:00
fe8e58824e meta(tasks): close [tandemmebel-deploy-drop-fb-tw-gplus-buttons] in OpeItcLoc03/admin 2026-07-13 19:51:36 +00:00
632c843fd5 deploy(tandemmebel): 8df10ee LIVE — drop FB/Twitter/Google+ share buttons
In-place template bump на прод (stack 20): 0cd9351 → 8df10ee. fix(web) remove
FB/Twitter/Google+ share-кнопки (extremist-icon compliance РФ), keep VK+OK.
Template-only (apps/web/views/social_buttons.liquid, 1 file 12 delet), snolla pin
0.42.1 НЕ менялся.

Верификация перед сборкой поймала расхождение: tandemmebel-записка утверждала
live=ed96b18/0.42.0, фактически крутился 0cd9351/0.42.1 (in-place bump 2026-07-12).
gitea compare 0cd9351...8df10ee = total_commits:1 → фикс один коммит поверх 0.42.1
(правильная база), yarn.lock идентичен → регрессии sitemap нет.

Completeness-gate (staging :5020): sitemap NEW==PROD 184=184 identical, 0
регрессий. Live-smoke С VDS 4 share-block страницы (project-post ×2,
/furniture/bedrooms, /furniture/kitchens/classic) — vk+ok на месте, fb/tw/gp=0.
TLS-серт CN=tandemmebel.ru не дёрнут (in-place swap). Tandemmebel-сессия подтвердила.

- .tasks/STATUS.md: _Updated 2026-07-13 строка (deploy-результат + discrepancy)
- .wiki/concepts/tandemmebel-vds-deploy-runbook.md: секция In-place bump 8df10ee
  (предсборочная верификация, build→staging→gate→swap, rollback, hygiene-заметка
  про устаревшие STAGING-комменты в Portainer stack file)
- host-stacks/vds-kzntsv/tandemmebel.compose.yml: image 8df10ee + LIVE-комменты
  + история bump'ов (source-of-truth синхронен с Portainer)

Rollback: PUT стека 20 → 0cd9351 (0.42.1, {% order %} fix) / ed96b18 (0.42.0) /
b02ca18 в registry; ИЛИ revert DNS→80.64.31.36.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 22:50:49 +03:00
94e5d77c82 meta(tasks): create [tandemmebel-deploy-drop-fb-tw-gplus-buttons] in OpeItcLoc03/admin 2026-07-13 19:22:40 +00:00
816c0e027d chore(handoff): next-session note — vehicles-loader 0.4.1 verify pending + books-vds consolidation eval
Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 18:46:56 +03:00
7e02d61128 docs(wiki): vds-kzntsv disk cleanup 94%→74% + container-log rotation guard
Container json-logs hit 19GiB (owncloud 13GiB, traefik 2.8, gitea 1.9) —
no rotation set on infra (unlike books-vds guard). Truncated logs +
builder prune + apt clean + journal vacuum: ~28GiB freed, 94%→74%
(11→39GiB free). Added /etc/logrotate.d/docker-containers (copytruncate
200M, rotate 3, hourly) + hourly cron. Reduced GC-cron urgency note.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-13 18:44:43 +03:00
8230f89198 meta(tasks): update [vehicles-loader-redeploy-per-group-rate-diff] in OpeItcLoc03/admin 2026-07-13 14:19:54 +00:00
2e18002958 meta(tasks): update [vehicles-loader-redeploy-per-group-rate-diff] in OpeItcLoc03/admin 2026-07-13 14:14:00 +00:00
f3395b3a64 meta(tasks): create [vehicles-loader-redeploy-per-group-rate-diff] in OpeItcLoc03/admin 2026-07-13 14:08:17 +00:00
135da254f2 chore: gitignore .zcode/ (harness scratchpad — plan-mode plans, not project code) 2026-07-12 13:28:21 +03:00
b5839bd02d feat(tandemmebel): in-place bump 0.42.0 → 0.42.1 LIVE (stack 20, order-tag fix)
Consumer bump by operator (blocker-pattern 2026-07-04 resolved without dev-source):
pin apps/web/package.json:12 + yarn install (lock 0.42.1/core 0.24.1/liquid 0.10.2/data 0.14.1)
+ commit 0cd9351 + push origin (ls-remote confirmed).

Build on VDS → registry.kzntsv.site/tandemmebel:0cd9351 (digest f29c187f).
Throwaway-staging :5020 from live env, healthy.
Completeness-gate С VDS: 184/184 parity (NEW==PROD), /articles 404 identical to
prod oracle → benign. 0.42.1 order-fix inert on blog-portfolio (no catalog).
Operator-gated PUT stack 20 (env 8/8 preserved, prune:false pullImage:true)
→ container 0cd9351+healthy ~8s. Live-smoke GREEN, TLS cert untouched.

Closes snolla 0.42.1 rollout — all 5 snolla sites now on VDS.
Rollback = tag ed96b18 (+ b02ca18) in registry.

- compose source-of-truth: tag + comment (0.42.1)
- board task: decisions log entry
- wiki: new tandemmebel-vds-deploy-runbook, bump recipe (4 sites), index, log
2026-07-12 13:26:28 +03:00
d3d0ff48ed feat(tandemmebel): cutover LIVE on VDS — last snolla site migrated
DNS reg.ru flipped, traefik Host-rule staging->prod, LE cert issued.
Live-smoke GREEN: all pages 200, sitemap 184 locs, sharp media OK.
Gotham-Pro.css latent prod bug fixed by cutover (0B->4436B).
Snolla 0.42.x tirazh now fully alive (5/5 stacks on VDS).
2026-07-12 12:48:20 +03:00
3adbe839f2 meta(handoff): mem_limit 512m тираж snolla + durable-конвенция; tandemmebel ждёт DNS
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:45:39 +03:00
9a92ff0b87 chore(vds): mem_limit 512m всему тиражу snolla (5 стеков live + compose-копии + вики-конвенция)
Тираж snolla (labtools.ru/17, emspb/18, labtools.pro/19, tandemmebel/20,
kupimknigi/21) шёл без mem_limit → cgroup-cap = вся память хоста (12.9 GiB),
одна течь могла съесть весь бокс. Выставил 512m (baseline ~100-200M, 2.5-5x запас)
на всех 5 живых стеках через env-preserving Portainer PUT + синхронизировал
source-of-truth compose. Все healthy, limit=536870912 подтверждён, labtools.pro 200.

Конвенция «app-стек обязан нести mem_limit» закреплена в
portainer-stack-management-vds § Convention + step 6 snolla-bump-рецепта.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:32:55 +03:00
3bc9992350 meta(handoff): тираж snolla 0.42.1 закрыт (3 live-редеплоя + вика); остался tandemmebel на DNS-отмашке
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:18:43 +03:00
8e3e5b4353 wiki(snolla-0.42.1): рецепт live-prod in-place bump + секции в 3 рунбука + index/log
Закрыт пропуск: тираж 0.42.1 не был зафиксирован в вике (таски emspb/labtools.pro
просили using-wiki).

- NEW concepts/snolla-live-prod-inplace-image-bump.md — переиспользуемый рецепт
  (build на VDS → throwaway-staging-acceptance С VDS → env-preserving Portainer PUT
  put-stack.js → live-smoke), встроен put-stack.js, гочи.
- UPDATE 3 рунбука секцией «0.42.1 in-place bump» (labtools.ru/emspb/labtools.pro)
  с образами/acceptance/rollback.
- FIX orphan: все 3 deploy-рунбука добавлены в index.md (не были каталогизированы).
- log.md: decision-запись.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:16:15 +03:00
0fd1c69515 fix(labtools.pro): press-forms счётчик 13→12 (прог-сверка против прод — прод-истина 12, мой ручной счёт задвоил тайл; парити не задет)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:07:08 +03:00
bcb4dc36be deploy(labtools.pro): LIVE на snolla 0.42.1 — in-place bump живого прода (стек 19)
Финал тиража 0.42.1 (3/3 live-редеплоя закрыты: labtools.ru+emspb+labtools.pro).
Оператор дал отмашку на боевой apply.

- labtools-pro:0610432 (0.28.7→0.42.1, digest 3d543fc). Acceptance С VDS на
  новом образе: 25 sitemap page-locs все 200, 0 потерь контента.
- Order-парити 3 секции MATCH (фикс liquid 0.10.2): presses=plg-20,plg-12;
  milling=milling-jars,grinding-media; press-forms=13 == прод.
- Live-smoke GREEN, TLS CN=labtools.pro не тронут. Rollback labtools-pro:7bd9fae.

Compose source-of-truth обновлён. Прог квитирован.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 12:04:04 +03:00
55a873731f deploy(labtools.ru+emspb): LIVE на snolla 0.42.1 — in-place bump живого прода (стеки 17/18)
Тираж 0.42.1, оператор дал отмашку на боевой apply. Оба = редеплой ЖИВОГО
прода in-place (не greenfield), acceptance на новом образе С VDS ДО swap.

- labtools.ru: labtools:566d41c (0.28.2→0.42.1). Sitemap 38 page-locs
  (0.42.1 починил дефицитный sitemap: sections 1→6, products 2→24),
  order-фикс plg-20,plg-12,plg-25,pgr-10 == прод, 0 потерь контента.
  Live-smoke GREEN, TLS не тронут. Rollback labtools:43e28ba.
- emspb.ru: emspb:95a5c42 (0.28.4→0.42.1). 29 sitemap-роутов все 200,
  0 потерь. Live-smoke GREEN. TLS SAN-серт валиден. Rollback emspb:b6e361a.

Compose source-of-truth обновлён на новые теги. Оба прога квитированы.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 11:59:08 +03:00
5e1b0b2538 meta(tasks): create [labtools-pro-deploy-snolla-0-42-1] in OpeItcLoc03/admin 2026-07-05 08:57:29 +00:00
ddb82815c7 meta(tasks): close [emspb-deploy-snolla-0-42-0] in OpeItcLoc03/admin 2026-07-05 08:36:03 +00:00
173278dab7 meta(tasks): create [emspb-deploy-snolla-0-42-1] in OpeItcLoc03/admin 2026-07-05 08:35:57 +00:00
d3b442a775 meta(tasks): create [emspb-deploy-snolla-0-42-0] in OpeItcLoc03/admin 2026-07-05 08:34:30 +00:00
a57504c4e5 meta(tasks): create [labtools-ru-deploy-snolla-0-42-1] in OpeItcLoc03/admin 2026-07-05 08:31:44 +00:00
78f23a6561 cutover(kupimknigi): LIVE на VDS — DNS reg.ru→89.253.255.94, боевой Host в стек 21, LE-серт GREEN
Оператор флипнул DNS, подтверждён на ns1+ns2.reg.ru. Боевой Host(kupimknigi.spb.ru)
в стек 21 (staging-host убран), LE-серт CN=kupimknigi.spb.ru valid Jul5→Oct3.
Live-smoke GREEN: /→200 H1, robots/тема-css 200, callback 301. RUVDS=rollback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:50:35 +03:00
96ae400941 meta(handoff): поправка — тираж не завершён, ещё 3 сайта (labtools.ru/pro/emspb) в полёте на 0.42.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:34:07 +03:00
6f79ffc64e meta(handoff): kupimknigi добавлен в тираж (стек 21, 9608ff6) — оба сайта staging GREEN, ждут cutover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:32:27 +03:00
84f4852f7f deploy(kupimknigi): staging стек 21 (новый) → 9608ff6 (snolla 0.42.0) — smoke GREEN, паритет prod
[kupimknigi-deploy-snolla-0-42-0] 🟢 done. Собран на VDS, Portainer-стек 21 создан
(env verbatim из стека 20), контейнер healthy. Staging-smoke с VDS: / 200==prod,
H1 идентичен, тема-ассеты 200, форма+canonical паритет. Cutover=operator-gated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:31:33 +03:00
76f52661ca task(kupimknigi-deploy-snolla-0-42-0): VDS-staging образ на snolla@0.42.0
Финал тиража. dev-source victor/kupimknigi.spb.ru HEAD 9608ff6, код закрыт
(re-review PASS, docker-валидация GREEN). Одностраничник — deploy тривиальный.
Cutover operator-gated (kupimknigi DNS сейчас на RUVDS, разрулим отдельно).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 10:24:43 +03:00
a668313797 meta(handoff): staging пересобран на 0.42.0 (ed96b18); образ к cutover обновлён; deploy-таска 🟢
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:27:59 +03:00
5ef3dc1559 deploy(tandemmebel): staging стек 20 → ed96b18 (snolla 0.42.0/core 0.24.0) — DoD GREEN 172/172 + gallery 12/12
[tandemmebel-deploy-snolla-0-42-0] 🟢 done. Собран на VDS, стек 20 healthy,
acceptance#1 SSR /projects→200, acceptance#2 completeness-DoD с VDS зелёный.
Cutover остаётся DNS-gated ([tandemmebel-web-vds-deploy]) — образ к флипу=ed96b18.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:26:39 +03:00
4aa04d6f0f meta(tasks): [tandemmebel-deploy-snolla-0-42-0] 🔴 unblocked — dev запушил бамп sha ed96b18 (0.42.0); build на VDS запущен
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:18:55 +03:00
ed4c7b669b meta(tasks): [tandemmebel-deploy-snolla-0-42-0] 🔵 BLOCKED — консюмер-пин tandemmebel.ru не бампнут (0.40→0.42 не запушен); запрос dev-source отправлен
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:09:55 +03:00
056fdb2344 meta(tasks): create [tandemmebel-deploy-snolla-0-42-0] in OpeItcLoc03/admin 2026-07-04 19:59:45 +00:00
a19fac880a meta(handoff): cutover ОТЛОЖЕН оператором — триггер = владелец флипает DNS; порядок зафиксирован
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:30:50 +03:00
048954bca1 meta(handoff): gallery GREEN на b02ca18; next=cutover (gated); переписка с прогером заморожена оператором
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:25:54 +03:00
ea8672f09c deploy(tandemmebel): staging стек 20 → b02ca18 (core 0.16.2) — gallery GREEN 12/12
Ребилд по коррекции workshop: образ tandemmebel:b02ca18 (core 0.16.2 SlugFeedPage-fix,
digest f8672218) собран на VDS, стек 20 передеплоен (env 8/8, healthy). DoD-чек GREEN:
gallery-грид staging==prod точно на всех 12 роутах, крошки+title наполнены (были пустые),
байты 28508≈прод 28253. Предыдущий a173401 давал пустой грид — 0.16.2 закрыл.

Флагнул сомнение перед сборкой (DB-дамп: /gallery = конвенционный саб-роут, не feed) —
рендер-чек опроверг, фикс сработал. Cutover HELD. Прогеру не пинговал (по указанию оператора).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:25:04 +03:00
f1fb102328 meta(handoff): дефект = gallery FeedPage-VM; staging на a173401 ждёт фикс прогера + DoD-чек зашит
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 13:00:16 +03:00
b299c7d5da deploy(tandemmebel): staging стек 20 → a173401 (FeedPages) — роуты 404→200, но grid+крошки ПУСТЫЕ (VM-баг у прогера)
Ребилд по ops-таску workshop: образ tandemmebel:a173401 (snolla 0.35.0/core
0.16.0/data 0.13.0, digest 6962bd97) собран на VDS, стек 20 передеплоен через
Portainer API (env 8/8, healthy). FeedPages чинит роутинг gallery 404→200 (12/12).

RED на рендер-чеке: gallery-grid пустой на всех роутах (staging /galleries/*/images
= 0 vs prod 24/80/62), breadcrumb itemprop=name пустые. Корень — FeedPage-VM не
прокидывает item в шаблон. Деплой чист; фикс на прогере. Пропинговал с уликами.
Cutover HELD.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 12:58:40 +03:00
725c889d78 meta(handoff): tandemmebel sharp-staging GREEN but BLOCKED — operator found new visual defect on eyeball, fix next session
Session end. tandemmebel тираж: sharp-staging (стек 20, образ 68b93a9) зелёный по авто-гейтам,
но оператор на визуальной проверке https://tandemmebel.vds.kzntsv.site нашёл новый визуальный
дефект (специфику не назвал → спросить в новой сессии). Cutover HELD, RUVDS не тронут.
NEXT_SESSION.md с полной хронологией + состоянием инфры + cutover-планом + peer-дисциплиной.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 12:23:08 +03:00