core: каркас сборки, embedder, схема БД, 4 теста

This commit is contained in:
2026-10-02 01:06:06 +03:00
parent cefc17d782
commit 700508dc8e
13 changed files with 585 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
#!/bin/bash
# Создаёт эталонный корпус для приёмки memo (TESTING.md §0).
# 12-15 заметок в 3 коллекциях, кириллица + латиница + точные значения в каждой папке.
set -euo pipefail
ROOT="${1:-/root/WORK/memo-e2e}"
rm -rf "$ROOT"
mkdir -p "$ROOT/infra" "$ROOT/work/jira" "$ROOT/life/books"
# ---------- infra ----------
cat > "$ROOT/infra/servers.md" <<'EOF'
# Серверы
## Server4 (76.160)
Основной Proxmox-хост. Диск sdd — SSD, sda/b/c — HDD, причём sda на SMR-пластинах.
Утилиты parted нет: разметку делать через sgdisk или sfdisk.
## Server5 (88.130)
Две видеокарты: 3090 занята под Qwen VL и аудио, её не трогать. Эксперименты — только на 5090.
## Server6 (76.109)
Здесь живёт powerdns, он же LXC102. Отвечает за внутренние зоны.
EOF
cat > "$ROOT/infra/hosts.md" <<'EOF'
# Адреса внутренних сервисов
## Реестр образов
zot слушает на 192.168.88.35:8080, репозиторий приватный.
## Прокси
Корпоративные домены ходят через Caddy на 76.132. Отдельный Traefik на 76.195 заворачивает
домены вида .xx, а DNS под ним — 76.109.
## Nexus
Нексус доступен на 76.117, релизы публикует CI/CD, руками артефакты не заливать.
EOF
cat > "$ROOT/infra/domains.md" <<'EOF'
# Домены и DNS
## Внутренние зоны
Основой для DNS и mDNS служит kdns, он же pw.binom.dns.
## LLM-роутер
llm.binom.pw работает через Bifrost, виртуальные ключи раздаёт сам роутер.
## Реестр
Домашний реестр библиотек — nexus.xx, репозиторий caffeine.
EOF
cat > "$ROOT/infra/backup.md" <<'EOF'
# Резервное копирование
## Postgres
Дампы снимаются в custom-формате. При восстановлении pg_restore может выйти мгновенно
с кодом ноль и ничего не сделать — проверять, что объекты реально появились.
## Медиа
Джоб копирования зеркал для очков идёт через NATS и складывает результат в S3 SeaweedFS.
EOF
# ---------- work/jira ----------
cat > "$ROOT/work/jira/access.md" <<'EOF'
# Доступы
## OTP-прокси
Корпоративные ресурсы ходят через OTP, файлы лежат в /root/OTP/. Jira отвечает на jira.mcp.xx.
## TeamCity
Сборки живут в teamcity.isb, статусы и логи — только через тот же OTP-прокси.
## Git
Клонирование корпоративных репозиториев с bitbucket возможно лишь по HTTPS, git@ не работает.
EOF
cat > "$ROOT/work/jira/flow.md" <<'EOF'
# Рабочий поток
## Задачи от агентов
Задача от агента оформляется спекой в отдельном файле, итог работы — комментарий в Vikunja.
## Тикеты
Тикет TEST-4173 закрыт после того, как сборка перестала падать на шаге тестов.
EOF
cat > "$ROOT/work/jira/pitfalls.md" <<'EOF'
# Грабли
## Хелм
Helm upgrade в k3s теряет values, если передавать их через --set. Восстанавливать из истории релиза.
## TeamCity
Если прогон висит больше часа, смотреть лог агента, а не перезапускать сборку слепо.
EOF
cat > "$ROOT/work/jira/ci.md" <<'EOF'
# CI
## Gitea Actions
Раннер живёт в LXC105 на 76.112. Сироты процессов podman и unity съедают диск и валят сборку.
EOF
# ---------- life/books ----------
cat > "$ROOT/life/books/iphuck.md" <<'EOF'
# iPhuck 10
## Про роман
Роман Пелевина, 2017 года. Рассказчик — алгоритмический следователь Порфирий Петрович,
он же литературный негр, он же полицейская машина.
## Канон
Канон Порфирия Петровича лежит в /root/BOOKS/iphuck10/. Тон — высокий штиль, смешанный
с сухим канцеляритом.
EOF
cat > "$ROOT/life/books/audiobooks.md" <<'EOF'
# Аудиокниги
## Библиотека
Книги хранятся в Audiobookshelf. Карточку чинят вручную, если метаданные подтянулись от другого издания.
## Плеер
Для очков RayNeo X2 книги транскодируются в зеркала, аудио идёт отдельными дорожками.
EOF
cat > "$ROOT/life/books/history.md" <<'EOF'
# История
## Античность
Первый том заканчивается на правлении Траяна, 117 год нашей эры.
EOF
cat > "$ROOT/life/books/notes.md" <<'EOF'
# Заметки о чтении
## Привычка
Читаю по вечерам, отмечаю цитаты в markdown, потом ищу их семантическим поиском.
EOF
ls -R "$ROOT"
echo "OK: $(find "$ROOT" -name '*.md' | wc -l) заметок"