Update dashboard, kb, memory +4 more (+28 ~18 -1)
This commit is contained in:
64
memory/kb/projects/FEATURE-files-pdf-download.md
Normal file
64
memory/kb/projects/FEATURE-files-pdf-download.md
Normal 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)
|
||||
@@ -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*
|
||||
|
||||
Reference in New Issue
Block a user