From 64c36cdccd6819842e33a8d42c9d5366e7ce68d5 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 24 Sep 2026 13:45:10 +0600 Subject: [PATCH] [2026-09-24] eagle: personal/plans/lampac-watched-to-watchlist.md --- personal/plans/lampac-watched-to-watchlist.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/personal/plans/lampac-watched-to-watchlist.md b/personal/plans/lampac-watched-to-watchlist.md index 2cba2fd4..f3cd1226 100644 --- a/personal/plans/lampac-watched-to-watchlist.md +++ b/personal/plans/lampac-watched-to-watchlist.md @@ -277,6 +277,28 @@ timecodes.identity ('movie-674' / '674_movie' — строгие формы, и - **Fix (ждёт команды Alex):** bind-mount `database/` + строка бэкапа в nightly. До bind-mount КАЖДОЕ автообновление lampac сносит историю. +### ✅ FIX ВЫПОЛНЕН 2026-09-24 13:38–13:50 (по команде «чини») + +| Что | Детали | +|---|---| +| bind-mount | `./database:/lampac/database` в `/srv/dev-disk-by-uuid-6194539b-.../lampac/docker-compose.yml`; каталог создан `install -d -o 1000 -g 1000` (uid лампака = 1000 = kraken на хосте). Бэкап compose: `docker-compose.yml.bak-dbmount-20260924-1100`. Контейнер пересоздан `docker compose up -d lampac` | +| Проверка | mount в inspect ✓, `TimeCode.sql`+WAL создались **на хосте** ✓, `loaded module: TimeCode` ✓, HTTP :9118 → 200 ✓ | +| Бэкап в nightly | Блок ПЕРЕД sync-from-lampac: `sqlite3 /TimeCode.sql ".backup ~/backup/timecode/TimeCode-$(date +%F).sql"` + retention 30 дней. md5 нового `~/scripts/watchlist-nightly.sh` = `afabbb82f1234496521083ebd7b19eaf`. Прогон вручную ✓ (снапшот 24КБ со схемой) | +| `.env` | `LAMPAC_TIMECODE_DB` → хост-путь `/srv/.../lampac/database/TimeCode.sql` (модуль читает напрямую, без docker cp). Бэкап `.env.bak-dbmount-20260924`. Dry-run модуля ✓ (0 записей — ожидаемо, БД свежая) | +| Репо | коммит `4266e37` (устаревший комментарий «БД НЕ bind-mounted»), запушен, на Кракене fast-forward ✓ | + +**🔴 Грабля №18 (новая, найдена при фиксе): SQLite WAL.** БД TimeCode живёт +в WAL-режиме: свежие данные — в `TimeCode.sql-wal`, главный `.sql` может +быть пустой оболочкой (проверено: `docker cp` одного файла → `no such +table`). Голый `cp`/`docker cp` одного `.sql` — НЕ бэкап. Чтение — только +(а) напрямую из каталога со всеми тремя файлами (main+wal+shm — теперь так +делает модуль через хост-путь), (б) `sqlite3 X ".backup Y"` — консистентный +однофайловый снапшот (так делает nightly). + +**Восстановление «Мастерской Сатаны» [x]:** записи больше нет; канал +проставит галку сам при повторной отметке — открыть фильм в Lampa и +перемотать на финальные титры (порог percent>=90 заодно откалибруется). + ### Осталось (не блокирует работу канала) - ⏳ **Калибровка порога**: досмотреть фильм из вотчлиста в Lampa → вычитать