Update dashboard, kb, memory +4 more (+28 ~18 -1)
This commit is contained in:
503
TOOLS.md
503
TOOLS.md
@@ -1,475 +1,82 @@
|
||||
# TOOLS.md - Echo (Unificat)
|
||||
# TOOLS.md - Echo
|
||||
|
||||
## Unelte comune
|
||||
## Unelte principale
|
||||
|
||||
### Email (SMTP/IMAP)
|
||||
- **Cont principal:** Gmail (mmarius28@gmail.com) - folosit pentru trimitere
|
||||
- **Cont backup:** echo@romfast.ro (blocat MailChannels)
|
||||
- **Credențiale:** în `.env` (GMAIL_USER, GMAIL_PASSWORD)
|
||||
### Email
|
||||
- **Trimitere:** `python3 tools/email_send.py "dest" "subiect" "corp"`
|
||||
- **From:** Echo <mmarius28@gmail.com>
|
||||
- **Reply-To:** echo@romfast.ro (răspunsurile ajung aici pentru procesare)
|
||||
|
||||
**Format email rapoarte:**
|
||||
- Font: 16px text, 18px titluri
|
||||
- Culori: albastru (#2563eb) pentru DONE, gri (#f3f4f6) pentru PROGRAMAT
|
||||
- Puține emoji-uri, link-uri vizibile
|
||||
- Titlu + acțiune combinate (ex: "A0 - Git commit si push")
|
||||
- Subject confirmare: "Re: [subject original]"
|
||||
- **Procesare inbox:**
|
||||
```bash
|
||||
python3 tools/email_process.py # listează necitite
|
||||
python3 tools/email_process.py --all # listează toate
|
||||
python3 tools/email_process.py --save # salvează ca note în memory/kb/emails/
|
||||
```
|
||||
|
||||
### 📧 Email Whitelist
|
||||
**Răspuns automat permis doar pentru:**
|
||||
- mmarius28@gmail.com (Marius - personal)
|
||||
- marius.mutu@romfast.ro (Marius - work)
|
||||
|
||||
**Pentru orice altă adresă:** Citesc și raportez, aștept aprobare.
|
||||
|
||||
**Flux email → note → insights:**
|
||||
1. Marius face forward la `echo@romfast.ro`
|
||||
2. La heartbeat sau manual: `python3 tools/email_process.py --save`
|
||||
3. Emailul devine notă în `memory/kb/emails/YYYY-MM-DD_subiect.md`
|
||||
4. Completez TL;DR și extrag insights în `memory/kb/insights/`
|
||||
5. `python3 tools/update_notes_index.py` actualizează indexul
|
||||
|
||||
### 📧 Email Whitelist
|
||||
**Răspuns automat permis doar pentru:**
|
||||
- mmarius28@gmail.com (Marius - personal)
|
||||
- marius.mutu@romfast.ro (Marius - work)
|
||||
|
||||
**Pentru orice altă adresă:** Citesc și raportez, aștept aprobare.
|
||||
|
||||
### Transcriere Audio/Video (Whisper)
|
||||
- **Model:** OpenAI Whisper (local, CPU)
|
||||
- **Dependințe:** PyTorch CPU, ffmpeg (static binary în ~/bin/)
|
||||
- **Venv:** `~/clawd/venv/`
|
||||
|
||||
**Utilizare:**
|
||||
```bash
|
||||
cd ~/clawd && source venv/bin/activate
|
||||
export PATH="$HOME/bin:$PATH"
|
||||
|
||||
# Transcriere directă
|
||||
python3 -c "
|
||||
import whisper
|
||||
model = whisper.load_model('base')
|
||||
result = model.transcribe('/path/to/audio.mp3', language='ro')
|
||||
print(result['text'])
|
||||
"
|
||||
|
||||
# Download de pe Google Drive + transcriere
|
||||
gdown 'FILE_ID' -O /tmp/audio.mp3
|
||||
```
|
||||
|
||||
**Modele disponibile:**
|
||||
- `tiny` - cel mai rapid, mai puțin precis
|
||||
- `base` - echilibru bun (folosit default)
|
||||
- `small`, `medium`, `large` - mai precise, mai lente
|
||||
|
||||
**Formate suportate:** mp3, mp4, wav, m4a, webm, etc. (orice ffmpeg poate procesa)
|
||||
|
||||
**Note:**
|
||||
- Pe CPU durează mai mult (~1x real-time pentru base)
|
||||
- Pentru română, base e suficient de precis
|
||||
- Transcrierea poate avea erori minore de recunoaștere
|
||||
- **Procesare:** `python3 tools/email_process.py [--save|--all]`
|
||||
- **From:** Echo <mmarius28@gmail.com> | **Reply-To:** echo@romfast.ro
|
||||
- **Format rapoarte:** 16px text, 18px titluri, albastru (#2563eb) DONE, gri (#f3f4f6) PROGRAMAT
|
||||
|
||||
### Dashboard
|
||||
- **URL:** https://moltbot.tailf7372d.ts.net/echo/
|
||||
- **Task add:** `python3 dashboard/update_task.py add in-progress "titlu"`
|
||||
- **Task done:** `python3 dashboard/update_task.py done <task-id>`
|
||||
- **Notes:** https://moltbot.tailf7372d.ts.net/echo/notes.html
|
||||
- **Files:** https://moltbot.tailf7372d.ts.net/echo/files.html
|
||||
- **API:** `dashboard/api.py`
|
||||
|
||||
**Reguli dashboard:**
|
||||
- Tab Activity afișează task-uri din tasks.json, sortate descrescător după timestamp
|
||||
- Când creez/completez task-uri, să am timestamp complet (ISO format cu oră)
|
||||
|
||||
### KB (Knowledge Base)
|
||||
- **Folder:** memory/kb/ (youtube/, coaching/, insights/, projects/)
|
||||
- **Update index:** `python3 tools/update_notes_index.py`
|
||||
- **Pagina web:** https://moltbot.tailf7372d.ts.net/echo/notes.html
|
||||
- **Tags domeniu:** `@work`, `@health`, `@growth`, `@sprijin`, `@scout`
|
||||
- **Tags tip:** `@project`, `@fisa`, `@exercitiu`, `@meditatie`, `@reflectie`
|
||||
|
||||
**IMPORTANT:** Când salvez orice notă (rețete, youtube, proiecte, etc.), trebuie să:
|
||||
1. Salvez în subdirectorul potrivit din `memory/kb/`
|
||||
2. Rulez `python3 tools/update_notes_index.py` pentru a actualiza indexul
|
||||
3. Dau link-ul către pagina notes.html
|
||||
|
||||
### 🔍 Memory Search (Semantic Search)
|
||||
|
||||
**Ce e:** Căutare semantică în fișierele `.md` din `memory/`.
|
||||
|
||||
**Cum funcționează:**
|
||||
- Clawdbot indexează automat fișierele (watcher + debounce 1.5s)
|
||||
- Embeddings generate local cu Ollama (all-minilm, 384 dim)
|
||||
- Index stocat în `~/.clawdbot/memory/echo.sqlite`
|
||||
|
||||
**Ce se indexează:**
|
||||
- ✅ `memory/*.md` - note zilnice, approved-tasks, etc.
|
||||
- ✅ `memory/kb/**/*.md` - toate notele din KB (youtube, coaching, insights, projects, etc.)
|
||||
|
||||
**Când folosesc memory_search:**
|
||||
- Întrebări despre trecut: "ce am decis despre coaching"
|
||||
- Context recent: "ce s-a întâmplat ieri"
|
||||
|
||||
**Comenzi:**
|
||||
```
|
||||
memory_search query="text" maxResults=5
|
||||
memory_get path="memory/file.md" from=1 lines=50
|
||||
```
|
||||
|
||||
**Indexare automată:** La fiecare modificare fișier în memory/, Clawdbot:
|
||||
1. Detectează schimbarea (watcher)
|
||||
2. Așteaptă 1.5s (debounce)
|
||||
3. Re-indexează DOAR fișierul modificat (incremental)
|
||||
4. Celelalte fișiere rămân neatinse
|
||||
|
||||
### Procesare Bonuri Fiscale (PDF → Oracle)
|
||||
- **Script:** `python3 tools/process_bon.py <pdf_path> [--save]`
|
||||
- **Comandă:** Când Marius trimite PDF + "procesează bon" sau "bon fiscal"
|
||||
- **Dry run:** fără `--save` - arată ce ar salva
|
||||
- **Salvare:** cu `--save` - salvează efectiv în Oracle
|
||||
|
||||
**Flux:**
|
||||
1. Marius trimite PDF pe WhatsApp/Discord
|
||||
2. Marius scrie: "procesează bon" / "bon" / "adaugă bon"
|
||||
3. Echo rulează dry run, arată rezultatul
|
||||
4. Marius confirmă "ok" / "salvează" → Echo rulează cu --save
|
||||
|
||||
**Ce face scriptul:**
|
||||
- OCR via roa2web API
|
||||
- SQLite: receipt complet
|
||||
- Oracle: partener + note contabile (ID_JTVA, TAXCODE, etc.)
|
||||
- **Task:** `python3 dashboard/update_task.py add in-progress "titlu"` | `done <id>`
|
||||
- **Notes:** /echo/notes.html | **Files:** /echo/files.html
|
||||
|
||||
### Git
|
||||
- **Repo:** ~/clawd → gitea.romfast.ro/romfast/clawd
|
||||
- **Commit:** `python3 tools/git_commit.py --push`
|
||||
- **Repo:** gitea.romfast.ro/romfast/clawd
|
||||
- `python3 tools/git_commit.py --push`
|
||||
|
||||
### Calendar
|
||||
- **Credentials:** credentials/google-calendar.json + google-calendar-token.json
|
||||
- **Moduri:** `python3 tools/calendar_check.py [today|week|travel|busy|soon|all]`
|
||||
- **Travel detection:** nlp/bucuresti keywords, 7-11 zile înainte alertă bilete
|
||||
|
||||
### KB
|
||||
- **Folder:** memory/kb/ (youtube/, coaching/, insights/, projects/)
|
||||
- **Update:** `python3 tools/update_notes_index.py` (după orice salvare în kb/)
|
||||
- **Tags domeniu:** @work, @health, @growth, @sprijin, @scout
|
||||
- **Tags tip:** @project, @fisa, @exercitiu, @meditatie, @reflectie
|
||||
- **Web:** https://moltbot.tailf7372d.ts.net/echo/notes.html
|
||||
|
||||
### Memory Search
|
||||
- `memory_search query="text"` → caută semantic în memory/
|
||||
- `memory_get path="..." from=N lines=M` → extrage snippet
|
||||
- **Index:** ~/.clawdbot/memory/echo.sqlite (Ollama all-minilm embeddings)
|
||||
|
||||
### ANAF Monitor
|
||||
- **Script:** `python3 tools/anaf-monitor/monitor_v2.py` (v2.2)
|
||||
- **Job:** `anaf-monitor` (10:00 și 16:00 București, luni-vineri)
|
||||
- **Monitorizează:** D100, D101, D300, D390, D394, D205, D406, Bilanț 2025, situații financiare
|
||||
- **Funcții:**
|
||||
- Hash detection - detectează ORICE schimbare pe pagină
|
||||
- Version extraction - extrage date soft A/J (toate variantele: S1002, S1003, etc.)
|
||||
- Text snapshots - salvează textul în `snapshots/*.txt`
|
||||
- Diff - arată exact ce s-a modificat
|
||||
- **Output:** JSON cu changes + diff (dacă există)
|
||||
- **Funcții:** Hash detection, version extraction, diff, snapshots
|
||||
- **Job:** 10:00 și 16:00 București, luni-vineri
|
||||
|
||||
### Google Calendar
|
||||
- **Credentials:** `credentials/google-calendar.json` (OAuth client)
|
||||
- **Token:** `credentials/google-calendar-token.json` (auto-refresh)
|
||||
- **Acces:** Read + Write (`calendar.events`)
|
||||
- **Venv:** `~/clawd/venv/` (activate cu `source venv/bin/activate`)
|
||||
### Procesare Bonuri
|
||||
- **Script:** `python3 tools/process_bon.py <pdf> [--save]`
|
||||
- **Flux:** Dry run → confirmare → --save (Oracle + SQLite)
|
||||
|
||||
**Script:** `python3 tools/calendar_check.py [mode]`
|
||||
- `today` - evenimente azi + mâine
|
||||
- `week` - evenimente săptămâna curentă
|
||||
- `travel` - reminder-uri pentru NLP/București (bilete + cazare)
|
||||
- `busy` - verifică dacă e ocupat ACUM (pentru "nu deranja")
|
||||
- `soon [ore]` - evenimente în următoarele N ore (default 2)
|
||||
- `all` - toate cele de mai sus
|
||||
### YouTube Subtitles
|
||||
- **Script:** `python3 tools/youtube_subs.py URL [lang]`
|
||||
- **Output:** titlu + transcript text (subtitrări clean)
|
||||
|
||||
**Travel detection:**
|
||||
- Keywords: `nlp`, `bucuresti`, `bucurești`, `bucharest`
|
||||
- 7-11 zile înainte → "Cumpără bilete + asigură cazare"
|
||||
- 3-6 zile înainte → "⚠️ URGENT: Verifică dacă ai bilete!"
|
||||
### Whisper
|
||||
- **Venv:** ~/clawd/venv/ | **Model:** base
|
||||
- **Utilizare:** `whisper.load_model('base').transcribe(path, language='ro')`
|
||||
|
||||
**Creare evenimente (Python):**
|
||||
```python
|
||||
from tools.calendar_check import create_event
|
||||
create_event(
|
||||
summary='Titlu',
|
||||
start_datetime='2026-02-05T15:00:00',
|
||||
duration_minutes=60,
|
||||
description='Opțional',
|
||||
reminders=[60, 15], # minute înainte (default: [30])
|
||||
is_travel=False # True = reminders seara înainte + 2h
|
||||
)
|
||||
```
|
||||
|
||||
**Reminders automate:**
|
||||
- Evenimente normale: 30 min înainte
|
||||
- Evenimente travel (`is_travel=True`): seara înainte (18:00) + 2h înainte
|
||||
- Custom: `reminders=[120, 30]` = 2h + 30min
|
||||
|
||||
**Integrat în:**
|
||||
- `morning-report` - azi/mâine/peste 2 zile + travel reminders
|
||||
- `evening-report` - mâine (reminder seară)
|
||||
- `weekly-planning-sun` - săptămâna următoare + travel
|
||||
- `respiratie-orar` - skip dacă busy în calendar
|
||||
- `heartbeat` - alertă dacă eveniment în <2h
|
||||
|
||||
**Revocă accesul:** <https://myaccount.google.com/permissions>
|
||||
|
||||
### Pauze Respirație (Pattern Interrupt)
|
||||
- **Bancă tehnici:** `memory/kb/tehnici-pauza.md`
|
||||
- **Script:** `python3 tools/pauza_random.py` - alege random, afișează cu context
|
||||
- **Job:** `respiratie-orar` (09:00-19:00 București, orar) → #echo-self
|
||||
- **Format output:**
|
||||
```
|
||||
**Nume Tehnică**
|
||||
Pași de urmat
|
||||
📊 Rezultat (ce obții)
|
||||
📚 Sursă (autor/studiu)
|
||||
```
|
||||
|
||||
**Flux actualizare tehnici:**
|
||||
1. **Sursă:** Insights din video-uri/articole procesate, tehnici din NLP/coaching
|
||||
2. **Cine:** Echo AUTOMAT prin job `insights-extract` (08:00 și 19:00 București)
|
||||
3. **Ce caută:** respirație, relaxare, mindfulness, pattern interrupt, mișcare scurtă (1-5 min)
|
||||
4. **Cum:** Verifică dacă nu există deja → adaugă în secțiunea potrivită (BIROU 09-17 / ACASĂ 18+)
|
||||
5. **Format:** Nume ### → bullet pași → `- **Rezultat:**` → `- **Sursă:** [autor](link)`
|
||||
|
||||
**Surse curente:** Tony Robbins, Wim Hof, Jon Kabat-Zinn (MBSR), Dr. Andrew Weil, Amy Cuddy, Cal Newport
|
||||
|
||||
**Link-uri sursă:**
|
||||
- Notă din KB → `https://moltbot.tailf7372d.ts.net/echo/files.html#memory/kb/...`
|
||||
- Resursă externă → link direct (TED, Healthline, etc.)
|
||||
|
||||
---
|
||||
### Pauze respirație
|
||||
- **Script:** `python3 tools/pauza_random.py`
|
||||
- **Bancă:** memory/kb/tehnici-pauza.md
|
||||
- **Format:** **Nume** → pași → 📊 Rezultat → 📚 Sursă
|
||||
- **Flux actualizare:** Automat via insights-extract job
|
||||
|
||||
## Cron Jobs
|
||||
|
||||
| Oră (UTC) | Oră (București) | Job | Canal | Ce face |
|
||||
|-----------|-----------------|-----|-------|---------|
|
||||
| 00:00 | 02:00 | content-discovery | - | Caută video+articole pe teme recente → memory/kb/ |
|
||||
| 05:00 | 07:00 | security-audit | #echo-work (doar alerte) | Audit securitate zilnic |
|
||||
| 01:00 | 03:00 | night-execute-late | #echo-work | Continuă execuția task-uri (run 2) |
|
||||
| 03:00 | 05:00 | archive-tasks | #echo-work | Arhivează task-uri vechi |
|
||||
| 06:00,17:00 | 08:00,19:00 | insights-extract | - | Extrage insights din memory/kb/ + actualizează tehnici-pauza.md |
|
||||
| 08:00,14:00 | 10:00,16:00 | anaf-monitor | #echo-work (doar alerte) | Verifică modificări ANAF (hash + diff) |
|
||||
| 06:30 | 08:30 | morning-report | 📧 EMAIL | Raport dimineață - vezi [FLUX-JOBURI.md](memory/kb/projects/FLUX-JOBURI.md) |
|
||||
| 07:00 | 09:00 | morning-coaching | #echo-self + 📧 | Gând + provocare → memory/kb/coaching/ |
|
||||
| 07-17 | 09-19 | respiratie-orar | #echo-self | Pauze orare (skip dacă busy în calendar) |
|
||||
| 15:00 mar,joi | 17:00 | project-checkin | #echo-work | Check-in Vending Master |
|
||||
| 18:00 | 20:00 | evening-report | 📧 EMAIL | Raport seară - vezi [FLUX-JOBURI.md](memory/kb/projects/FLUX-JOBURI.md) |
|
||||
| 19:00 | 21:00 | evening-coaching | #echo-self + 📧 | Reflecție seară → memory/kb/coaching/ |
|
||||
| 19:00 dum | 21:00 | weekly-planning | #echo-work | Planning săptămânal |
|
||||
| 21:00 | 23:00 | night-execute | #echo-work | Execută task-uri aprobate (run 1) |
|
||||
**Principale:** morning-report (08:30), morning-coaching (09:00), respiratie-orar (09-19), anaf-monitor (10:00,16:00), evening-report (20:00), evening-coaching (21:00), night-execute (23:00)
|
||||
|
||||
**Marcaje insights:**
|
||||
- `[ ]` = disponibil (rapoarte pot propune)
|
||||
- `[x]` = executat/implementat
|
||||
- `[—]` = skip/refuzat
|
||||
|
||||
**Răspuns la rapoarte email:**
|
||||
Marius răspunde cu:
|
||||
- `1 pentru X,Y` = execută ACUM propunerile X și Y
|
||||
- `2 pentru X,Y` = pune în tasks pentru noaptea asta
|
||||
- `3 pentru X,Y` = NU (skip, marchez [—])
|
||||
- Text liber = procesez și răspund
|
||||
|
||||
La heartbeat verific inbox și procesez răspunsurile.
|
||||
|
||||
**Răspuns la rapoarte email:**
|
||||
Marius răspunde cu:
|
||||
- `1 pentru X,Y` = execută ACUM propunerile X și Y
|
||||
- `2 pentru X,Y` = pune în tasks pentru noaptea asta
|
||||
- `3 pentru X,Y` = NU (skip, marchez [—])
|
||||
- Text liber = procesez și răspund
|
||||
|
||||
La heartbeat verific inbox și procesez răspunsurile.
|
||||
|
||||
**Comenzi:**
|
||||
```bash
|
||||
cron action=list # vezi toate joburile
|
||||
cron action=run jobId=X # rulează manual
|
||||
cron action=update jobId=X # modifică job
|
||||
```
|
||||
|
||||
**Regulă:** Când modific joburi, actualizez și acest tabel!
|
||||
|
||||
---
|
||||
**Lista completă:** memory/kb/tools/cron-jobs.md
|
||||
**Comenzi:** `cron action=list|run|update jobId=X`
|
||||
|
||||
## Infrastructură
|
||||
|
||||
### Servicii LLM/AI locale
|
||||
|
||||
| LXC | Serviciu | IP:Port | Utilizare |
|
||||
|-----|----------|---------|-----------|
|
||||
| flowise (104) | **Ollama** | 10.0.20.161:11434 | Embeddings (all-minilm), LLM local |
|
||||
| flowise (104) | Flowise | 10.0.20.161:3000 | Flow builder |
|
||||
| dokploy (103) | Dokploy | 10.0.20.? | Deployment platform |
|
||||
|
||||
**Modele Ollama disponibile:**
|
||||
- `all-minilm` - embeddings rapid (45MB) ← **folosit pentru memory_search**
|
||||
- `nomic-embed-text` - embeddings calitate (274MB)
|
||||
- `llama3.2:3b-instruct-q8_0` - LLM conversație (3.4GB)
|
||||
- `smollm:135m` - LLM mic rapid (91MB)
|
||||
|
||||
---
|
||||
|
||||
### Docker LXC (portainer)
|
||||
- **Host:** 10.0.20.170 (LXC 100 pe pvemini)
|
||||
- **User:** echo
|
||||
- **SSH:** `ssh echo@10.0.20.170`
|
||||
- **Portainer:** https://10.0.20.170:9443
|
||||
- **Docker:** v28.3.3 + Compose v2.39.1
|
||||
- **Resurse:** 1GB RAM, 20GB disk
|
||||
- **Proiecte:** `/opt/docker/`
|
||||
|
||||
**Containere:**
|
||||
| Container | Port | Status | Descriere |
|
||||
|-----------|------|--------|-----------|
|
||||
| portainer | 9443 | ✅ | Management Docker |
|
||||
| nginx | 443, 8080 | ✅ | Reverse proxy |
|
||||
| roa-efactura | 5003 | ⚠️ | E-Factura ANAF |
|
||||
| pdf-qr-app | 5002 | ✅ | QR facturi |
|
||||
| flask_app | 5001 | ✅ | ROA Flask |
|
||||
| bt-web-automation | 5000, 8081 | ✅ | BT automation |
|
||||
| pulse | 7655 | ✅ | Monitoring Proxmox |
|
||||
| wol-manager | - | ✅ | Wake-on-LAN |
|
||||
| rustdesk (hbbs+hbbr) | 21115-21119 | ✅ | Remote desktop server |
|
||||
|
||||
**Proiecte docker-compose:**
|
||||
- `/opt/docker/docker-compose.yaml` - stack principal (nginx, flask, efactura, qr)
|
||||
- `/opt/docker/wol/docker-compose.yml` - Wake-on-LAN
|
||||
- `/opt/docker/qrinvoice/docker-compose.yml` - QR Invoice app
|
||||
|
||||
---
|
||||
|
||||
### Proxmox Cluster (3 noduri)
|
||||
**User:** echo | **Acces:** doar din 10.0.20.173 (moltbot) | **Sudo:** qm, pct, pvesh
|
||||
|
||||
#### pveelite (10.0.20.202)
|
||||
- **Resurse:** 16GB RAM, 557GB disk
|
||||
- **SSH:** `ssh echo@10.0.20.202`
|
||||
- **Scripturi:** `/opt/scripts/`
|
||||
- `oracle-backup-monitor-proxmox.sh` - zilnic 21:00, verifică backup Oracle
|
||||
- `weekly-dr-test-proxmox.sh` - sâmbătă 06:00, test restore Oracle DR (VM 109)
|
||||
|
||||
| VMID | Tip | Nume | Status |
|
||||
|------|-----|------|--------|
|
||||
| 109 | VM | oracle-dr-windows | stopped |
|
||||
| 101 | LXC | minecraft | stopped |
|
||||
| 110 | LXC | moltbot | running |
|
||||
| 301 | LXC | docker-portainer-template | stopped |
|
||||
|
||||
#### pvemini (10.0.20.201)
|
||||
- **Resurse:** 64GB RAM, 1.4TB disk
|
||||
- **SSH:** `ssh echo@10.0.20.201`
|
||||
- **Scripturi monitorizare:** `/opt/scripts/`
|
||||
- `ha-monitor.sh` - status cluster HA
|
||||
- `monitor-ssl-certificates.sh` - verifică SSL-uri zilnic
|
||||
- `ups-shutdown-cluster.sh` - shutdown orchestrat la UPS critic
|
||||
- `ups-monthly-test.sh` - test baterie UPS lunar (1 ale lunii)
|
||||
- `ups-maintenance-shutdown.sh` - shutdown pentru mentenanță UPS
|
||||
- `vm107-monitor.sh` - monitorizează VM 107
|
||||
- **Emailuri automate:** backup, cluster status, UPS, restore Oracle (sâmbătă)
|
||||
|
||||
| Cron | Oră | Script/Job |
|
||||
|------|-----|------------|
|
||||
| Zilnic 00:00 | ha-monitor.sh | Status cluster HA |
|
||||
| 1 ale lunii 00:00 | ups-monthly-test.sh | Test baterie UPS |
|
||||
| Zilnic 02:00 | vzdump backup | VM 100,108,104,106,201,171 → storage "backup" |
|
||||
| Zilnic 22:00 | vzdump backup | LXC 101,110 (moltbot) → backup-pvemini-nfs |
|
||||
|
||||
| VMID | Tip | Nume | Status |
|
||||
|------|-----|------|--------|
|
||||
| 201 | VM | roacentral | running |
|
||||
| 300 | VM | Win11-Template | stopped |
|
||||
| 302 | VM | oracle-test-302 | stopped |
|
||||
| 100 | LXC | portainer | running |
|
||||
| 103 | LXC | dokploy | running |
|
||||
| 104 | LXC | flowise | running |
|
||||
| 105 | LXC | test | stopped |
|
||||
| 106 | LXC | gitea | running |
|
||||
| 108 | LXC | central-oracle | running |
|
||||
| 171 | LXC | claude-agent | running |
|
||||
|
||||
##### LXC 171 - claude-agent (Development Environment)
|
||||
- **IP:** 10.0.20.171
|
||||
- **Resurse:** 4 cores, 16GB RAM, 32GB disk
|
||||
- **OS:** Ubuntu (unprivileged, nesting enabled)
|
||||
- **Tailscale:** Da (acces remote)
|
||||
|
||||
**Servicii:**
|
||||
- `code-server@claude` — VS Code în browser
|
||||
- `ttyd` — Web Terminal
|
||||
- `ssh` — acces direct
|
||||
|
||||
**Claude Code:**
|
||||
- Instalat și configurat
|
||||
- Git configurat pentru `gitea.romfast.ro`
|
||||
- Mod interactiv: `claude` (în terminal)
|
||||
- Mod programatic: `claude -p "task description"` — pentru sarcini automatizate
|
||||
|
||||
**Utilizare:**
|
||||
```bash
|
||||
# Acces SSH
|
||||
ssh user@10.0.20.171
|
||||
|
||||
# Sau prin Proxmox
|
||||
ssh echo@10.0.20.201 "sudo pct exec 171 -- bash"
|
||||
|
||||
# Claude Code - interactiv
|
||||
claude
|
||||
|
||||
# Claude Code - task direct
|
||||
claude -p "descrie sarcina aici"
|
||||
```
|
||||
|
||||
#### pve1 (10.0.20.200)
|
||||
- **Resurse:** 32GB RAM, 1.3TB disk
|
||||
- **SSH:** `ssh echo@10.0.20.200`
|
||||
- **Status:** Gol (fără VM/LXC)
|
||||
|
||||
---
|
||||
**Proxmox:** 3 noduri (pveelite .202, pvemini .201, pve1 .200) | **User:** echo
|
||||
**Docker:** LXC 100 - 10.0.20.170:9443 (portainer)
|
||||
**Ollama:** LXC 104 - 10.0.20.161:11434 (all-minilm embeddings)
|
||||
**Detalii:** memory/kb/tools/infrastructure.md
|
||||
|
||||
## Unelte per domeniu
|
||||
|
||||
### Self (wellbeing, coaching)
|
||||
- **Ritual zilnic:** 08:00 și 23:00 - citate cu format specific
|
||||
- Tehnici CNV, NLP, Sleight of Mouth
|
||||
- Tracking sănătate (de creat)
|
||||
- Resurse NMG (de adăugat)
|
||||
- Post negru tracker (de creat)
|
||||
|
||||
### Sprijin (grup joi)
|
||||
- **Notes:** filtru `@sprijin` pe https://moltbot.tailf7372d.ts.net/echo/notes.html
|
||||
- **Proiect:** `memory/kb/projects/grup-sprijin/`
|
||||
- **Biblioteca activități:** `memory/kb/projects/grup-sprijin/biblioteca.json`
|
||||
- **Fișe:** `memory/kb/projects/grup-sprijin/fise/`
|
||||
- **Template:** `memory/kb/projects/grup-sprijin/template-fisa.md`
|
||||
- Proiect: `memory/kb/projects/grup-sprijin/`
|
||||
- Biblioteca: `biblioteca.json` | Fișe: `fise/`
|
||||
|
||||
### Scout (cercetași)
|
||||
- Template activități scout
|
||||
- Locații Constanța (de completat)
|
||||
- Contacte echipă (de completat)
|
||||
|
||||
---
|
||||
|
||||
## YouTube Subtitle Download (Rate Limit Protected)
|
||||
|
||||
**Script:** `python3 tools/yt_download.py URL [URL2] ...`
|
||||
|
||||
**Setup:**
|
||||
- Cookies: `credentials/youtube-cookies.txt` (export din browser)
|
||||
- Deno: `~/.deno/bin/deno` (pentru JS challenges)
|
||||
|
||||
**Limite:**
|
||||
- Max 30 video-uri per sesiune
|
||||
- Sleep 20s între downloads
|
||||
- Progressive retry: 2h → 4h → 24h
|
||||
|
||||
**Rate limit state:** `memory/youtube-rate-limit.json`
|
||||
|
||||
**Exit codes:**
|
||||
- 0 = success
|
||||
- 1 = some errors
|
||||
- 2 = rate limited (429)
|
||||
- 3 = în cooldown, retry mai târziu
|
||||
|
||||
**Verificare status:**
|
||||
```bash
|
||||
python3 tools/yt_download.py # fără args = arată status
|
||||
cat memory/youtube-rate-limit.json
|
||||
```
|
||||
### Self
|
||||
- Ritual: 08:00 și 23:00 coaching
|
||||
- Tehnici: CNV, NLP, Sleight of Mouth
|
||||
|
||||
Reference in New Issue
Block a user