Update dashboard, kb, memory +4 more (+28 ~18 -1)

This commit is contained in:
Echo
2026-02-06 14:25:10 +00:00
parent 7f64d5054a
commit 19d178268a
6767 changed files with 1346472 additions and 1282 deletions

View File

@@ -0,0 +1,64 @@
# Feature: PDF Download Button in Files Dashboard
## Overview
Add a **"Download as PDF"** button in the file preview panel of the files dashboard, next to the existing preview button.
## Requirements
### Functionality
- When user clicks "Download PDF" on any markdown file, convert it to PDF and trigger download
- Button visible in: `/echo/files.html` preview panel
- Works for: `.md` files (markdown)
- Optional: Support other formats (txt, html) if time permits
### UX
- Button placement: Next to "Preview" button in preview panel
- Button label: "📥 Download PDF" or "⬇️ PDF"
- Action: Click → PDF downloads to user's default Downloads folder
- Filename: Use original filename with `.pdf` extension
### Technical Requirements
#### Questions to Answer First:
1. **Where is files.html code?**
- Location of dashboard files app source
- Frontend framework (React, Vue, vanilla JS?)
- How preview panel is structured
2. **PDF Conversion Options:**
- Install `pandoc` + markdown-to-pdf pipeline?
- Use server-side converter (Python: `markdown2`, `weasyprint`, `reportlab`)?
- Use client-side JS library (`html2pdf.js`, `pdfkit`)?
- Recommendation: **Pandoc** (robust, handles markdown edge cases well)
3. **Architecture:**
- Backend endpoint needed? (`/api/convert-to-pdf`)
- Or handle conversion in Python tooling?
- Where do temporary PDFs live before download?
#### Implementation Path:
1. Locate files app source code
2. Add button HTML/UI element
3. Wire click handler
4. Choose converter (recommend: Pandoc + Python backend)
5. Test with group sprijin files
## Priority
- 🟡 Medium (nice-to-have, improves UX but not blocking)
- Context: User wants to share + print group activity sheets in PDF format
## Related Files
- Dashboard location: `https://moltbot.tailf7372d.ts.net/echo/files.html`
- Files repo: `/home/moltbot/clawd/memory/kb/projects/grup-sprijin/biblioteca/`
- First test case: `fisa-2026-02-05-ancorare-oglinda.md`
---
## Acceptance Criteria
- [ ] User can click "Download PDF" on any .md file
- [ ] PDF downloads with correct filename
- [ ] PDF preserves markdown formatting (headers, lists, emphasis)
- [ ] Works in Firefox/Chrome
## Notes
- User is comfortable with multi-session handoff (can track progress across sub-agents)

View File

@@ -1,298 +1,93 @@
# Flux Complet Joburi Echo
# Flux Joburi Echo
**Actualizat:** 2026-02-01
**Autor:** Echo Work
## Joburi Principale
---
| Job | Când (București) | Ce face |
|-----|------------------|---------|
| morning-report | 08:30 | Raport + propuneri din insights |
| morning-coaching | 09:00 | Gând + provocare zilnică |
| respiratie-orar | 09:00-19:00 | Pauze orare (skip dacă busy) |
| anaf-monitor | 10:00, 16:00 | Check ANAF (doar alerte) |
| evening-report | 20:00 | Raport + propuneri din insights |
| evening-coaching | 21:00 | Reflecție seară |
| night-execute | 23:00 | Execută task-uri aprobate |
## 📋 Rezumat Joburi
| Job | Când (UTC) | Când (București) | Ce face |
|-----|------------|------------------|---------|
| content-discovery | 00:00 | 02:00 | Caută video+articole pe teme recente |
| night-execute-late | 01:00 | 03:00 | Continuă execuția task-uri aprobate (run 2) |
| archive-tasks | 03:00 | 05:00 | Arhivează task-uri vechi |
| insights-extract | 06:00, 17:00 | 08:00, 19:00 | Extrage insights din note noi |
| morning-report | 06:30 | 08:30 | Raport + propuneri din insights |
| morning-coaching | 07:00 | 09:00 | Gând + provocare zilnică |
| respiratie-orar | 07:00-17:00 | 09:00-19:00 | Pauze orare |
| project-checkin | 15:00 mar,joi | 17:00 | Check-in Vending Master |
| evening-report | 18:00 | 20:00 | Raport + propuneri din insights |
| evening-coaching | 19:00 | 21:00 | Reflecție seară |
| weekly-planning | 19:00 dum | 21:00 | Planning săptămânal |
| night-execute | 21:00 | 23:00 | Execută task-uri aprobate (run 1) |
---
## 🔄 Fluxul Complet (Actualizat 2026-02-01)
## Flux General
```
┌─────────────────────────────────────────────────────────────────────┐
│ SURSE PRIMARE │
├─────────────────────────────────────────────────────────────────────┤
YouTube video / Articole / Emailuri │
│ │ │
│ ▼ (night-execute procesează, sau manual) │
│ kb/youtube/ | kb/articles/ | kb/emails/ │
│ │ │
│ │ (insights-extract - 08:00 și 19:00) │
│ ▼ │
│ kb/insights/YYYY-MM-DD.md │
│ │ │
│ ├──────────────────┬──────────────────┐ │
│ ▼ ▼ ▼ │
│ RAPOARTE COACHING FIȘE/NOTE │
│ (propun din (se inspiră) (se creează când │
│ insights) Marius aprobă) │
└─────────────────────────────────────────────────────────────────────┘
Execuție noaptea:
┌─────────────────────────────────────────────────────────────────────┐
│ Marius aprobă la raport seară → memory/approved-tasks.md │
│ │ │
│ ├── 23:00 (night-execute) → procesează task-uri │
│ │ │
│ └── 03:00 (night-execute-late) → continuă ce a rămas │
└─────────────────────────────────────────────────────────────────────┘
YouTube/Email → kb/youtube/emails/
↓ (insights-extract 08:00, 19:00)
kb/insights/YYYY-MM-DD.md
RAPOARTE (propun) | COACHING (inspiră) | FIȘE (când aprobă)
```
---
## Categorii Propuneri
## 📊 Propuneri Acționabile în Rapoarte
| Tag | Cine | Timing | Răspuns |
|-----|------|--------|---------|
| 🤖 FAC EU | Echo | ⚡ ACUM / 🌙 NOAPTE | 1 pentru X |
| 🤝 TU+EU | Marius+Echo | ⚡ ACUM / 📅 DATA | 1 pentru X |
| 👤 FACI TU | Marius | ⏳ CÂND POȚI | - |
### Categorii (cine face)
**Format:** `A0 - Titlu 🤖 ⚡ - Descriere scurtă`
| Tag | Cine | Exemplu |
|-----|------|---------|
| 🤖 FAC EU | Echo singur | Git commit, creare fișier, update job |
| 🤝 TU+EU | Marius + Echo | Sesiune de lucru, review împreună |
| 👤 FACI TU | Doar Marius | Reflecție, decizie, acțiune externă |
**Răspuns rapid:**
- `1 pentru A0,A3` = execută ACUM
- `2 pentru A1,A4` = approved-tasks noapte
- `3 pentru A2` = skip (marchez [—])
### Timing (când)
## Marcaje Insights
| Tag | Când | Răspuns Marius |
|-----|------|----------------|
| ⚡ ACUM | Imediat după aprobare | "1 pentru X" |
| 🌙 NOAPTE | Job night-execute (23:00) | "2 pentru X" |
| 📅 PROGRAMAT | Data specifică | Echo setează reminder/job |
| ⏳ CÂND POȚI | Fără deadline | Pentru Marius, nu urgent |
- `[ ]` = disponibil (rapoarte propun)
- `[x]` = executat
- `[→]` = backlog
- `[—]` = skip
### Format propunere
## Note YouTube
```
**A0 - [Titlu scurt]** 🤖 FAC EU ⚡ ACUM
Descriere: ce face exact
Rezultat: ce obține Marius
```
**Flux:**
1. Răspund: "👍 Execut acum" (<22:00) sau "👍 Programez noapte" (>22:00)
2. Rulez: `python3 tools/youtube_subs.py URL`
3. Salvez: `kb/youtube/YYYY-MM-DD_titlu.md` cu TL;DR, puncte cheie, tags
### Coduri răspuns rapid
- `1 pentru A0,A3` → Execut ACUM
- `2 pentru A1,A4` → approved-tasks.md pentru noapte
- `3 pentru A2` → Skip (marchez [—] în insights)
- Text liber → Procesez și răspund
## Insights & Coaching
---
**insights-extract (08:00, 19:00):**
- Scanează `kb/youtube/` ultimele 48h
- Extrage în `kb/insights/YYYY-MM-DD.md` cu marcaje `[ ]`
## 📝 Cine Creează Ce
**morning/evening-coaching:**
- Citesc: `kb/coaching/` ultimele 7 zile (NU repet teme)
- Inspiră din: youtube, insights, biblioteca grup-sprijin
- Salvează: `kb/coaching/YYYY-MM-DD-dimineata.md` cu referințe
### 1. Note YouTube (`kb/youtube/`)
## Rapoarte
| Când | Cine | Ce face |
|------|------|---------|
| Manual | Orice agent | Când primește link YouTube → extrage transcript → salvează notă |
**Format:** `kb/youtube/YYYY-MM-DD_titlu-slug.md`
**Conține:**
- TL;DR
- Puncte cheie
- Citate relevante
- Exerciții practice
- Tags: #autor, @domeniu
---
### 2. Insights (`kb/insights/`)
| Când | Cine | Ce face |
|------|------|---------|
| morning-report | echo-work | Scanează `kb/youtube/` ultimele 48h → extrage idei noi → adaugă în insights |
| evening-report | echo-work | Scanează `kb/youtube/` ultimele 48h → extrage idei noi → adaugă în insights |
**Format:** `kb/insights/YYYY-MM-DD.md`
**Structură:**
```markdown
## @work - Productivitate
- [ ] ⚡ Propunere urgentă - [link notă]
- [ ] 📌 Propunere importantă - [link notă]
## @health - Sănătate
- [ ] 💡 Propunere nice-to-have - [link notă]
```
**Sistem marcare:**
- `[ ]` = disponibil (rapoarte pot propune)
- `[x]` = implementat (nu mai propune)
- `[→]` = mutat în backlog
- `[—]` = skip/nu vreau
---
### 3. Coaching Notes (`kb/coaching/`)
| Când | Cine | Ce face |
|------|------|---------|
| morning-coaching | echo-health | Salvează mesajul trimis + referințe la surse |
| evening-coaching | echo-health | Salvează mesajul trimis + referințe la surse |
**Format:** `kb/coaching/YYYY-MM-DD-dimineata.md` sau `YYYY-MM-DD-seara.md`
**Conține:**
```markdown
# Gândul de dimineață - 2026-01-31
## Mesaj trimis
[conținut]
## Surse folosite
- [Titlu Notă](files.html#kb/youtube/YYYY-MM-DD_titlu.md) - ce am extras
- [Insights YYYY-MM-DD](files.html#kb/insights/YYYY-MM-DD.md) - ce propunere am folosit
## Provocarea zilei
TIP: fiziologie
PROVOCARE: descriere
```
---
### 4. Fișe Grup Sprijin (`kb/projects/grup-sprijin/biblioteca/`)
| Când | Cine | Ce face |
|------|------|---------|
| După aprobare | echo-work | Creează fișă când Marius aprobă din raport |
| Manual | Orice agent | Când Marius cere |
**Format:** `fisa-titlu.md`, `intrebare-titlu.md`, `meditatie-titlu.md`
---
## 📊 Cine Citește De Unde
### morning-report / evening-report (echo-work)
**CITEȘTE:**
- `kb/youtube/` - note noi (ultimele 48h) pentru a extrage în insights
- `kb/insights/` - propuneri `[ ]` (ultimele 7 zile)
- `kb/backlog.md` - 1-2 propuneri (rotație) + verifică > 30 zile
**CITESC:**
- `kb/insights/` - propuneri `[ ]` ultimele 7 zile
- `kb/backlog.md` - 1-2 propuneri rotație
**CREEAZĂ:**
- Adaugă în `kb/insights/` idei din note noi
- Creează fișe/note când Marius aprobă
**MARCHEAZĂ în insights:**
- `[x]` + data când Marius zice "ok" și se execută
- `[→]` + adaugă în backlog când Marius zice "backlog"
- `[—]` când Marius zice "nu/skip"
- `[→]` + adaugă în backlog "De revizuit" când Marius ignoră
**ACTUALIZEAZĂ backlog:**
- Adaugă cu nivel (⚡/📌/💡) + RECOMANDAT/NERECOMANDAT + referință
- Șterge când se execută sau se renunță
- Propune curățare pentru > 30 zile
---
### morning-coaching / evening-coaching (echo-health)
**CITEȘTE:**
- `kb/coaching/` - **ultimele 7 zile** (NU repeta teme!)
- `kb/youtube/` - note pentru citate/idei
- `kb/insights/` - propuneri pentru exerciții practice
- `kb/projects/grup-sprijin/biblioteca/` - fișe și exerciții
- `memory/provocare-azi.md` - pentru follow-up seară
**CREEAZĂ:**
- `kb/coaching/YYYY-MM-DD-dimineata.md` sau `-seara.md` (cu referințe la surse!)
- `memory/provocare-azi.md` - provocarea zilei
- Adaug în insights idei din note noi
- Creez fișe/note când Marius aprobă
**MARCHEAZĂ:**
- NIMIC în insights (doar se inspiră, nu marchează)
- `[x]` + data când Marius aprobă
- `[→]` când zice "backlog"
- `[—]` când zice "nu/skip"
---
### respiratie-* (echo-health)
**CITEȘTE:** Nimic
**CREEAZĂ:** Nimic (doar trimite mesaj scurt)
**MARCHEAZĂ:** Nimic
---
## ⚠️ Evitarea Repetărilor
### Rapoarte (echo-work)
- Propun doar din `[ ]` (ignoră `[x]`, `[→]`, `[—]`)
- Marchează după răspunsul lui Marius
### Coaching (echo-health)
- Verifică `kb/coaching/` ultimele 14 zile
- NU repetă aceleași teme/citate/exerciții
- Salvează cu referințe pentru tracking
---
## 🔍 Verificări și Posibile Probleme
### ✅ OK
- Rapoarte extrag din note → insights ✓
- Marius aprobă → se marchează ✓
- Coaching se inspiră fără a marca → ✓
- Coaching salvează cu referințe → ✓
### ⚠️ De monitorizat
- **Curățare insights vechi:** Insights mai vechi de 30 zile cu `[ ]` - ce facem?
- Propunere: La fiecare raport, dacă propunerea e > 14 zile nemarcată → marcăm `[—]` automat
- **Sincronizare între agenți:** insights e în folder partajat, mai mulți agenți scriu
- Propunere: OK așa, fiecare agent adaugă cu sursa lui
- **Note YouTube fără insights:** Note vechi care n-au fost procesate
- Propunere: Rapoarte verifică ultimele 48h, restul rămâne ca referință
---
## 📅 Ordine Cronologică Zilnică (București)
| Ora | Job | Agent | Ce face |
|-----|-----|-------|---------|
| 05:00 | archive-tasks | main | Arhivează task-uri vechi |
| 08:30 | morning-report | echo-work | Raport + propuneri din insights |
| 09:00 | morning-coaching | echo-health | Mesaj dimineață WhatsApp |
| 09:00-19:00 | respiratie-* | echo-health | Reminder-uri orare |
| 20:00 | evening-report | echo-work | Raport + propuneri din insights |
| 21:00 | evening-coaching | echo-health | Mesaj seară WhatsApp |
---
## 📁 Structura Fișiere
## Structura Fișiere
```
kb/
├── youtube/ # Note din video-uri
│ └── YYYY-MM-DD_titlu.md
├── insights/ # Propuneri extrase
│ └── YYYY-MM-DD.md
── coaching/ # Mesaje coaching salvate
│ ├── YYYY-MM-DD-dimineata.md
│ └── YYYY-MM-DD-seara.md
├── backlog.md # Propuneri amânate
└── projects/
└── grup-sprijin/
├── biblioteca/ # Fișe și exerciții
└── fise/ # Fișe pentru întâlniri
├── youtube/YYYY-MM-DD_titlu.md
├── insights/YYYY-MM-DD.md
├── coaching/YYYY-MM-DD-dimineata.md
├── backlog.md
── projects/grup-sprijin/biblioteca/
```
---
*Acest document se actualizează când se modifică fluxul joburilor.*
*Actualizat: 2026-02-06*