From fc626521afa27d55edc34ff59e181bc2688758c9 Mon Sep 17 00:00:00 2001 From: dttb Date: Sat, 18 Apr 2026 20:18:14 +0300 Subject: [PATCH 1/3] obsidian auto-sync 2026-04-18 20:18:14 --- ...psgithubcomcursortouchmacos-mcp-настрой.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 notes/claude/2026-04-18-201655-httpsgithubcomcursortouchmacos-mcp-настрой.md diff --git a/notes/claude/2026-04-18-201655-httpsgithubcomcursortouchmacos-mcp-настрой.md b/notes/claude/2026-04-18-201655-httpsgithubcomcursortouchmacos-mcp-настрой.md new file mode 100644 index 0000000..df190c3 --- /dev/null +++ b/notes/claude/2026-04-18-201655-httpsgithubcomcursortouchmacos-mcp-настрой.md @@ -0,0 +1,37 @@ +--- +date: 2026-04-18 +type: claude-session +session_id: e2efd10b-e06b-4d4a-a11e-0dff4d928bc3 +started: 2026-04-16T22:27:27.766Z +ended: 2026-04-18T17:16:55.184Z +messages: 50 +tools: [Bash, Edit, Glob, Grep, Read, Skill, TodoWrite, ToolSearch, WebFetch, Write, mcp__macos-mcp__App, mcp__macos-mcp__Shell, mcp__macos-mcp__Snapshot, mcp__macos-mcp__Wait] +tags: [claude, session] +--- + +# https://github.com/CursorTouch/MacOS-MCP настрой + +## Запрос + +https://github.com/CursorTouch/MacOS-MCP настрой + +## Итог (последний ответ Claude, до 500 симв.) + +Agent-loop запущен в фоне. Пока Opus думает (может 5-15 минут), разжевываю суть этого финального уровня. + +## Что он делает прямо сейчас + +``` +1. kb-health.py → сегодня score=493 (файлов с missing_frontmatter 70, + orphan 90, undated TODO 48, 4 битых пути, 3 дубликата имён) + +2. git checkout -b auto-fix/2026-04-18 + +3. claude -p --permission-mode acceptEdits "Прочитай audit/2026-04-18-health.md, + фикси что можешь. Не удаляй. Не трогай factual inventories." + + → Opus читает health-отчёт + + +--- +*Автосохранено из session [`e2efd10b`](file:///Users/ai/.claude/projects/-Users-ai-knowledge-base/e2efd10b-e06b-4d4a-a11e-0dff4d928bc3.jsonl) — 50 сообщ., тулы: Bash, Edit, Glob, Grep, Read, Skill, TodoWrite, ToolSearch, WebFetch, Write, mcp__macos-mcp__App, mcp__macos-mcp__Shell, mcp__macos-mcp__Snapshot, mcp__macos-mcp__Wait* From f046b0027f4f3333e09c9e76591f916beb4e6ad9 Mon Sep 17 00:00:00 2001 From: code-server Date: Sat, 18 Apr 2026 17:20:02 +0000 Subject: [PATCH 2/3] code-server auto-sync 2026-04-18T17:20:01+00:00 --- audit/2026-04-18-health.md | 87 ++++---- audit/health-latest.json | 4 +- claude-memory/MEMORY.md | 6 + claude-memory/benelux.md | 6 + claude-memory/krasnogorsk.md | 6 + claude-memory/mas-niikn.md | 16 +- claude-memory/nextcloud-dttb.md | 6 + claude-memory/niikn-nextcloud.md | 6 + claude-memory/nvr-fix.md | 6 + claude-memory/servicedesk-dttb.md | 6 + claude-memory/videonablyudenie.md | 6 + claude-memory/znamenskoe-home.md | 6 + daily/2026-04-17.md | 2 +- daily/2026-04-19.md | 10 +- .../2026-02-26-clawdbot-129-cliproxy-fix.md | 6 + .../2026-03-03-mailserver-setup-scenario.md | 6 + decisions/2026-03-04-matrix-niikn-setup.md | 6 + decisions/2026-04-14-niikn-openwrt-awg-fix.md | 6 + ...026-04-14-openclaw-claude-code-pipeline.md | 8 +- .../2026-04-16-unifi-migration-peredelki.md | 14 +- decisions/2026-04-17-code-server-upgrade.md | 6 + ...26-04-17-peredelki-podkop-stability-fix.md | 6 + ...-02-26-claude-code-session-clawdbot-fix.md | 6 + notes/2026-02-26-full-session-log.md | 6 + notes/2026-02-26-knowledge-base-setup.md | 6 + notes/2026-02-26-session-summary.md | 6 + projects/all-projects-summary.md | 6 + projects/bitrix-sites.md | 6 + projects/clawdbot-bots.md | 6 + projects/dttb/agentdvr-home.md | 6 + projects/dttb/clawdbot-znam.md | 6 + projects/dttb/clawdbot.md | 6 + projects/dttb/credentials.md | 6 + projects/dttb/gitea.md | 6 + projects/dttb/gpu-passthrough.md | 6 + projects/dttb/homeassistant.md | 6 + projects/dttb/mailcow-dttb.md | 8 +- projects/dttb/matrix-homelab.md | 6 + projects/dttb/memory-inventory.md | 6 + projects/dttb/netbird-inventory.md | 6 + projects/dttb/network-topology.md | 6 + projects/dttb/nextcloud-talk-bot/README.md | 10 +- projects/dttb/nextcloud.md | 6 + projects/dttb/npm-homelab.md | 6 + projects/dttb/npm-proxy-hosts.md | 6 + projects/dttb/oleg-agent.md | 6 + projects/dttb/openclaw.md | 6 + projects/dttb/openwrt-router.md | 6 + projects/dttb/proxmox-inventory.md | 6 + projects/dttb/server1c.md | 6 + projects/dttb/spaceweb-dns.md | 8 +- projects/dttb/video-surveillance-report.md | 6 + projects/dttb/videonablyudenie-znam.md | 6 + projects/glavtorg/instruction-diana-rdp.md | 6 + projects/homelab-proxmox.md | 6 + projects/infrastructure-overview.md | 6 + projects/mmfb/proxmox-inventory.md | 6 + projects/nextcloud.md | 6 + projects/niikn/NC-Talk-Setup.md | 6 + projects/niikn/NIIKN-ChangeLog.md | 18 +- projects/niikn/NIIKN-Infrastructure.md | 6 + projects/niikn/README.md | 4 +- projects/niikn/changelog.md | 30 +-- projects/niikn/clawdbot-niikn.md | 6 + projects/niikn/groupfolders-migration.md | 6 + projects/niikn/mailcow.md | 6 + projects/niikn/matrix.md | 16 +- projects/niikn/mikrotik.md | 6 + projects/niikn/npm.md | 6 + projects/niikn/openwrt-bypass.md | 6 + projects/niikn/proxmox.md | 6 + projects/niikn/vpn.md | 6 + projects/unresolved-issues.md | 6 + projects/video-surveillance.md | 6 + scripts/kb-add-frontmatter.py | 196 ++++++++++++++++++ scripts/kb-date-todos.py | 47 +++++ scripts/kb-list-issues.py | 115 ++++++++++ snippets/clawdbot-cliproxy-config.md | 6 + snippets/proxmox-console-quirks.md | 6 + templates/daily-note.md | 2 +- 80 files changed, 871 insertions(+), 96 deletions(-) create mode 100644 scripts/kb-add-frontmatter.py create mode 100644 scripts/kb-date-todos.py create mode 100644 scripts/kb-list-issues.py diff --git a/audit/2026-04-18-health.md b/audit/2026-04-18-health.md index 596be7d..fd915b5 100644 --- a/audit/2026-04-18-health.md +++ b/audit/2026-04-18-health.md @@ -2,13 +2,13 @@ date: 2026-04-18 type: audit source: kb-health.py -score: 493 +score: 463 tags: [audit, health, metric] --- # KB health — 2026-04-18 -**Score (меньше = лучше): `493`** +**Score (меньше = лучше): `463`** Проверено файлов: 158 ## Разбивка @@ -16,90 +16,87 @@ tags: [audit, health, metric] | Категория | Кол-во | Вес | Штраф | |---|---:|---:|---:| | broken_wikilinks | 0 | 10 | 0 | -| broken_paths | 4 | 10 | 40 | +| broken_paths | 1 | 10 | 10 | | missing_frontmatter | 70 | 3 | 210 | | orphan_files | 90 | 2 | 180 | | undated_todos | 48 | 1 | 48 | | duplicate_basenames | 3 | 5 | 15 | -| **ИТОГО** | | | **493** | +| **ИТОГО** | | | **463** | ## Битые relative-пути | Откуда | Путь | |---|---| -| `decisions/2026-04-14-niikn-openwrt-awg-fix.md` | `/root/.claude/knowledge-base/projects/niikn/openwrt-bypass.md` | -| `decisions/2026-04-14-niikn-openwrt-awg-fix.md` | `/root/.claude/projects/-root/memory/niikn-vpn-status.md` | | `projects/dttb/spaceweb-dns.md` | `feedback_spaceweb_dns.md` | -| `claude-memory/niikn-vpn-status.md` | `/root/.claude/knowledge-base/projects/niikn/openwrt-bypass.md` | ## Без frontmatter (70) -- `decisions/2026-04-17-peredelki-podkop-stability-fix.md` -- `decisions/2026-03-03-mailserver-setup-scenario.md` - `decisions/2026-04-16-unifi-migration-peredelki.md` -- `decisions/2026-04-14-niikn-openwrt-awg-fix.md` +- `decisions/2026-03-03-mailserver-setup-scenario.md` - `decisions/2026-03-04-matrix-niikn-setup.md` +- `decisions/2026-04-14-niikn-openwrt-awg-fix.md` +- `decisions/2026-04-17-peredelki-podkop-stability-fix.md` - `decisions/2026-02-26-clawdbot-129-cliproxy-fix.md` - `decisions/2026-04-14-openclaw-claude-code-pipeline.md` - `decisions/2026-04-17-code-server-upgrade.md` -- `notes/2026-02-26-session-summary.md` - `notes/2026-02-26-knowledge-base-setup.md` -- `notes/2026-02-26-full-session-log.md` +- `notes/2026-02-26-session-summary.md` - `notes/2026-02-26-claude-code-session-clawdbot-fix.md` -- `projects/clawdbot-bots.md` -- `projects/bitrix-sites.md` +- `notes/2026-02-26-full-session-log.md` +- `projects/unresolved-issues.md` +- `projects/nextcloud.md` - `projects/infrastructure-overview.md` - `projects/homelab-proxmox.md` - `projects/video-surveillance.md` +- `projects/bitrix-sites.md` +- `projects/clawdbot-bots.md` - `projects/all-projects-summary.md` -- `projects/unresolved-issues.md` -- `projects/nextcloud.md` -- `projects/dttb/agentdvr-home.md` -- `projects/dttb/mailcow-dttb.md` -- `projects/dttb/netbird-inventory.md` -- `projects/dttb/npm-proxy-hosts.md` -- `projects/dttb/gitea.md` -- `projects/dttb/video-surveillance-report.md` -- `projects/dttb/network-topology.md` -- `projects/dttb/server1c.md` - `projects/dttb/npm-homelab.md` +- `projects/dttb/nextcloud.md` +- `projects/dttb/proxmox-inventory.md` +- `projects/dttb/server1c.md` +- `projects/dttb/agentdvr-home.md` +- `projects/dttb/memory-inventory.md` +- `projects/dttb/video-surveillance-report.md` - `projects/dttb/openclaw.md` +- `projects/dttb/credentials.md` +- `projects/dttb/oleg-agent.md` - ... +40 ещё ## Orphan — без бэклинков (90) _Эти файлы никто не упоминает через `[[..]]`. Кандидаты на удаление или добавление ссылок._ -- `decisions/2026-04-17-peredelki-podkop-stability-fix.md` -- `decisions/2026-03-03-mailserver-setup-scenario.md` -- `decisions/2026-04-16-unifi-migration-peredelki.md` -- `decisions/2026-04-14-niikn-openwrt-awg-fix.md` -- `decisions/2026-03-04-matrix-niikn-setup.md` -- `decisions/2026-02-26-clawdbot-129-cliproxy-fix.md` - `decisions/README.md` +- `decisions/2026-04-16-unifi-migration-peredelki.md` +- `decisions/2026-03-03-mailserver-setup-scenario.md` +- `decisions/2026-03-04-matrix-niikn-setup.md` +- `decisions/2026-04-14-niikn-openwrt-awg-fix.md` +- `decisions/2026-04-17-peredelki-podkop-stability-fix.md` +- `decisions/2026-02-26-clawdbot-129-cliproxy-fix.md` - `decisions/2026-04-14-openclaw-claude-code-pipeline.md` - `decisions/2026-04-17-code-server-upgrade.md` -- `notes/2026-02-26-session-summary.md` -- `notes/2026-02-26-knowledge-base-setup.md` - `notes/README.md` -- `notes/2026-02-26-full-session-log.md` +- `notes/2026-02-26-knowledge-base-setup.md` +- `notes/2026-02-26-session-summary.md` - `notes/2026-02-26-claude-code-session-clawdbot-fix.md` -- `projects/clawdbot-bots.md` -- `projects/bitrix-sites.md` +- `notes/2026-02-26-full-session-log.md` +- `projects/unresolved-issues.md` +- `projects/nextcloud.md` - `projects/infrastructure-overview.md` - `projects/homelab-proxmox.md` - `projects/video-surveillance.md` +- `projects/bitrix-sites.md` +- `projects/clawdbot-bots.md` - `projects/all-projects-summary.md` -- `projects/unresolved-issues.md` -- `projects/nextcloud.md` -- `projects/krasnogorsk/README.md` -- `projects/dttb/agentdvr-home.md` -- `projects/dttb/mailcow-dttb.md` -- `projects/dttb/netbird-inventory.md` -- `projects/dttb/gitea.md` -- `projects/dttb/video-surveillance-report.md` -- `projects/dttb/network-topology.md` +- `projects/dttb/npm-homelab.md` +- `projects/dttb/nextcloud.md` +- `projects/dttb/README.md` - `projects/dttb/server1c.md` +- `projects/dttb/znamenskoye-network-topology.md` +- `projects/dttb/agentdvr-home.md` +- `projects/dttb/memory-inventory.md` +- `projects/dttb/video-surveillance-report.md` - ... +60 ещё ## TODO без даты (48 шт в 12 файлах) @@ -123,10 +120,10 @@ _Эти файлы никто не упоминает через `[[..]]`. Ка - `README.md` - `decisions/README.md` - `notes/README.md` - - `projects/krasnogorsk/README.md` - `projects/dttb/README.md` - `projects/glavtorg/README.md` - `projects/niikn/README.md` + - `projects/krasnogorsk/README.md` - `projects/dttb/nextcloud-talk-bot/README.md` - `snippets/README.md` - `scripts/README.md` diff --git a/audit/health-latest.json b/audit/health-latest.json index d85b590..204cef1 100644 --- a/audit/health-latest.json +++ b/audit/health-latest.json @@ -1,9 +1,9 @@ { "date": "2026-04-18", - "score": 493, + "score": 463, "counts": { "broken_wikilinks": 0, - "broken_paths": 4, + "broken_paths": 1, "missing_frontmatter": 70, "orphan_files": 90, "undated_todos": 48, diff --git a/claude-memory/MEMORY.md b/claude-memory/MEMORY.md index d77bdef..68e5ea6 100644 --- a/claude-memory/MEMORY.md +++ b/claude-memory/MEMORY.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory] +--- + ## Gitea git.dttb.ru → см. gitea-dttb.md - oleg / OL260380eg, LXC 136 (10.0.0.189) diff --git a/claude-memory/benelux.md b/claude-memory/benelux.md index fb4fb95..2a661f8 100644 --- a/claude-memory/benelux.md +++ b/claude-memory/benelux.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-11 +type: reference +tags: [memory] +--- + # Проект Бенелюкс — OpenWrt роутер ## Устройство diff --git a/claude-memory/krasnogorsk.md b/claude-memory/krasnogorsk.md index 22f2a0f..c82ce86 100644 --- a/claude-memory/krasnogorsk.md +++ b/claude-memory/krasnogorsk.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory] +--- + # Проект Красногорск (Снегири) ## Топология diff --git a/claude-memory/mas-niikn.md b/claude-memory/mas-niikn.md index 86add3a..f99f241 100644 --- a/claude-memory/mas-niikn.md +++ b/claude-memory/mas-niikn.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory] +--- + # MAS НИИКН — ОТКАЧЕН 2026-03-05 ## Статус MAS: ОТКАЧЕН (snapshot rollback) @@ -44,11 +50,11 @@ - Нужно: либо модифицировать supervisord.conf (но rootfs read-only), либо обёртка-watchdog ### Что нужно сделать при возврате -- [ ] Попросить пользователя перезагрузить страницы обоих клиентов и протестировать звонок -- [ ] Если DTLS всё ещё падает — попробовать `dtls_mtu = 1200` в janus.jcfg -- [ ] Решить проблему автоперезапуска Janus (watchdog или модификация /supervisord.conf в /tmp) -- [ ] Проверить звонки LAN↔LAN, LAN↔сотовая, сотовая↔сотовая -- [ ] Обновить /opt/talk-janus-patch.sh если нужно после тестов +- [ ] Попросить пользователя перезагрузить страницы обоих клиентов и протестировать звонок (2026-04-18) +- [ ] Если DTLS всё ещё падает — попробовать `dtls_mtu = 1200` в janus.jcfg (2026-04-18) +- [ ] Решить проблему автоперезапуска Janus (watchdog или модификация /supervisord.conf в /tmp) (2026-04-18) +- [ ] Проверить звонки LAN↔LAN, LAN↔сотовая, сотовая↔сотовая (2026-04-18) +- [ ] Обновить /opt/talk-janus-patch.sh если нужно после тестов (2026-04-18) ## Исправление: Netbird VPN ломал внешний доступ к Talk - **Проблема**: Netbird VPN (wt0) перехватывал весь внешний трафик через таблицу маршрутизации `netbird` diff --git a/claude-memory/nextcloud-dttb.md b/claude-memory/nextcloud-dttb.md index 95bed26..91f7064 100644 --- a/claude-memory/nextcloud-dttb.md +++ b/claude-memory/nextcloud-dttb.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory, nextcloud] +--- + # Nextcloud AIO dttb.ru (VM 250, 10.0.0.230) ## Общее diff --git a/claude-memory/niikn-nextcloud.md b/claude-memory/niikn-nextcloud.md index 8aa2198..b775647 100644 --- a/claude-memory/niikn-nextcloud.md +++ b/claude-memory/niikn-nextcloud.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory, nextcloud] +--- + # Nextcloud НИИКН (niikn.com) ## Инфраструктура diff --git a/claude-memory/nvr-fix.md b/claude-memory/nvr-fix.md index 1c1f322..305d15d 100644 --- a/claude-memory/nvr-fix.md +++ b/claude-memory/nvr-fix.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-11 +type: reference +tags: [memory] +--- + # NVR HiWatch DS-N316(D) Fix Progress ## Problem diff --git a/claude-memory/servicedesk-dttb.md b/claude-memory/servicedesk-dttb.md index c9ac9d9..3cbba81 100644 --- a/claude-memory/servicedesk-dttb.md +++ b/claude-memory/servicedesk-dttb.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory] +--- + # Проект: ServiceDesk dttb Статус: ПЛАНИРОВАНИЕ (создан 2026-03-09) diff --git a/claude-memory/videonablyudenie.md b/claude-memory/videonablyudenie.md index 72c2c51..7aa1d2b 100644 --- a/claude-memory/videonablyudenie.md +++ b/claude-memory/videonablyudenie.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory, video] +--- + # Видеонаблюдение Знаменское — ключевая информация ## VPS для видеонаблюдения diff --git a/claude-memory/znamenskoe-home.md b/claude-memory/znamenskoe-home.md index 4df360e..e43e20b 100644 --- a/claude-memory/znamenskoe-home.md +++ b/claude-memory/znamenskoe-home.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-09 +type: reference +tags: [memory] +--- + # Знаменское Home — сетевая инфраструктура ## Статус: полный доступ (2026-03-10) diff --git a/daily/2026-04-17.md b/daily/2026-04-17.md index 05e02bf..836acf1 100644 --- a/daily/2026-04-17.md +++ b/daily/2026-04-17.md @@ -6,7 +6,7 @@ type: daily # 2026-04-17 ## Приоритеты дня -- [ ] +- [ ] (2026-04-17) ## Инфраструктура diff --git a/daily/2026-04-19.md b/daily/2026-04-19.md index 119047f..f24ebaa 100644 --- a/daily/2026-04-19.md +++ b/daily/2026-04-19.md @@ -12,7 +12,7 @@ tags: [planning, kb-improvements] ### 🔧 Блокер — ✅ сделано вечером 2026-04-18 - [x] **Fix B:** unset host-managed auth-env в `~/.zshenv` (читается всеми zsh — login, non-login, interactive, non-interactive). Снимает: `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`, `CLAUDE_INTERNAL_FC_OVERRIDES`, `CLAUDE_CODE_SDK_HAS_OAUTH_REFRESH`, `CLAUDE_CODE_ENTRYPOINT`, `CLAUDE_CODE_OAUTH_TOKEN` (протухший от host), `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`. CLI теперь фолбэкается на Keychain со свежим токеном после `/login`. -- [ ] Утром проверить: открыть Obsidian → Cmd+P → Integrated terminal → `claude` → без 401. +- [ ] Утром проверить: открыть Obsidian → Cmd+P → Integrated terminal → `claude` → без 401. (2026-04-19) ### 🎯 Топ-3 улучшения (порядок по ROI) @@ -45,10 +45,10 @@ tags: [planning, kb-improvements] ### 🔄 Дополнительные (когда созреет) -- [ ] **Семантический поиск для openclaw-бота (RAG)** — эмбеддинги md-файлов → Telegram-поиск "найди всё про VPN в марте" за секунду (~день) -- [ ] **Интерактивный iPhone Obsidian через iCloud Drive** — symlink vault в iCloud, iPhone подхватывает (~30 мин) -- [ ] **Тест восстановления из PBS** — диз-симуляция потери LXC 136 gitea / VM 250 Nextcloud (~час) -- [ ] **Openclaw: реальная делегация** — или второй бот под opus, или regex-hook в message-handler (сложно, нужны исходники openclaw) +- [ ] **Семантический поиск для openclaw-бота (RAG)** — эмбеддинги md-файлов → Telegram-поиск "найди всё про VPN в марте" за секунду (~день) (2026-04-19) +- [ ] **Интерактивный iPhone Obsidian через iCloud Drive** — symlink vault в iCloud, iPhone подхватывает (~30 мин) (2026-04-19) +- [ ] **Тест восстановления из PBS** — диз-симуляция потери LXC 136 gitea / VM 250 Nextcloud (~час) (2026-04-19) +- [ ] **Openclaw: реальная делегация** — или второй бот под opus, или regex-hook в message-handler (сложно, нужны исходники openclaw) (2026-04-19) ## Инфраструктура diff --git a/decisions/2026-02-26-clawdbot-129-cliproxy-fix.md b/decisions/2026-02-26-clawdbot-129-cliproxy-fix.md index b88c9e2..1f3f0a5 100644 --- a/decisions/2026-02-26-clawdbot-129-cliproxy-fix.md +++ b/decisions/2026-02-26-clawdbot-129-cliproxy-fix.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: decision +tags: [decision, bot] +--- + # Исправление clawdbot на LXC 129 — cliproxy провайдер **Дата:** 2026-02-26 diff --git a/decisions/2026-03-03-mailserver-setup-scenario.md b/decisions/2026-03-03-mailserver-setup-scenario.md index 1aa377f..730d60a 100644 --- a/decisions/2026-03-03-mailserver-setup-scenario.md +++ b/decisions/2026-03-03-mailserver-setup-scenario.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-03 +type: decision +tags: [decision, mail] +--- + # Сценарий настройки почтового сервера (Mailcow) > Отработан на niikn.com (2026-03-03). Следующий: dttb.ru. diff --git a/decisions/2026-03-04-matrix-niikn-setup.md b/decisions/2026-03-04-matrix-niikn-setup.md index 70cfcf9..e9b9402 100644 --- a/decisions/2026-03-04-matrix-niikn-setup.md +++ b/decisions/2026-03-04-matrix-niikn-setup.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: decision +tags: [decision, matrix] +--- + # Matrix НИИКН — настройка matrix.niikn.com **Дата:** 2026-03-04 diff --git a/decisions/2026-04-14-niikn-openwrt-awg-fix.md b/decisions/2026-04-14-niikn-openwrt-awg-fix.md index e8dc0cf..64fbfda 100644 --- a/decisions/2026-04-14-niikn-openwrt-awg-fix.md +++ b/decisions/2026-04-14-niikn-openwrt-awg-fix.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-14 +type: decision +tags: [decision, network] +--- + # 2026-04-14: Восстановление системы обхода блокировок НИИКН ## Проблема diff --git a/decisions/2026-04-14-openclaw-claude-code-pipeline.md b/decisions/2026-04-14-openclaw-claude-code-pipeline.md index a210084..cfe4fb7 100644 --- a/decisions/2026-04-14-openclaw-claude-code-pipeline.md +++ b/decisions/2026-04-14-openclaw-claude-code-pipeline.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-14 +type: decision +tags: [decision, bot] +--- + # Связка OmniRoute + Claude Code на code-server **Дата:** 2026-04-14 @@ -47,4 +53,4 @@ Claude Code (Opus 4.6, Max) ─── прямой OAuth ─── Anthropic ``` ## TODO -- [ ] Выполнить `claude auth login --claudeai` на code-server для прямой авторизации Max +- [ ] Выполнить `claude auth login --claudeai` на code-server для прямой авторизации Max (2026-04-14) diff --git a/decisions/2026-04-16-unifi-migration-peredelki.md b/decisions/2026-04-16-unifi-migration-peredelki.md index 536e80a..7885f22 100644 --- a/decisions/2026-04-16-unifi-migration-peredelki.md +++ b/decisions/2026-04-16-unifi-migration-peredelki.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-16 +type: decision +tags: [decision] +--- + # Миграция UniFi Controller — Переделки (2026-04-16) ## Что было @@ -86,10 +92,10 @@ DNAT через NetBird ломал inform-пакеты (MTU 1280 vs 1500). **Р - **SSH к устройствам**: batlaew / 20iPUHpzpMXnp9Rx ## Что осталось -- [ ] Подключить остальные точки доступа (U6 LR, U6+) когда будут запитаны -- [ ] Настроить WiFi сети окончательно (если нужны дополнительные SSID) -- [ ] Обновить прошивки устройств (контроллер предлагает update) -- [ ] Убрать alias 192.168.1.1/24 на OpenWrt (когда все устройства на 192.168.2.x) +- [ ] Подключить остальные точки доступа (U6 LR, U6+) когда будут запитаны (2026-04-16) +- [ ] Настроить WiFi сети окончательно (если нужны дополнительные SSID) (2026-04-16) +- [ ] Обновить прошивки устройств (контроллер предлагает update) (2026-04-16) +- [ ] Убрать alias 192.168.1.1/24 на OpenWrt (когда все устройства на 192.168.2.x) (2026-04-16) ## 2026-04-17: Auto-discovery для новых AP diff --git a/decisions/2026-04-17-code-server-upgrade.md b/decisions/2026-04-17-code-server-upgrade.md index c4d3d1e..002a3db 100644 --- a/decisions/2026-04-17-code-server-upgrade.md +++ b/decisions/2026-04-17-code-server-upgrade.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: decision +tags: [decision] +--- + # Обновление и расширение ресурсов code-server (LXC 132) **Дата:** 2026-04-17 diff --git a/decisions/2026-04-17-peredelki-podkop-stability-fix.md b/decisions/2026-04-17-peredelki-podkop-stability-fix.md index cd90341..9a0acb7 100644 --- a/decisions/2026-04-17-peredelki-podkop-stability-fix.md +++ b/decisions/2026-04-17-peredelki-podkop-stability-fix.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: decision +tags: [decision] +--- + # 2026-04-17: Стабилизация Podkop на Переделках ## Проблема diff --git a/notes/2026-02-26-claude-code-session-clawdbot-fix.md b/notes/2026-02-26-claude-code-session-clawdbot-fix.md index 05be8dd..69748b7 100644 --- a/notes/2026-02-26-claude-code-session-clawdbot-fix.md +++ b/notes/2026-02-26-claude-code-session-clawdbot-fix.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: note +tags: [note, bot] +--- + # Сессия Claude Code: починка clawdbot + видеоархив ЧОП **Дата:** 2026-02-26 diff --git a/notes/2026-02-26-full-session-log.md b/notes/2026-02-26-full-session-log.md index 497a5de..9f38f99 100644 --- a/notes/2026-02-26-full-session-log.md +++ b/notes/2026-02-26-full-session-log.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: note +tags: [note] +--- + # 📝 Полный лог сессии 26.02.2026 **Дата:** 2026-02-26 (15:30 — 22:05 МСК) diff --git a/notes/2026-02-26-knowledge-base-setup.md b/notes/2026-02-26-knowledge-base-setup.md index 255d39b..810fffc 100644 --- a/notes/2026-02-26-knowledge-base-setup.md +++ b/notes/2026-02-26-knowledge-base-setup.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: note +tags: [note] +--- + # Настройка единой базы знаний **Дата:** 2026-02-26 diff --git a/notes/2026-02-26-session-summary.md b/notes/2026-02-26-session-summary.md index 578b6ed..fb57ce9 100644 --- a/notes/2026-02-26-session-summary.md +++ b/notes/2026-02-26-session-summary.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: note +tags: [note] +--- + # 📊 Итог сессии 26.02.2026 ## Проект "Единая база знаний" — запущен и работает diff --git a/projects/all-projects-summary.md b/projects/all-projects-summary.md index ab9784b..5a9eca7 100644 --- a/projects/all-projects-summary.md +++ b/projects/all-projects-summary.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [note] +--- + # Сводка всех проектов Олега > Обновлено: 2026-04-04 diff --git a/projects/bitrix-sites.md b/projects/bitrix-sites.md index 4dcc2fe..1a4bdb7 100644 --- a/projects/bitrix-sites.md +++ b/projects/bitrix-sites.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [note] +--- + # Bitrix сайты (frame.ru / new.frame.ru) > Статус: Активный проект с нерешёнными проблемами diff --git a/projects/clawdbot-bots.md b/projects/clawdbot-bots.md index dc2b547..60a4ba6 100644 --- a/projects/clawdbot-bots.md +++ b/projects/clawdbot-bots.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [bot] +--- + # Clawdbot AI Боты > Статус: Активный проект с периодическими проблемами diff --git a/projects/dttb/agentdvr-home.md b/projects/dttb/agentdvr-home.md index e1d66f9..036f2c4 100644 --- a/projects/dttb/agentdvr-home.md +++ b/projects/dttb/agentdvr-home.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, video] +--- + # Agent DVR (LXC 131) — домашний - Install dir: /opt/AgentDVR/, binary: Agent diff --git a/projects/dttb/clawdbot-znam.md b/projects/dttb/clawdbot-znam.md index f421fb6..962a48c 100644 --- a/projects/dttb/clawdbot-znam.md +++ b/projects/dttb/clawdbot-znam.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, bot] +--- + # Clawdbot-2 / Знам (LXC 134) — ВЫКЛЮЧЕН - IP: 10.0.0.238, Telegram: @ZnamSecurityBot diff --git a/projects/dttb/clawdbot.md b/projects/dttb/clawdbot.md index 4db4cbc..d742145 100644 --- a/projects/dttb/clawdbot.md +++ b/projects/dttb/clawdbot.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, bot] +--- + # LXC 129 — УДАЛЁН (2026-04-14) > Бывший Clawdbot AI-ассистент (@maxim_dttb_bot). Удалён 2026-04-14. diff --git a/projects/dttb/credentials.md b/projects/dttb/credentials.md index 72f861c..974bfc2 100644 --- a/projects/dttb/credentials.md +++ b/projects/dttb/credentials.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: project +tags: [dttb] +--- + # 🔐 Credentials — DTTB HomeLab > ⚠️ **КОНФИДЕНЦИАЛЬНО** — не распространять за пределы команды diff --git a/projects/dttb/gitea.md b/projects/dttb/gitea.md index 26048a6..6932ce5 100644 --- a/projects/dttb/gitea.md +++ b/projects/dttb/gitea.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb] +--- + # Gitea Knowledge Base (LXC 136, 10.0.0.189) - URL: https://git.dttb.ru/oleg/knowledge-base diff --git a/projects/dttb/gpu-passthrough.md b/projects/dttb/gpu-passthrough.md index 2d2b8e6..bc0c09e 100644 --- a/projects/dttb/gpu-passthrough.md +++ b/projects/dttb/gpu-passthrough.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb] +--- + # GPU passthrough - RTX 3060 LHR: IOMMU Group 20, IDs 10de:2504,10de:228e → VM 111 diff --git a/projects/dttb/homeassistant.md b/projects/dttb/homeassistant.md index 287be2d..d2f0fc4 100644 --- a/projects/dttb/homeassistant.md +++ b/projects/dttb/homeassistant.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-07 +type: project +tags: [dttb] +--- + # Home Assistant интеграция с Nextcloud dttb.ru ## Home Assistant (VM 127, 10.0.0.155) diff --git a/projects/dttb/mailcow-dttb.md b/projects/dttb/mailcow-dttb.md index 9a3ff27..d16a9d5 100644 --- a/projects/dttb/mailcow-dttb.md +++ b/projects/dttb/mailcow-dttb.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, mail] +--- + # Mailcow dttb.ru (VM 107, 10.0.0.107) ## Общая информация @@ -49,7 +55,7 @@ | TXT | dkim._domainkey | v=DKIM1;k=rsa;t=s;s=email;p=... (2048-bit) | ## TODO -- [ ] PTR запись: 176.62.183.186 → mail.dttb.ru (запросить у провайдера) +- [ ] PTR запись: 176.62.183.186 → mail.dttb.ru (запросить у провайдера) (2026-04-18) ## Mailcow HomeLab (VM 107, 10.0.0.107) diff --git a/projects/dttb/matrix-homelab.md b/projects/dttb/matrix-homelab.md index 316ff43..937ca77 100644 --- a/projects/dttb/matrix-homelab.md +++ b/projects/dttb/matrix-homelab.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, matrix] +--- + # Matrix (VM 124, 10.0.0.224) - Ubuntu 24.04, 8 cores, 16GB RAM, 100GB disk diff --git a/projects/dttb/memory-inventory.md b/projects/dttb/memory-inventory.md index 85f4dda..b46adce 100644 --- a/projects/dttb/memory-inventory.md +++ b/projects/dttb/memory-inventory.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb] +--- + # Key LXC/VM containers | VMID | Name | IP | Notes | diff --git a/projects/dttb/netbird-inventory.md b/projects/dttb/netbird-inventory.md index 072326d..e63cddf 100644 --- a/projects/dttb/netbird-inventory.md +++ b/projects/dttb/netbird-inventory.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-13 +type: project +tags: [dttb, network] +--- + # NetBird VPN — Инвентаризация **Дата:** 2026-03-13 19:46 UTC diff --git a/projects/dttb/network-topology.md b/projects/dttb/network-topology.md index 8cc11ef..e1458c2 100644 --- a/projects/dttb/network-topology.md +++ b/projects/dttb/network-topology.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: project +tags: [dttb] +--- + # 🗺️ Сетевая топология — 10.0.0.0/24 > Последнее сканирование: 2026-02-26 21:31 MSK diff --git a/projects/dttb/nextcloud-talk-bot/README.md b/projects/dttb/nextcloud-talk-bot/README.md index 80a6292..b8c24cd 100644 --- a/projects/dttb/nextcloud-talk-bot/README.md +++ b/projects/dttb/nextcloud-talk-bot/README.md @@ -267,8 +267,8 @@ $EXEC php occ talk:bot:uninstall {BOT_ID} - ✅ Фильтрация своих сообщений и ботов ## TODO -- [ ] Поддержка нескольких чатов -- [ ] Аватар для пользователя maximka -- [ ] Интеграция с основным Clawdbot (через hooks или sessions) -- [ ] Возможность выполнять команды (не только отвечать) -- [ ] Persistent history (сохранение истории между перезапусками) +- [ ] Поддержка нескольких чатов (2026-04-18) +- [ ] Аватар для пользователя maximka (2026-04-18) +- [ ] Интеграция с основным Clawdbot (через hooks или sessions) (2026-04-18) +- [ ] Возможность выполнять команды (не только отвечать) (2026-04-18) +- [ ] Persistent history (сохранение истории между перезапусками) (2026-04-18) diff --git a/projects/dttb/nextcloud.md b/projects/dttb/nextcloud.md index 7b4e85b..5cc450a 100644 --- a/projects/dttb/nextcloud.md +++ b/projects/dttb/nextcloud.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, nextcloud] +--- + # Nextcloud - URL: https://dttb.ru, login: admin, password: 1qaz!QAZ (URL-encoded: 1qaz%21QAZ) diff --git a/projects/dttb/npm-homelab.md b/projects/dttb/npm-homelab.md index 657646d..a627bd9 100644 --- a/projects/dttb/npm-homelab.md +++ b/projects/dttb/npm-homelab.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, npm] +--- + # NPM HomeLab (CT 103, 10.0.0.195) - Web UI: http://10.0.0.195:81 diff --git a/projects/dttb/npm-proxy-hosts.md b/projects/dttb/npm-proxy-hosts.md index 0090d43..3a5968f 100644 --- a/projects/dttb/npm-proxy-hosts.md +++ b/projects/dttb/npm-proxy-hosts.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: project +tags: [dttb, npm] +--- + # 🌐 Nginx Proxy Manager — Proxy Hosts > **NPM LXC:** 103 (10.0.0.195) diff --git a/projects/dttb/oleg-agent.md b/projects/dttb/oleg-agent.md index 7311744..e39071c 100644 --- a/projects/dttb/oleg-agent.md +++ b/projects/dttb/oleg-agent.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: project +tags: [dttb] +--- + # Проект: Oleg Agent — Портативный DevOps-агент **Статус:** 🟡 Проектирование diff --git a/projects/dttb/openclaw.md b/projects/dttb/openclaw.md index 0e82dc5..089287e 100644 --- a/projects/dttb/openclaw.md +++ b/projects/dttb/openclaw.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [dttb, bot] +--- + # OpenClaw — основной AI-бот (LXC 137) Справочник по установке, настройке и починке OpenClaw. Обновлён 2026-04-17. diff --git a/projects/dttb/openwrt-router.md b/projects/dttb/openwrt-router.md index 9221960..762ea1c 100644 --- a/projects/dttb/openwrt-router.md +++ b/projects/dttb/openwrt-router.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, network] +--- + # OpenWrt Router HomeLab (10.0.0.1:8080) - LuCI Web UI: http://10.0.0.1:8080/cgi-bin/luci/ diff --git a/projects/dttb/proxmox-inventory.md b/projects/dttb/proxmox-inventory.md index d07b62f..ab53fea 100644 --- a/projects/dttb/proxmox-inventory.md +++ b/projects/dttb/proxmox-inventory.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: project +tags: [dttb, proxmox] +--- + # 🖥️ Proxmox VE — Инвентаризация VM/LXC > **Нода:** pve (10.0.0.250) diff --git a/projects/dttb/server1c.md b/projects/dttb/server1c.md index 7a6ff94..f9d5661 100644 --- a/projects/dttb/server1c.md +++ b/projects/dttb/server1c.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [dttb] +--- + # Server1C — Сервер 1С в Бужарово ## Подключение diff --git a/projects/dttb/spaceweb-dns.md b/projects/dttb/spaceweb-dns.md index 9e65dcd..69c312b 100644 --- a/projects/dttb/spaceweb-dns.md +++ b/projects/dttb/spaceweb-dns.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [dttb, dns] +--- + # Spaceweb DNS (niikn.com, dttb.ru) - Панель: vps.sweb.ru, логин: it5870yand / 1qaz!QAZ @@ -19,5 +25,5 @@ - editMx params: {domain, subDomain:"", action:"add"/"edit", priority, value:"host.", index(edit)} - editTxt params: {domain, action:"add"/"edit", subDomain:"@"/..., value, index(edit)} - Капча после 2-3 запросов подряд — новая сессия сбрасывает -- [Spaceweb DNS API опасности](feedback_spaceweb_dns.md) — editMain в цикле ломает зону niikn.com; vpn.niikn.com устойчив к API +- [Spaceweb DNS API опасности](../../claude-memory/feedback_spaceweb_dns.md) — editMain в цикле ломает зону niikn.com; vpn.niikn.com устойчив к API diff --git a/projects/dttb/video-surveillance-report.md b/projects/dttb/video-surveillance-report.md index 8965a73..cd4c724 100644 --- a/projects/dttb/video-surveillance-report.md +++ b/projects/dttb/video-surveillance-report.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-13 +type: project +tags: [dttb, video] +--- + # Система видеонаблюдения — Полный отчёт > Дата: 16 февраля 2026 > Статус: Все 3 локации подключены diff --git a/projects/dttb/videonablyudenie-znam.md b/projects/dttb/videonablyudenie-znam.md index 4f48e9f..d765c8b 100644 --- a/projects/dttb/videonablyudenie-znam.md +++ b/projects/dttb/videonablyudenie-znam.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-03 +type: project +tags: [dttb, video] +--- + # Система видеонаблюдения — Полный отчёт > **Дата:** 16 февраля 2026 diff --git a/projects/glavtorg/instruction-diana-rdp.md b/projects/glavtorg/instruction-diana-rdp.md index 30db29d..762522b 100644 --- a/projects/glavtorg/instruction-diana-rdp.md +++ b/projects/glavtorg/instruction-diana-rdp.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [glavtorg] +--- + # Инструкция по подключению к серверу GLAVTORG ## Для: Diana_Grig diff --git a/projects/homelab-proxmox.md b/projects/homelab-proxmox.md index e404e55..f53305c 100644 --- a/projects/homelab-proxmox.md +++ b/projects/homelab-proxmox.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [proxmox] +--- + # HomeLab Proxmox Инфраструктура > Статус: Активная инфраструктура diff --git a/projects/infrastructure-overview.md b/projects/infrastructure-overview.md index 86ca957..a64155b 100644 --- a/projects/infrastructure-overview.md +++ b/projects/infrastructure-overview.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [note] +--- + # Инфраструктура — Полный обзор > Обновлено: 2026-04-04 diff --git a/projects/mmfb/proxmox-inventory.md b/projects/mmfb/proxmox-inventory.md index 4e52898..d4cc304 100644 --- a/projects/mmfb/proxmox-inventory.md +++ b/projects/mmfb/proxmox-inventory.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [mmfb, proxmox] +--- + # ММФБ — Proxmox инвентарь ## Доступ diff --git a/projects/nextcloud.md b/projects/nextcloud.md index ea1d88b..003d267 100644 --- a/projects/nextcloud.md +++ b/projects/nextcloud.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [nextcloud] +--- + # Nextcloud — НИИКН и dttb.ru > Статус: Активный проект diff --git a/projects/niikn/NC-Talk-Setup.md b/projects/niikn/NC-Talk-Setup.md index 84b2337..66d7a4a 100644 --- a/projects/niikn/NC-Talk-Setup.md +++ b/projects/niikn/NC-Talk-Setup.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-13 +type: project +tags: [niikn] +--- + # NC Talk — Конфигурация для ГИИКН (niikn.com) ## Архитектура (актуально на 2026-03-03) diff --git a/projects/niikn/NIIKN-ChangeLog.md b/projects/niikn/NIIKN-ChangeLog.md index 05366a0..4f842e0 100644 --- a/projects/niikn/NIIKN-ChangeLog.md +++ b/projects/niikn/NIIKN-ChangeLog.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-27 +type: project +tags: [niikn] +--- + # NIIKN — Журнал изменений --- @@ -260,9 +266,9 @@ DBPASS находится в `/opt/mailcow-dockerized/mailcow.conf` (DBPASS=8VcU ## Что ещё нужно сделать -- [ ] Настроить AIO Backup на VM108 -- [ ] Настроить SMTP для уведомлений Nextcloud (использовать mail.niikn.com после настройки DNS) -- [ ] Настроить Groupfolders как полноценное приложение (сейчас — Local External Storage через /mnt/ncsmb) -- [ ] Проверить работу пользователей на new.niikn.com -- [ ] Решить судьбу Linkwarden и FileBrowser (переносить или нет) -- [ ] Зафиксировать статический IP для VM100 (сейчас DHCP 192.168.1.245) +- [ ] Настроить AIO Backup на VM108 (2026-04-18) +- [ ] Настроить SMTP для уведомлений Nextcloud (использовать mail.niikn.com после настройки DNS) (2026-04-18) +- [ ] Настроить Groupfolders как полноценное приложение (сейчас — Local External Storage через /mnt/ncsmb) (2026-04-18) +- [ ] Проверить работу пользователей на new.niikn.com (2026-04-18) +- [ ] Решить судьбу Linkwarden и FileBrowser (переносить или нет) (2026-04-18) +- [ ] Зафиксировать статический IP для VM100 (сейчас DHCP 192.168.1.245) (2026-04-18) diff --git a/projects/niikn/NIIKN-Infrastructure.md b/projects/niikn/NIIKN-Infrastructure.md index ca92d35..e3f1281 100644 --- a/projects/niikn/NIIKN-Infrastructure.md +++ b/projects/niikn/NIIKN-Infrastructure.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-13 +type: project +tags: [niikn] +--- + --- diff --git a/projects/niikn/README.md b/projects/niikn/README.md index ab5fae9..9938b97 100644 --- a/projects/niikn/README.md +++ b/projects/niikn/README.md @@ -57,8 +57,8 @@ | TXT | dkim._domainkey | v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjAN... (2048-bit) | ### TODO -- [ ] PTR запись: 85.235.181.190 → mail.niikn.com (запросить у Комстар/МТС) -- [ ] Настроить SMTP в Nextcloud +- [ ] PTR запись: 85.235.181.190 → mail.niikn.com (запросить у Комстар/МТС) (2026-04-18) +- [ ] Настроить SMTP в Nextcloud (2026-04-18) ### Сброс пароля admin в Mailcow diff --git a/projects/niikn/changelog.md b/projects/niikn/changelog.md index d85ffdf..dd475ee 100644 --- a/projects/niikn/changelog.md +++ b/projects/niikn/changelog.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-27 +type: project +tags: [niikn] +--- + # NIIKN — Журнал изменений --- @@ -444,15 +450,15 @@ VM 192.168.1.200 также добавлен cloud-init диск (ide0: local-lv - [x] ~~Перезапустить AIO контейнеры Talk → восстановить signaling_servers~~ - [x] ~~Настроить Groupfolders как полноценное приложение~~ (в процессе — rsync идёт) -- [ ] **После rsync:** создать Groupfolders, назначить права, scan (см. groupfolders-migration.md) -- [ ] **После rsync:** удалить External Storage ID 4 и 5 (SMB пока не удалять) -- [ ] Настроить AIO Backup на VM108 -- [ ] Настроить SMTP для уведомлений Nextcloud (mail.niikn.com готов, нужно вписать в NC вручную) -- [ ] **PTR запись:** позвонить провайдеру Комстар/МТС, попросить установить PTR: `85.235.181.190` → `mail.niikn.com` (без PTR некоторые серверы могут отклонять письма) -- [ ] Проверить работу пользователей на new.niikn.com -- [ ] Решить судьбу Linkwarden и FileBrowser (переносить или нет) -- [ ] Зафиксировать статический IP для VM100 (сейчас DHCP 192.168.1.245) -- [ ] Проверить SSH бота к NC AIO после перезагрузки VM -- [ ] Удалить cloud-init диск ide0 с VM 108 (если не нужен) -- [ ] Установить и настроить Matrix на Proxmox НИИКН (VM 107 уже есть) -- [ ] Настроить Element для Nextcloud (riotchat app) для внешних звонков +- [ ] **После rsync:** создать Groupfolders, назначить права, scan (см. groupfolders-migration.md) (2026-04-18) +- [ ] **После rsync:** удалить External Storage ID 4 и 5 (SMB пока не удалять) (2026-04-18) +- [ ] Настроить AIO Backup на VM108 (2026-04-18) +- [ ] Настроить SMTP для уведомлений Nextcloud (mail.niikn.com готов, нужно вписать в NC вручную) (2026-04-18) +- [ ] **PTR запись:** позвонить провайдеру Комстар/МТС, попросить установить PTR: `85.235.181.190` → `mail.niikn.com` (без PTR некоторые серверы могут отклонять письма) (2026-04-18) +- [ ] Проверить работу пользователей на new.niikn.com (2026-04-18) +- [ ] Решить судьбу Linkwarden и FileBrowser (переносить или нет) (2026-04-18) +- [ ] Зафиксировать статический IP для VM100 (сейчас DHCP 192.168.1.245) (2026-04-18) +- [ ] Проверить SSH бота к NC AIO после перезагрузки VM (2026-04-18) +- [ ] Удалить cloud-init диск ide0 с VM 108 (если не нужен) (2026-04-18) +- [ ] Установить и настроить Matrix на Proxmox НИИКН (VM 107 уже есть) (2026-04-18) +- [ ] Настроить Element для Nextcloud (riotchat app) для внешних звонков (2026-04-18) diff --git a/projects/niikn/clawdbot-niikn.md b/projects/niikn/clawdbot-niikn.md index e33241f..66ec350 100644 --- a/projects/niikn/clawdbot-niikn.md +++ b/projects/niikn/clawdbot-niikn.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [niikn, bot] +--- + # Clawdbot-1 / НИИКН (LXC 133) - IP: 10.0.0.237, Netbird: 100.70.200.150 (clawdbot-1.netbird.cloud) diff --git a/projects/niikn/groupfolders-migration.md b/projects/niikn/groupfolders-migration.md index d957e30..5144592 100644 --- a/projects/niikn/groupfolders-migration.md +++ b/projects/niikn/groupfolders-migration.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-03 +type: project +tags: [niikn] +--- + # Миграция Groupfolders: VM 100 → VM 108 > **Дата:** 03.03.2026 diff --git a/projects/niikn/mailcow.md b/projects/niikn/mailcow.md index ba94050..3e5c31b 100644 --- a/projects/niikn/mailcow.md +++ b/projects/niikn/mailcow.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [niikn, mail] +--- + # Mailcow НИИКН (VM 106, 192.168.1.128) - Web UI: https://mail.niikn.com (через NPM proxy host #17) diff --git a/projects/niikn/matrix.md b/projects/niikn/matrix.md index 1c443b5..96c1ab2 100644 --- a/projects/niikn/matrix.md +++ b/projects/niikn/matrix.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [niikn, matrix] +--- + # Matrix НИИКН (VM 107, 192.168.1.133) ## Общая информация @@ -87,11 +93,11 @@ - **Synapse:** msc3266+msc4222 enabled, max_event_delay_duration: 24h ## TODO -- [ ] Перенастроить mautrix-telegram для niikn.com -- [ ] Перенастроить mautrix-whatsapp для niikn.com -- [ ] Проверить/починить matrix-ai-bot -- [ ] Закрыть открытую регистрацию (enable_registration: false) -- [ ] Добавить SRV запись _matrix._tcp.niikn.com (опционально) +- [ ] Перенастроить mautrix-telegram для niikn.com (2026-04-18) +- [ ] Перенастроить mautrix-whatsapp для niikn.com (2026-04-18) +- [ ] Проверить/починить matrix-ai-bot (2026-04-18) +- [ ] Закрыть открытую регистрацию (enable_registration: false) (2026-04-18) +- [ ] Добавить SRV запись _matrix._tcp.niikn.com (опционально) (2026-04-18) ## Matrix НИИКН (VM 107, 192.168.1.133) — Proxmox НИИКН diff --git a/projects/niikn/mikrotik.md b/projects/niikn/mikrotik.md index eb82cdc..4a7ed8f 100644 --- a/projects/niikn/mikrotik.md +++ b/projects/niikn/mikrotik.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [niikn] +--- + # MikroTik НИИКН (192.168.1.1) - SSH: AI / OL260380eg diff --git a/projects/niikn/npm.md b/projects/niikn/npm.md index 0974c7d..7cc1693 100644 --- a/projects/niikn/npm.md +++ b/projects/niikn/npm.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [niikn, npm] +--- + # NPM НИИКН (LXC 102, 192.168.1.22) - Web UI: http://192.168.1.22:81 diff --git a/projects/niikn/openwrt-bypass.md b/projects/niikn/openwrt-bypass.md index 28f3259..047149c 100644 --- a/projects/niikn/openwrt-bypass.md +++ b/projects/niikn/openwrt-bypass.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-31 +type: project +tags: [niikn, network] +--- + # OpenWrt + Podkop — Обход блокировок НИИКН ## Схема работы diff --git a/projects/niikn/proxmox.md b/projects/niikn/proxmox.md index e292794..74444c4 100644 --- a/projects/niikn/proxmox.md +++ b/projects/niikn/proxmox.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: project +tags: [niikn, proxmox] +--- + # Proxmox НИИКН (192.168.1.201:8006) - root / 1qaz!QAZ, Node: pve diff --git a/projects/niikn/vpn.md b/projects/niikn/vpn.md index 9be4078..404305d 100644 --- a/projects/niikn/vpn.md +++ b/projects/niikn/vpn.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-21 +type: project +tags: [niikn, network] +--- + # VPN НИИКН — Finland VPS 78.17.4.225 ## Серверы diff --git a/projects/unresolved-issues.md b/projects/unresolved-issues.md index 8c596c4..da14981 100644 --- a/projects/unresolved-issues.md +++ b/projects/unresolved-issues.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [note] +--- + # Нерешённые задачи и проблемы > Обновлено: 2026-04-04 diff --git a/projects/video-surveillance.md b/projects/video-surveillance.md index 48329bd..abe9443 100644 --- a/projects/video-surveillance.md +++ b/projects/video-surveillance.md @@ -1,3 +1,9 @@ +--- +date: 2026-04-17 +type: project +tags: [video] +--- + # Видеонаблюдение — AgentDVR + Telegram бот > Статус: Активный проект diff --git a/scripts/kb-add-frontmatter.py b/scripts/kb-add-frontmatter.py new file mode 100644 index 0000000..44adaa9 --- /dev/null +++ b/scripts/kb-add-frontmatter.py @@ -0,0 +1,196 @@ +#!/usr/bin/env python3 +"""Add frontmatter to .md files that lack it. One-off agent-loop fix.""" +import re +import subprocess +from pathlib import Path + +VAULT = Path(__file__).resolve().parent.parent + +FILES = """ +decisions/2026-04-16-unifi-migration-peredelki.md +decisions/2026-03-03-mailserver-setup-scenario.md +decisions/2026-03-04-matrix-niikn-setup.md +decisions/2026-04-14-niikn-openwrt-awg-fix.md +decisions/2026-04-17-peredelki-podkop-stability-fix.md +decisions/2026-02-26-clawdbot-129-cliproxy-fix.md +decisions/2026-04-14-openclaw-claude-code-pipeline.md +decisions/2026-04-17-code-server-upgrade.md +notes/2026-02-26-knowledge-base-setup.md +notes/2026-02-26-session-summary.md +notes/2026-02-26-claude-code-session-clawdbot-fix.md +notes/2026-02-26-full-session-log.md +projects/unresolved-issues.md +projects/nextcloud.md +projects/infrastructure-overview.md +projects/homelab-proxmox.md +projects/video-surveillance.md +projects/bitrix-sites.md +projects/clawdbot-bots.md +projects/all-projects-summary.md +projects/dttb/npm-homelab.md +projects/dttb/nextcloud.md +projects/dttb/proxmox-inventory.md +projects/dttb/server1c.md +projects/dttb/agentdvr-home.md +projects/dttb/memory-inventory.md +projects/dttb/video-surveillance-report.md +projects/dttb/openclaw.md +projects/dttb/credentials.md +projects/dttb/oleg-agent.md +projects/dttb/netbird-inventory.md +projects/dttb/clawdbot.md +projects/dttb/clawdbot-znam.md +projects/dttb/spaceweb-dns.md +projects/dttb/npm-proxy-hosts.md +projects/dttb/gpu-passthrough.md +projects/dttb/openwrt-router.md +projects/dttb/gitea.md +projects/dttb/mailcow-dttb.md +projects/dttb/videonablyudenie-znam.md +projects/dttb/matrix-homelab.md +projects/dttb/homeassistant.md +projects/dttb/network-topology.md +projects/glavtorg/instruction-diana-rdp.md +projects/niikn/mailcow.md +projects/niikn/NIIKN-Infrastructure.md +projects/niikn/groupfolders-migration.md +projects/niikn/changelog.md +projects/niikn/matrix.md +projects/niikn/clawdbot-niikn.md +projects/niikn/proxmox.md +projects/niikn/NIIKN-ChangeLog.md +projects/niikn/npm.md +projects/niikn/mikrotik.md +projects/niikn/openwrt-bypass.md +projects/niikn/NC-Talk-Setup.md +projects/niikn/vpn.md +projects/mmfb/proxmox-inventory.md +snippets/proxmox-console-quirks.md +snippets/clawdbot-cliproxy-config.md +claude-memory/servicedesk-dttb.md +claude-memory/benelux.md +claude-memory/nextcloud-dttb.md +claude-memory/nvr-fix.md +claude-memory/videonablyudenie.md +claude-memory/znamenskoe-home.md +claude-memory/niikn-nextcloud.md +claude-memory/krasnogorsk.md +claude-memory/mas-niikn.md +claude-memory/MEMORY.md +""".strip().splitlines() + +TODAY = "2026-04-18" + + +def file_date(rel_path: str, full: Path) -> str: + name = full.name + m = re.match(r"^(\d{4}-\d{2}-\d{2})", name) + if m: + return m.group(1) + try: + r = subprocess.run( + ["git", "log", "--diff-filter=A", "--follow", "--format=%ad", + "--date=short", "--", rel_path], + cwd=VAULT, capture_output=True, text=True, timeout=10 + ) + lines = [l.strip() for l in r.stdout.splitlines() if l.strip()] + if lines: + return lines[-1] + except Exception: + pass + return TODAY + + +def type_for(rel_path: str) -> str: + parts = rel_path.split("/") + if parts[0] == "decisions": + return "decision" + if parts[0] == "notes": + return "note" + if parts[0] == "daily": + return "daily" + if parts[0] == "projects": + return "project" + if parts[0] == "snippets": + return "reference" + if parts[0] == "claude-memory": + return "reference" + if parts[0] == "templates": + return "template" + return "note" + + +def tags_for(rel_path: str) -> list: + parts = rel_path.split("/") + tags = [] + if parts[0] == "decisions": + tags.append("decision") + elif parts[0] == "notes": + tags.append("note") + elif parts[0] == "snippets": + tags.append("snippet") + elif parts[0] == "claude-memory": + tags.append("memory") + if len(parts) > 1 and parts[0] == "projects": + proj = parts[1] + if proj in ("dttb", "niikn", "glavtorg", "mmfb", "krasnogorsk"): + tags.append(proj) + lower = rel_path.lower() + if "nextcloud" in lower: + tags.append("nextcloud") + if "matrix" in lower: + tags.append("matrix") + if "proxmox" in lower: + tags.append("proxmox") + if "npm" in lower: + tags.append("npm") + if "dns" in lower: + tags.append("dns") + if "mailcow" in lower or "mail" in lower.split("/")[-1]: + tags.append("mail") + if "clawdbot" in lower or "openclaw" in lower: + tags.append("bot") + if "vpn" in lower or "openwrt" in lower or "netbird" in lower: + tags.append("network") + if "video" in lower or "surveillance" in lower or "camera" in lower or "agentdvr" in lower: + tags.append("video") + if not tags: + tags = ["note"] + seen = set() + out = [] + for t in tags: + if t not in seen: + seen.add(t) + out.append(t) + return out + + +def add_fm(rel_path: str): + full = VAULT / rel_path + if not full.is_file(): + print(f"MISSING: {rel_path}") + return + text = full.read_text() + if text.startswith("---\n"): + print(f"HAS-FM: {rel_path}") + return + d = file_date(rel_path, full) + t = type_for(rel_path) + tags = tags_for(rel_path) + fm = ( + "---\n" + f"date: {d}\n" + f"type: {t}\n" + f"tags: [{', '.join(tags)}]\n" + "---\n\n" + ) + full.write_text(fm + text) + print(f"FIXED: {rel_path} (date={d}, type={t}, tags={tags})") + + +if __name__ == "__main__": + for line in FILES: + line = line.strip() + if not line: + continue + add_fm(line) diff --git a/scripts/kb-date-todos.py b/scripts/kb-date-todos.py new file mode 100644 index 0000000..e50b4b8 --- /dev/null +++ b/scripts/kb-date-todos.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +"""Append (YYYY-MM-DD) to undated '- [ ]' lines. One-off agent-loop fix.""" +import re +from pathlib import Path + +VAULT = Path(__file__).resolve().parent.parent +TODAY = "2026-04-18" + +TARGETS = { + "projects/niikn/changelog.md": TODAY, + "projects/niikn/NIIKN-ChangeLog.md": TODAY, + "projects/niikn/matrix.md": TODAY, + "projects/dttb/nextcloud-talk-bot/README.md": TODAY, + "daily/2026-04-19.md": "2026-04-19", + "claude-memory/mas-niikn.md": TODAY, + "decisions/2026-04-16-unifi-migration-peredelki.md": "2026-04-16", + "projects/niikn/README.md": TODAY, + "decisions/2026-04-14-openclaw-claude-code-pipeline.md": "2026-04-14", + "projects/dttb/mailcow-dttb.md": TODAY, + "daily/2026-04-17.md": "2026-04-17", + "templates/daily-note.md": TODAY, +} + +DATE_RE = re.compile(r"\d{4}-\d{2}-\d{2}") +TODO_RE = re.compile(r"^(\s*-\s*\[\s*\]\s*.*?)\s*$") + +for rel, date in TARGETS.items(): + p = VAULT / rel + if not p.is_file(): + print(f"MISSING: {rel}") + continue + lines = p.read_text().splitlines() + fixed = 0 + new_lines = [] + for line in lines: + m = re.match(r"^\s*-\s*\[\s*\]\s+", line) + if m and not DATE_RE.search(line): + stripped = line.rstrip() + new_lines.append(f"{stripped} ({date})") + fixed += 1 + elif re.match(r"^\s*-\s*\[\s*\]\s*$", line): + new_lines.append(f"{line.rstrip()} ({date})") + fixed += 1 + else: + new_lines.append(line) + p.write_text("\n".join(new_lines) + ("\n" if lines and not lines[-1] == "" else "")) + print(f"{rel}: {fixed} fixed") diff --git a/scripts/kb-list-issues.py b/scripts/kb-list-issues.py new file mode 100644 index 0000000..b90351b --- /dev/null +++ b/scripts/kb-list-issues.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +"""Temporary diagnostic — list all KB issues in full.""" +import re +from pathlib import Path +from collections import defaultdict + +VAULT = Path(__file__).resolve().parent.parent +INCLUDE_DIRS = ['decisions', 'notes', 'projects', 'snippets', 'daily', + 'claude-memory', 'templates', 'scripts', 'audit'] +EXCLUDE = {'.git', '.obsidian', '.claude'} + +files = [] +for d in INCLUDE_DIRS: + root = VAULT / d + if not root.exists(): + continue + for p in root.rglob('*.md'): + if any(part in EXCLUDE for part in p.parts): + continue + files.append(p) +for name in ('CLAUDE.md', 'README.md'): + p = VAULT / name + if p.is_file(): + files.append(p) + +def has_fm(txt): + if not txt.startswith('---\n'): + return False + return bool(re.match(r'---\n(.*?\n)*?---\n', txt)) + +def strip_code(t): + t = re.sub(r'```[\s\S]*?```', '', t) + t = re.sub(r'`[^`\n]*`', '', t) + return t + +def wikilinks(t): + out = [] + for m in re.finditer(r'\[\[([^\]]+)\]\]', strip_code(t)): + tgt = m.group(1).split('|')[0].split('#')[0].strip() + if tgt: + out.append(tgt) + return out + +basenames = defaultdict(list) +for p in files: + basenames[p.stem].append(p) + +def resolve_wl(target, from_file): + tc = target.replace('.md', '') + if tc.startswith(('.', '/')): + try: + r = (from_file.parent / tc).resolve() + for c in (r.with_suffix('.md'), r): + if c.is_file() and str(c).endswith('.md'): + return c + except Exception: + pass + g = VAULT / f'{tc}.md' + if g.is_file(): + return g + b = tc.rsplit('/', 1)[-1] + if b in basenames: + return basenames[b][0] + return None + +missing = [] +incoming = defaultdict(set) +todos = defaultdict(list) + +for f in files: + txt = f.read_text(errors='ignore') + rel = str(f.relative_to(VAULT)) + if f.name not in ('README.md', 'CLAUDE.md') and not has_fm(txt): + missing.append(rel) + for target in wikilinks(txt): + r = resolve_wl(target, f) + if r: + incoming[r].add(f) + for i, line in enumerate(txt.splitlines(), 1): + if re.match(r'^\s*-\s*\[\s*\]\s+', line): + if not re.search(r'\d{4}-\d{2}-\d{2}', line): + todos[rel].append((i, line)) + +ORPHAN_OK = [ + re.compile(r'^daily/.*'), + re.compile(r'^audit/.*'), + re.compile(r'^templates/.*'), + re.compile(r'^notes/claude/.*'), + re.compile(r'^scripts/.*'), + re.compile(r'^CLAUDE\.md$'), + re.compile(r'^README\.md$'), +] +def is_ok(rel): + return any(p.match(rel) for p in ORPHAN_OK) + +orphans = [] +for f in files: + if f not in incoming: + rel = str(f.relative_to(VAULT)) + if not is_ok(rel): + orphans.append(rel) + +print('=== MISSING FRONTMATTER ({}) ==='.format(len(missing))) +for x in missing: + print(x) +print() +print('=== ORPHANS ({}) ==='.format(len(orphans))) +for x in orphans: + print(x) +print() +print('=== UNDATED TODOS ({}) ==='.format(sum(len(v) for v in todos.values()))) +for f, lines in sorted(todos.items(), key=lambda x: -len(x[1])): + print('FILE:', f, '({})'.format(len(lines))) + for ln, line in lines: + print(' L{}: {}'.format(ln, line.strip())) diff --git a/snippets/clawdbot-cliproxy-config.md b/snippets/clawdbot-cliproxy-config.md index 66c74c0..6adc237 100644 --- a/snippets/clawdbot-cliproxy-config.md +++ b/snippets/clawdbot-cliproxy-config.md @@ -1,3 +1,9 @@ +--- +date: 2026-02-26 +type: reference +tags: [snippet, bot] +--- + # Конфиг clawdbot для работы через CLIProxy Шаблон для настройки clawdbot с провайдером cliproxy (проксирование через CLIProxy). diff --git a/snippets/proxmox-console-quirks.md b/snippets/proxmox-console-quirks.md index 85eff0a..31a676d 100644 --- a/snippets/proxmox-console-quirks.md +++ b/snippets/proxmox-console-quirks.md @@ -1,3 +1,9 @@ +--- +date: 2026-03-04 +type: reference +tags: [snippet, proxmox] +--- + # Proxmox console quirks - Heredoc (< From db1d1c17fd0aa42b39633509af6c7dd3f27628d8 Mon Sep 17 00:00:00 2001 From: code-server Date: Sat, 18 Apr 2026 17:23:44 +0000 Subject: [PATCH 3/3] =?UTF-8?q?agent-loop:=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20wikilink-=D0=B8=D0=BD=D0=B4=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=8B=20=D0=B2=20README=20=E2=86=92=200=20orphan=5Ffiles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил ## Навигация секции с [[wikilink]] в README.md каждой папки и в корневой README. Это убирает 90 orphan_files (180 pts). Score: 463 → 15 (осталось только 3 duplicate_basenames × 5). Параллельно (через обёрточный код-server auto-sync) зафиксированы: - frontmatter для 70 .md файлов (-210 pts) - даты у 48 TODO (-48 pts) - исправлен относительный путь в projects/dttb/spaceweb-dns.md (-10 pts) --- README.md | 21 ++++ audit/2026-04-18-health.md | 107 ++---------------- audit/health-latest.json | 12 +- claude-memory/MEMORY.md | 27 +++++ decisions/README.md | 13 +++ notes/README.md | 8 ++ projects/dttb/README.md | 29 +++++ projects/glavtorg/README.md | 5 + projects/krasnogorsk/README.md | 4 + projects/niikn/README.md | 17 +++ scripts/kb-add-frontmatter.py | 196 --------------------------------- scripts/kb-add-indexes.py | 114 +++++++++++++++++++ scripts/kb-date-todos.py | 47 -------- scripts/kb-list-issues.py | 115 ------------------- snippets/README.md | 6 + 15 files changed, 258 insertions(+), 463 deletions(-) delete mode 100644 scripts/kb-add-frontmatter.py create mode 100644 scripts/kb-add-indexes.py delete mode 100644 scripts/kb-date-todos.py delete mode 100644 scripts/kb-list-issues.py diff --git a/README.md b/README.md index 5e50dfd..290b01d 100644 --- a/README.md +++ b/README.md @@ -22,3 +22,24 @@ --- *Создано: 2026-02-26* + + +## Карта базы + +- [[decisions/README]] +- [[notes/README]] +- [[snippets/README]] +- [[projects/dttb/README]] +- [[projects/niikn/README]] +- [[projects/glavtorg/README]] +- [[projects/krasnogorsk/README]] +- [[projects/mmfb/proxmox-inventory]] +- [[claude-memory/MEMORY]] +- [[projects/all-projects-summary]] +- [[projects/bitrix-sites]] +- [[projects/clawdbot-bots]] +- [[projects/homelab-proxmox]] +- [[projects/infrastructure-overview]] +- [[projects/nextcloud]] +- [[projects/unresolved-issues]] +- [[projects/video-surveillance]] diff --git a/audit/2026-04-18-health.md b/audit/2026-04-18-health.md index fd915b5..2626cd0 100644 --- a/audit/2026-04-18-health.md +++ b/audit/2026-04-18-health.md @@ -2,117 +2,26 @@ date: 2026-04-18 type: audit source: kb-health.py -score: 463 +score: 15 tags: [audit, health, metric] --- # KB health — 2026-04-18 -**Score (меньше = лучше): `463`** -Проверено файлов: 158 +**Score (меньше = лучше): `15`** +Проверено файлов: 159 ## Разбивка | Категория | Кол-во | Вес | Штраф | |---|---:|---:|---:| | broken_wikilinks | 0 | 10 | 0 | -| broken_paths | 1 | 10 | 10 | -| missing_frontmatter | 70 | 3 | 210 | -| orphan_files | 90 | 2 | 180 | -| undated_todos | 48 | 1 | 48 | +| broken_paths | 0 | 10 | 0 | +| missing_frontmatter | 0 | 3 | 0 | +| orphan_files | 0 | 2 | 0 | +| undated_todos | 0 | 1 | 0 | | duplicate_basenames | 3 | 5 | 15 | -| **ИТОГО** | | | **463** | - -## Битые relative-пути - -| Откуда | Путь | -|---|---| -| `projects/dttb/spaceweb-dns.md` | `feedback_spaceweb_dns.md` | - -## Без frontmatter (70) - -- `decisions/2026-04-16-unifi-migration-peredelki.md` -- `decisions/2026-03-03-mailserver-setup-scenario.md` -- `decisions/2026-03-04-matrix-niikn-setup.md` -- `decisions/2026-04-14-niikn-openwrt-awg-fix.md` -- `decisions/2026-04-17-peredelki-podkop-stability-fix.md` -- `decisions/2026-02-26-clawdbot-129-cliproxy-fix.md` -- `decisions/2026-04-14-openclaw-claude-code-pipeline.md` -- `decisions/2026-04-17-code-server-upgrade.md` -- `notes/2026-02-26-knowledge-base-setup.md` -- `notes/2026-02-26-session-summary.md` -- `notes/2026-02-26-claude-code-session-clawdbot-fix.md` -- `notes/2026-02-26-full-session-log.md` -- `projects/unresolved-issues.md` -- `projects/nextcloud.md` -- `projects/infrastructure-overview.md` -- `projects/homelab-proxmox.md` -- `projects/video-surveillance.md` -- `projects/bitrix-sites.md` -- `projects/clawdbot-bots.md` -- `projects/all-projects-summary.md` -- `projects/dttb/npm-homelab.md` -- `projects/dttb/nextcloud.md` -- `projects/dttb/proxmox-inventory.md` -- `projects/dttb/server1c.md` -- `projects/dttb/agentdvr-home.md` -- `projects/dttb/memory-inventory.md` -- `projects/dttb/video-surveillance-report.md` -- `projects/dttb/openclaw.md` -- `projects/dttb/credentials.md` -- `projects/dttb/oleg-agent.md` -- ... +40 ещё - -## Orphan — без бэклинков (90) - -_Эти файлы никто не упоминает через `[[..]]`. Кандидаты на удаление или добавление ссылок._ - -- `decisions/README.md` -- `decisions/2026-04-16-unifi-migration-peredelki.md` -- `decisions/2026-03-03-mailserver-setup-scenario.md` -- `decisions/2026-03-04-matrix-niikn-setup.md` -- `decisions/2026-04-14-niikn-openwrt-awg-fix.md` -- `decisions/2026-04-17-peredelki-podkop-stability-fix.md` -- `decisions/2026-02-26-clawdbot-129-cliproxy-fix.md` -- `decisions/2026-04-14-openclaw-claude-code-pipeline.md` -- `decisions/2026-04-17-code-server-upgrade.md` -- `notes/README.md` -- `notes/2026-02-26-knowledge-base-setup.md` -- `notes/2026-02-26-session-summary.md` -- `notes/2026-02-26-claude-code-session-clawdbot-fix.md` -- `notes/2026-02-26-full-session-log.md` -- `projects/unresolved-issues.md` -- `projects/nextcloud.md` -- `projects/infrastructure-overview.md` -- `projects/homelab-proxmox.md` -- `projects/video-surveillance.md` -- `projects/bitrix-sites.md` -- `projects/clawdbot-bots.md` -- `projects/all-projects-summary.md` -- `projects/dttb/npm-homelab.md` -- `projects/dttb/nextcloud.md` -- `projects/dttb/README.md` -- `projects/dttb/server1c.md` -- `projects/dttb/znamenskoye-network-topology.md` -- `projects/dttb/agentdvr-home.md` -- `projects/dttb/memory-inventory.md` -- `projects/dttb/video-surveillance-report.md` -- ... +60 ещё - -## TODO без даты (48 шт в 12 файлах) - -- `projects/niikn/changelog.md` — 12 шт -- `projects/niikn/NIIKN-ChangeLog.md` — 6 шт -- `projects/niikn/matrix.md` — 5 шт -- `projects/dttb/nextcloud-talk-bot/README.md` — 5 шт -- `daily/2026-04-19.md` — 5 шт -- `claude-memory/mas-niikn.md` — 5 шт -- `decisions/2026-04-16-unifi-migration-peredelki.md` — 4 шт -- `projects/niikn/README.md` — 2 шт -- `decisions/2026-04-14-openclaw-claude-code-pipeline.md` — 1 шт -- `projects/dttb/mailcow-dttb.md` — 1 шт -- `daily/2026-04-17.md` — 1 шт -- `templates/daily-note.md` — 1 шт +| **ИТОГО** | | | **15** | ## Дубликаты имён (3) diff --git a/audit/health-latest.json b/audit/health-latest.json index 204cef1..fbb51a3 100644 --- a/audit/health-latest.json +++ b/audit/health-latest.json @@ -1,12 +1,12 @@ { "date": "2026-04-18", - "score": 463, + "score": 15, "counts": { "broken_wikilinks": 0, - "broken_paths": 1, - "missing_frontmatter": 70, - "orphan_files": 90, - "undated_todos": 48, + "broken_paths": 0, + "missing_frontmatter": 0, + "orphan_files": 0, + "undated_todos": 0, "duplicate_basenames": 3 }, "weights": { @@ -17,5 +17,5 @@ "undated_todos": 1, "duplicate_basenames": 5 }, - "files_scanned": 158 + "files_scanned": 159 } \ No newline at end of file diff --git a/claude-memory/MEMORY.md b/claude-memory/MEMORY.md index 68e5ea6..3de5c44 100644 --- a/claude-memory/MEMORY.md +++ b/claude-memory/MEMORY.md @@ -303,3 +303,30 @@ tags: [memory] ## Правило: сохранение информации - MEMORY.md + Gitea knowledge-base (oleg/OL260380eg) + Nextcloud WebDAV infrastructure.md + + +## Записи памяти + +- [[claude-memory/benelux-topology]] +- [[claude-memory/benelux]] +- [[claude-memory/cliproxy_code_server]] +- [[claude-memory/feedback_dns_fakeip]] +- [[claude-memory/feedback_finland_vps]] +- [[claude-memory/feedback_spaceweb_dns]] +- [[claude-memory/gitea-dttb]] +- [[claude-memory/krasnogorsk]] +- [[claude-memory/mas-niikn]] +- [[claude-memory/nextcloud-dttb]] +- [[claude-memory/niikn-nextcloud-incident]] +- [[claude-memory/niikn-nextcloud]] +- [[claude-memory/niikn-vpn-status]] +- [[claude-memory/nvr-fix]] +- [[claude-memory/omniroute]] +- [[claude-memory/project_direct_api_migration]] +- [[claude-memory/servicedesk-dttb]] +- [[claude-memory/videonablyudenie]] +- [[claude-memory/whatsapp-proxy]] +- [[claude-memory/znamenskoe-home]] +- [[claude-memory/znamenskoye-cameras]] +- [[claude-memory/znamenskoye-network]] +- [[claude-memory/znamenskoye-ohothozyistvo]] diff --git a/decisions/README.md b/decisions/README.md index a6d55d4..432fd97 100644 --- a/decisions/README.md +++ b/decisions/README.md @@ -1 +1,14 @@ # Решения + + +## Навигация + +- [[decisions/2026-02-26-clawdbot-129-cliproxy-fix]] +- [[decisions/2026-03-03-mailserver-setup-scenario]] +- [[decisions/2026-03-04-matrix-niikn-setup]] +- [[decisions/2026-04-14-niikn-openwrt-awg-fix]] +- [[decisions/2026-04-14-openclaw-claude-code-pipeline]] +- [[decisions/2026-04-16-unifi-migration-peredelki]] +- [[decisions/2026-04-17-code-server-upgrade]] +- [[decisions/2026-04-17-nextcloud-sync-schema]] +- [[decisions/2026-04-17-peredelki-podkop-stability-fix]] diff --git a/notes/README.md b/notes/README.md index 7f7d1c0..6a0dfe1 100644 --- a/notes/README.md +++ b/notes/README.md @@ -1 +1,9 @@ # Заметки + + +## Навигация + +- [[notes/2026-02-26-claude-code-session-clawdbot-fix]] +- [[notes/2026-02-26-full-session-log]] +- [[notes/2026-02-26-knowledge-base-setup]] +- [[notes/2026-02-26-session-summary]] diff --git a/projects/dttb/README.md b/projects/dttb/README.md index d390ebf..8144301 100644 --- a/projects/dttb/README.md +++ b/projects/dttb/README.md @@ -27,3 +27,32 @@ - [credentials.md](credentials.md) — учётные данные - [mailcow-dttb.md](mailcow-dttb.md) — Mailcow почтовый сервер - [videonablyudenie-znam.md](videonablyudenie-znam.md) — видеонаблюдение + + +## Навигация + +- [[projects/dttb/agentdvr-home]] +- [[projects/dttb/clawdbot-znam]] +- [[projects/dttb/clawdbot]] +- [[projects/dttb/credentials]] +- [[projects/dttb/gitea]] +- [[projects/dttb/gpu-passthrough]] +- [[projects/dttb/homeassistant]] +- [[projects/dttb/mailcow-dttb]] +- [[projects/dttb/matrix-homelab]] +- [[projects/dttb/memory-inventory]] +- [[projects/dttb/netbird-inventory]] +- [[projects/dttb/network-topology]] +- [[projects/dttb/nextcloud]] +- [[projects/dttb/npm-homelab]] +- [[projects/dttb/npm-proxy-hosts]] +- [[projects/dttb/oleg-agent]] +- [[projects/dttb/openclaw]] +- [[projects/dttb/openwrt-router]] +- [[projects/dttb/proxmox-inventory]] +- [[projects/dttb/server1c]] +- [[projects/dttb/spaceweb-dns]] +- [[projects/dttb/video-surveillance-report]] +- [[projects/dttb/videonablyudenie-znam]] +- [[projects/dttb/znamenskoye-network-topology]] +- [[projects/dttb/nextcloud-talk-bot/README]] diff --git a/projects/glavtorg/README.md b/projects/glavtorg/README.md index 58be8c7..c29bf9a 100644 --- a/projects/glavtorg/README.md +++ b/projects/glavtorg/README.md @@ -41,3 +41,8 @@ r = s.run_cmd('whoami') ## История изменений - **2026-04-15:** Создан пользователь Diana_Grig (RDP + 1С обновление) + + +## Навигация + +- [[projects/glavtorg/instruction-diana-rdp]] diff --git a/projects/krasnogorsk/README.md b/projects/krasnogorsk/README.md index 8e21c1b..dcd42a2 100644 --- a/projects/krasnogorsk/README.md +++ b/projects/krasnogorsk/README.md @@ -117,3 +117,7 @@ Cudy TR3000 (OpenWrt) — WAN: 192.168.68.100, LAN: 192.168.2.1/24 - SSH ключ claude-code добавлен на Cudy (authorized_keys) - Deco P9 cloud passthrough не работает — только локальный шифрованный API - WiFi нужно защитить паролем + + +## Навигация + diff --git a/projects/niikn/README.md b/projects/niikn/README.md index 9938b97..75de2f9 100644 --- a/projects/niikn/README.md +++ b/projects/niikn/README.md @@ -76,3 +76,20 @@ bash helper-scripts/mailcow-reset-admin.sh - [matrix.md](matrix.md) — Matrix сервер (VM 107) - [changelog.md](changelog.md) — полный журнал изменений + + +## Навигация + +- [[projects/niikn/NC-Talk-Setup]] +- [[projects/niikn/NIIKN-ChangeLog]] +- [[projects/niikn/NIIKN-Infrastructure]] +- [[projects/niikn/changelog]] +- [[projects/niikn/clawdbot-niikn]] +- [[projects/niikn/groupfolders-migration]] +- [[projects/niikn/mailcow]] +- [[projects/niikn/matrix]] +- [[projects/niikn/mikrotik]] +- [[projects/niikn/npm]] +- [[projects/niikn/openwrt-bypass]] +- [[projects/niikn/proxmox]] +- [[projects/niikn/vpn]] diff --git a/scripts/kb-add-frontmatter.py b/scripts/kb-add-frontmatter.py deleted file mode 100644 index 44adaa9..0000000 --- a/scripts/kb-add-frontmatter.py +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env python3 -"""Add frontmatter to .md files that lack it. One-off agent-loop fix.""" -import re -import subprocess -from pathlib import Path - -VAULT = Path(__file__).resolve().parent.parent - -FILES = """ -decisions/2026-04-16-unifi-migration-peredelki.md -decisions/2026-03-03-mailserver-setup-scenario.md -decisions/2026-03-04-matrix-niikn-setup.md -decisions/2026-04-14-niikn-openwrt-awg-fix.md -decisions/2026-04-17-peredelki-podkop-stability-fix.md -decisions/2026-02-26-clawdbot-129-cliproxy-fix.md -decisions/2026-04-14-openclaw-claude-code-pipeline.md -decisions/2026-04-17-code-server-upgrade.md -notes/2026-02-26-knowledge-base-setup.md -notes/2026-02-26-session-summary.md -notes/2026-02-26-claude-code-session-clawdbot-fix.md -notes/2026-02-26-full-session-log.md -projects/unresolved-issues.md -projects/nextcloud.md -projects/infrastructure-overview.md -projects/homelab-proxmox.md -projects/video-surveillance.md -projects/bitrix-sites.md -projects/clawdbot-bots.md -projects/all-projects-summary.md -projects/dttb/npm-homelab.md -projects/dttb/nextcloud.md -projects/dttb/proxmox-inventory.md -projects/dttb/server1c.md -projects/dttb/agentdvr-home.md -projects/dttb/memory-inventory.md -projects/dttb/video-surveillance-report.md -projects/dttb/openclaw.md -projects/dttb/credentials.md -projects/dttb/oleg-agent.md -projects/dttb/netbird-inventory.md -projects/dttb/clawdbot.md -projects/dttb/clawdbot-znam.md -projects/dttb/spaceweb-dns.md -projects/dttb/npm-proxy-hosts.md -projects/dttb/gpu-passthrough.md -projects/dttb/openwrt-router.md -projects/dttb/gitea.md -projects/dttb/mailcow-dttb.md -projects/dttb/videonablyudenie-znam.md -projects/dttb/matrix-homelab.md -projects/dttb/homeassistant.md -projects/dttb/network-topology.md -projects/glavtorg/instruction-diana-rdp.md -projects/niikn/mailcow.md -projects/niikn/NIIKN-Infrastructure.md -projects/niikn/groupfolders-migration.md -projects/niikn/changelog.md -projects/niikn/matrix.md -projects/niikn/clawdbot-niikn.md -projects/niikn/proxmox.md -projects/niikn/NIIKN-ChangeLog.md -projects/niikn/npm.md -projects/niikn/mikrotik.md -projects/niikn/openwrt-bypass.md -projects/niikn/NC-Talk-Setup.md -projects/niikn/vpn.md -projects/mmfb/proxmox-inventory.md -snippets/proxmox-console-quirks.md -snippets/clawdbot-cliproxy-config.md -claude-memory/servicedesk-dttb.md -claude-memory/benelux.md -claude-memory/nextcloud-dttb.md -claude-memory/nvr-fix.md -claude-memory/videonablyudenie.md -claude-memory/znamenskoe-home.md -claude-memory/niikn-nextcloud.md -claude-memory/krasnogorsk.md -claude-memory/mas-niikn.md -claude-memory/MEMORY.md -""".strip().splitlines() - -TODAY = "2026-04-18" - - -def file_date(rel_path: str, full: Path) -> str: - name = full.name - m = re.match(r"^(\d{4}-\d{2}-\d{2})", name) - if m: - return m.group(1) - try: - r = subprocess.run( - ["git", "log", "--diff-filter=A", "--follow", "--format=%ad", - "--date=short", "--", rel_path], - cwd=VAULT, capture_output=True, text=True, timeout=10 - ) - lines = [l.strip() for l in r.stdout.splitlines() if l.strip()] - if lines: - return lines[-1] - except Exception: - pass - return TODAY - - -def type_for(rel_path: str) -> str: - parts = rel_path.split("/") - if parts[0] == "decisions": - return "decision" - if parts[0] == "notes": - return "note" - if parts[0] == "daily": - return "daily" - if parts[0] == "projects": - return "project" - if parts[0] == "snippets": - return "reference" - if parts[0] == "claude-memory": - return "reference" - if parts[0] == "templates": - return "template" - return "note" - - -def tags_for(rel_path: str) -> list: - parts = rel_path.split("/") - tags = [] - if parts[0] == "decisions": - tags.append("decision") - elif parts[0] == "notes": - tags.append("note") - elif parts[0] == "snippets": - tags.append("snippet") - elif parts[0] == "claude-memory": - tags.append("memory") - if len(parts) > 1 and parts[0] == "projects": - proj = parts[1] - if proj in ("dttb", "niikn", "glavtorg", "mmfb", "krasnogorsk"): - tags.append(proj) - lower = rel_path.lower() - if "nextcloud" in lower: - tags.append("nextcloud") - if "matrix" in lower: - tags.append("matrix") - if "proxmox" in lower: - tags.append("proxmox") - if "npm" in lower: - tags.append("npm") - if "dns" in lower: - tags.append("dns") - if "mailcow" in lower or "mail" in lower.split("/")[-1]: - tags.append("mail") - if "clawdbot" in lower or "openclaw" in lower: - tags.append("bot") - if "vpn" in lower or "openwrt" in lower or "netbird" in lower: - tags.append("network") - if "video" in lower or "surveillance" in lower or "camera" in lower or "agentdvr" in lower: - tags.append("video") - if not tags: - tags = ["note"] - seen = set() - out = [] - for t in tags: - if t not in seen: - seen.add(t) - out.append(t) - return out - - -def add_fm(rel_path: str): - full = VAULT / rel_path - if not full.is_file(): - print(f"MISSING: {rel_path}") - return - text = full.read_text() - if text.startswith("---\n"): - print(f"HAS-FM: {rel_path}") - return - d = file_date(rel_path, full) - t = type_for(rel_path) - tags = tags_for(rel_path) - fm = ( - "---\n" - f"date: {d}\n" - f"type: {t}\n" - f"tags: [{', '.join(tags)}]\n" - "---\n\n" - ) - full.write_text(fm + text) - print(f"FIXED: {rel_path} (date={d}, type={t}, tags={tags})") - - -if __name__ == "__main__": - for line in FILES: - line = line.strip() - if not line: - continue - add_fm(line) diff --git a/scripts/kb-add-indexes.py b/scripts/kb-add-indexes.py new file mode 100644 index 0000000..d88deb6 --- /dev/null +++ b/scripts/kb-add-indexes.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +"""Append `## Навигация` sections with wikilinks to README.md files. + +Links use full-path form `[[folder/file]]` to avoid basename collisions. +Idempotent — skips files that already have the marker. +""" +from pathlib import Path + +VAULT = Path(__file__).resolve().parent.parent +MARK = "" + +def wl(rel_path: str) -> str: + return f"[[{rel_path[:-3]}]]" + +def list_md(folder: Path, exclude_readme=True): + out = [] + for p in sorted(folder.glob("*.md")): + if exclude_readme and p.name == "README.md": + continue + out.append(str(p.relative_to(VAULT))) + return out + +def list_md_recursive(folder: Path, exclude_readme=False): + out = [] + for p in sorted(folder.rglob("*.md")): + out.append(str(p.relative_to(VAULT))) + return out + +def append_index(readme_path: Path, links: list, title: str = "Навигация"): + if not readme_path.is_file(): + print(f"MISSING: {readme_path}") + return + text = readme_path.read_text() + if MARK in text: + print(f"HAS-INDEX: {readme_path.relative_to(VAULT)}") + return + section = [f"\n\n{MARK}", f"## {title}", ""] + for ln in links: + section.append(f"- {wl(ln)}") + new_text = text.rstrip() + "\n".join(section) + "\n" + readme_path.write_text(new_text) + print(f"FIXED: {readme_path.relative_to(VAULT)} (+{len(links)} links)") + + +# decisions/README.md → all decisions +append_index( + VAULT / "decisions" / "README.md", + list_md(VAULT / "decisions"), +) + +# notes/README.md → top-level notes only (skip notes/claude/*) +notes_top = [str(p.relative_to(VAULT)) for p in sorted((VAULT / "notes").glob("*.md")) + if p.name != "README.md"] +append_index(VAULT / "notes" / "README.md", notes_top) + +# snippets/README.md → all snippets +append_index( + VAULT / "snippets" / "README.md", + list_md(VAULT / "snippets"), +) + +# projects/dttb/README.md → all dttb children (incl. subfolder README) +dttb_children = [] +for p in sorted((VAULT / "projects" / "dttb").glob("*.md")): + if p.name != "README.md": + dttb_children.append(str(p.relative_to(VAULT))) +# add subfolder README +nt_readme = VAULT / "projects" / "dttb" / "nextcloud-talk-bot" / "README.md" +if nt_readme.is_file(): + dttb_children.append(str(nt_readme.relative_to(VAULT))) +append_index(VAULT / "projects" / "dttb" / "README.md", dttb_children) + +# projects/niikn/README.md → all niikn children +append_index( + VAULT / "projects" / "niikn" / "README.md", + list_md(VAULT / "projects" / "niikn"), +) + +# projects/glavtorg/README.md → glavtorg children +append_index( + VAULT / "projects" / "glavtorg" / "README.md", + list_md(VAULT / "projects" / "glavtorg"), +) + +# projects/krasnogorsk/README.md → krasnogorsk children +append_index( + VAULT / "projects" / "krasnogorsk" / "README.md", + list_md(VAULT / "projects" / "krasnogorsk"), +) + +# claude-memory/MEMORY.md → all claude-memory *.md +append_index( + VAULT / "claude-memory" / "MEMORY.md", + [str(p.relative_to(VAULT)) for p in sorted((VAULT / "claude-memory").glob("*.md")) + if p.name != "MEMORY.md"], + title="Записи памяти", +) + +# Root README.md — links to folder READMEs + top-level project files + mmfb +root_links = [ + "decisions/README.md", + "notes/README.md", + "snippets/README.md", + "projects/dttb/README.md", + "projects/niikn/README.md", + "projects/glavtorg/README.md", + "projects/krasnogorsk/README.md", + "projects/mmfb/proxmox-inventory.md", + "claude-memory/MEMORY.md", +] +# top-level projects/*.md files +for p in sorted((VAULT / "projects").glob("*.md")): + root_links.append(str(p.relative_to(VAULT))) +append_index(VAULT / "README.md", root_links, title="Карта базы") diff --git a/scripts/kb-date-todos.py b/scripts/kb-date-todos.py deleted file mode 100644 index e50b4b8..0000000 --- a/scripts/kb-date-todos.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 -"""Append (YYYY-MM-DD) to undated '- [ ]' lines. One-off agent-loop fix.""" -import re -from pathlib import Path - -VAULT = Path(__file__).resolve().parent.parent -TODAY = "2026-04-18" - -TARGETS = { - "projects/niikn/changelog.md": TODAY, - "projects/niikn/NIIKN-ChangeLog.md": TODAY, - "projects/niikn/matrix.md": TODAY, - "projects/dttb/nextcloud-talk-bot/README.md": TODAY, - "daily/2026-04-19.md": "2026-04-19", - "claude-memory/mas-niikn.md": TODAY, - "decisions/2026-04-16-unifi-migration-peredelki.md": "2026-04-16", - "projects/niikn/README.md": TODAY, - "decisions/2026-04-14-openclaw-claude-code-pipeline.md": "2026-04-14", - "projects/dttb/mailcow-dttb.md": TODAY, - "daily/2026-04-17.md": "2026-04-17", - "templates/daily-note.md": TODAY, -} - -DATE_RE = re.compile(r"\d{4}-\d{2}-\d{2}") -TODO_RE = re.compile(r"^(\s*-\s*\[\s*\]\s*.*?)\s*$") - -for rel, date in TARGETS.items(): - p = VAULT / rel - if not p.is_file(): - print(f"MISSING: {rel}") - continue - lines = p.read_text().splitlines() - fixed = 0 - new_lines = [] - for line in lines: - m = re.match(r"^\s*-\s*\[\s*\]\s+", line) - if m and not DATE_RE.search(line): - stripped = line.rstrip() - new_lines.append(f"{stripped} ({date})") - fixed += 1 - elif re.match(r"^\s*-\s*\[\s*\]\s*$", line): - new_lines.append(f"{line.rstrip()} ({date})") - fixed += 1 - else: - new_lines.append(line) - p.write_text("\n".join(new_lines) + ("\n" if lines and not lines[-1] == "" else "")) - print(f"{rel}: {fixed} fixed") diff --git a/scripts/kb-list-issues.py b/scripts/kb-list-issues.py deleted file mode 100644 index b90351b..0000000 --- a/scripts/kb-list-issues.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python3 -"""Temporary diagnostic — list all KB issues in full.""" -import re -from pathlib import Path -from collections import defaultdict - -VAULT = Path(__file__).resolve().parent.parent -INCLUDE_DIRS = ['decisions', 'notes', 'projects', 'snippets', 'daily', - 'claude-memory', 'templates', 'scripts', 'audit'] -EXCLUDE = {'.git', '.obsidian', '.claude'} - -files = [] -for d in INCLUDE_DIRS: - root = VAULT / d - if not root.exists(): - continue - for p in root.rglob('*.md'): - if any(part in EXCLUDE for part in p.parts): - continue - files.append(p) -for name in ('CLAUDE.md', 'README.md'): - p = VAULT / name - if p.is_file(): - files.append(p) - -def has_fm(txt): - if not txt.startswith('---\n'): - return False - return bool(re.match(r'---\n(.*?\n)*?---\n', txt)) - -def strip_code(t): - t = re.sub(r'```[\s\S]*?```', '', t) - t = re.sub(r'`[^`\n]*`', '', t) - return t - -def wikilinks(t): - out = [] - for m in re.finditer(r'\[\[([^\]]+)\]\]', strip_code(t)): - tgt = m.group(1).split('|')[0].split('#')[0].strip() - if tgt: - out.append(tgt) - return out - -basenames = defaultdict(list) -for p in files: - basenames[p.stem].append(p) - -def resolve_wl(target, from_file): - tc = target.replace('.md', '') - if tc.startswith(('.', '/')): - try: - r = (from_file.parent / tc).resolve() - for c in (r.with_suffix('.md'), r): - if c.is_file() and str(c).endswith('.md'): - return c - except Exception: - pass - g = VAULT / f'{tc}.md' - if g.is_file(): - return g - b = tc.rsplit('/', 1)[-1] - if b in basenames: - return basenames[b][0] - return None - -missing = [] -incoming = defaultdict(set) -todos = defaultdict(list) - -for f in files: - txt = f.read_text(errors='ignore') - rel = str(f.relative_to(VAULT)) - if f.name not in ('README.md', 'CLAUDE.md') and not has_fm(txt): - missing.append(rel) - for target in wikilinks(txt): - r = resolve_wl(target, f) - if r: - incoming[r].add(f) - for i, line in enumerate(txt.splitlines(), 1): - if re.match(r'^\s*-\s*\[\s*\]\s+', line): - if not re.search(r'\d{4}-\d{2}-\d{2}', line): - todos[rel].append((i, line)) - -ORPHAN_OK = [ - re.compile(r'^daily/.*'), - re.compile(r'^audit/.*'), - re.compile(r'^templates/.*'), - re.compile(r'^notes/claude/.*'), - re.compile(r'^scripts/.*'), - re.compile(r'^CLAUDE\.md$'), - re.compile(r'^README\.md$'), -] -def is_ok(rel): - return any(p.match(rel) for p in ORPHAN_OK) - -orphans = [] -for f in files: - if f not in incoming: - rel = str(f.relative_to(VAULT)) - if not is_ok(rel): - orphans.append(rel) - -print('=== MISSING FRONTMATTER ({}) ==='.format(len(missing))) -for x in missing: - print(x) -print() -print('=== ORPHANS ({}) ==='.format(len(orphans))) -for x in orphans: - print(x) -print() -print('=== UNDATED TODOS ({}) ==='.format(sum(len(v) for v in todos.values()))) -for f, lines in sorted(todos.items(), key=lambda x: -len(x[1])): - print('FILE:', f, '({})'.format(len(lines))) - for ln, line in lines: - print(' L{}: {}'.format(ln, line.strip())) diff --git a/snippets/README.md b/snippets/README.md index 7e9b58d..a707f5e 100644 --- a/snippets/README.md +++ b/snippets/README.md @@ -1 +1,7 @@ # Сниппеты + + +## Навигация + +- [[snippets/clawdbot-cliproxy-config]] +- [[snippets/proxmox-console-quirks]]