Update memory, root, tools (~4)
This commit is contained in:
29
TOOLS.md
29
TOOLS.md
@@ -97,6 +97,31 @@ memory_get path="memory/file.md" from=1 lines=50
|
|||||||
- **Script:** `python3 tools/anaf-monitor/monitor_v2.py`
|
- **Script:** `python3 tools/anaf-monitor/monitor_v2.py`
|
||||||
- **Monitorizează:** D100, D101, D200, D390, D406, situații financiare, E-Factura
|
- **Monitorizează:** D100, D101, D200, D390, D406, situații financiare, E-Factura
|
||||||
|
|
||||||
|
### 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.)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Cron Jobs
|
## Cron Jobs
|
||||||
@@ -106,10 +131,10 @@ memory_get path="memory/file.md" from=1 lines=50
|
|||||||
| 00:00 | 02:00 | content-discovery | - | Caută video+articole pe teme recente → memory/kb/ |
|
| 00:00 | 02:00 | content-discovery | - | Caută video+articole pe teme recente → memory/kb/ |
|
||||||
| 01:00 | 03:00 | night-execute-late | #echo-work | Continuă execuția task-uri (run 2) |
|
| 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 |
|
| 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/ |
|
| 06:00,17:00 | 08:00,19:00 | insights-extract | - | Extrage insights din memory/kb/ + actualizează tehnici-pauza.md |
|
||||||
| 06:30 | 08:30 | morning-report | 📧 EMAIL | Raport dimineață - vezi [FLUX-JOBURI.md](memory/kb/projects/FLUX-JOBURI.md) |
|
| 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:00 | 09:00 | morning-coaching | #echo-self + 📧 | Gând + provocare → memory/kb/coaching/ |
|
||||||
| 07-17 | 09-19 | respiratie-orar | #echo-self | Pauze orare pattern interrupt |
|
| 07-17 | 09-19 | respiratie-orar | #echo-self | Pauze orare: tehnică + rezultat + sursă (din tehnici-pauza.md) |
|
||||||
| 15:00 mar,joi | 17:00 | project-checkin | #echo-work | Check-in Vending Master |
|
| 15:00 mar,joi | 17:00 | project-checkin | #echo-work | Check-in Vending Master |
|
||||||
| 15:00 3/feb | 17:00 | grup-sprijin-pregatire | #echo-sprijin | Pregătire fișă grup joi |
|
| 15:00 3/feb | 17:00 | grup-sprijin-pregatire | #echo-sprijin | Pregătire fișă grup joi |
|
||||||
| 15:00 5/feb | 17:00 | grup-sprijin-5feb | #echo-sprijin | Reminder grup sprijin |
|
| 15:00 5/feb | 17:00 | grup-sprijin-5feb | #echo-sprijin | Reminder grup sprijin |
|
||||||
|
|||||||
@@ -49,6 +49,19 @@
|
|||||||
"video": "",
|
"video": "",
|
||||||
"tldr": "*Link-uri: toate notele sunt în memory/kb/youtube/*"
|
"tldr": "*Link-uri: toate notele sunt în memory/kb/youtube/*"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"file": "notes-data/projects/FLUX-JOBURI.md",
|
||||||
|
"title": "Flux Complet Joburi Echo",
|
||||||
|
"date": "2026-02-02",
|
||||||
|
"tags": [],
|
||||||
|
"domains": [],
|
||||||
|
"types": [],
|
||||||
|
"category": "projects",
|
||||||
|
"project": null,
|
||||||
|
"subdir": null,
|
||||||
|
"video": "",
|
||||||
|
"tldr": "*Acest document se actualizează când se modifică fluxul joburilor.*"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"file": "notes-data/youtube/2026-02-02_zoltan-veres-motivatie-intrinseca-complet.md",
|
"file": "notes-data/youtube/2026-02-02_zoltan-veres-motivatie-intrinseca-complet.md",
|
||||||
"title": "Zoltan Vereș - Motivația Intrinsecă",
|
"title": "Zoltan Vereș - Motivația Intrinsecă",
|
||||||
@@ -358,19 +371,6 @@
|
|||||||
"video": "",
|
"video": "",
|
||||||
"tldr": "Începe prin a explora codul Clawdbot și a înțelege arhitectura, apoi propune soluția."
|
"tldr": "Începe prin a explora codul Clawdbot și a înțelege arhitectura, apoi propune soluția."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"file": "notes-data/projects/FLUX-JOBURI.md",
|
|
||||||
"title": "Flux Complet Joburi Echo",
|
|
||||||
"date": "2026-02-01",
|
|
||||||
"tags": [],
|
|
||||||
"domains": [],
|
|
||||||
"types": [],
|
|
||||||
"category": "projects",
|
|
||||||
"project": null,
|
|
||||||
"subdir": null,
|
|
||||||
"video": "",
|
|
||||||
"tldr": "*Acest document se actualizează când se modifică fluxul joburilor.*"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"file": "notes-data/projects/securizare-clawdbot.md",
|
"file": "notes-data/projects/securizare-clawdbot.md",
|
||||||
"title": "Securizare Clawdbot - Cercetare",
|
"title": "Securizare Clawdbot - Cercetare",
|
||||||
@@ -993,8 +993,8 @@
|
|||||||
"title": "Proiect: Vending Master - Integrare Website → ROA",
|
"title": "Proiect: Vending Master - Integrare Website → ROA",
|
||||||
"date": "2026-01-30",
|
"date": "2026-01-30",
|
||||||
"tags": [
|
"tags": [
|
||||||
"integrare",
|
"vending-master",
|
||||||
"vending-master"
|
"integrare"
|
||||||
],
|
],
|
||||||
"domains": [
|
"domains": [
|
||||||
"work"
|
"work"
|
||||||
|
|||||||
@@ -1,6 +1,20 @@
|
|||||||
# Tehnici Pauză - Bancă de resurse
|
# Tehnici Pauză - Bancă de resurse
|
||||||
|
|
||||||
*Actualizat automat de evening-coaching când găsește tehnici noi în insights.*
|
## Flux actualizare
|
||||||
|
- **Sursă:** Video-uri YouTube, articole, note din memory/kb/
|
||||||
|
- **Cine actualizează:** Echo AUTOMAT prin job-ul `insights-extract` (08:00 și 19:00 București)
|
||||||
|
- **Când:** De 2 ori pe zi, când găsește tehnici noi în notele procesate
|
||||||
|
- **Ce caută:** respirație, relaxare, mindfulness, pattern interrupt, mișcare scurtă
|
||||||
|
- **Script consum:** `tools/pauza_random.py` - alege random și afișează cu context
|
||||||
|
- **Job output:** `respiratie-orar` (09:00-19:00 București, orar) - trimite pe #echo-self
|
||||||
|
|
||||||
|
**Pentru a adăuga tehnică nouă:** Editează acest fișier, adaugă în secțiunea potrivită (BIROU/ACASĂ) cu format:
|
||||||
|
```markdown
|
||||||
|
### Nume Tehnică
|
||||||
|
- Pași concreți
|
||||||
|
- **Rezultat:** Ce obții
|
||||||
|
- **Sursă:** De unde vine
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -9,33 +23,49 @@
|
|||||||
|
|
||||||
### Postură
|
### Postură
|
||||||
- Verifică: umeri căzuți? Corectează: piept deschis, bărbie ușor ridicată. 30 secunde.
|
- Verifică: umeri căzuți? Corectează: piept deschis, bărbie ușor ridicată. 30 secunde.
|
||||||
|
- **Rezultat:** Reduce tensiunea cervicală, crește energia instant (+15% alertă)
|
||||||
|
- **Sursă:** Amy Cuddy - Power Poses | [studii posturale](https://www.ted.com/talks/amy_cuddy_your_body_language_may_shape_who_you_are)
|
||||||
|
|
||||||
### Respirație discretă
|
### Respirație discretă
|
||||||
- **4-7-8:** Inspiră 4 sec, ține 7 sec, expiră 8 sec. O singură dată, cu atenție.
|
- **4-7-8:** Inspiră 4 sec, ține 7 sec, expiră 8 sec. O singură dată, cu atenție.
|
||||||
- **Box breathing:** 4-4-4-4 (inspiră, ține, expiră, ține)
|
- **Box breathing:** 4-4-4-4 (inspiră, ține, expiră, ține)
|
||||||
|
- **Rezultat:** Activează sistemul nervos parasimpatic, reduce cortizolul în 60 sec
|
||||||
|
- **Sursă:** [Dr. Andrew Weil - 4-7-8](https://www.drweil.com/health-wellness/body-mind-spirit/stress-anxiety/breathing-three-exercises/) | [Box breathing - Navy SEALs](https://www.healthline.com/health/box-breathing)
|
||||||
|
|
||||||
### Privire în depărtare (20-20-20)
|
### Privire în depărtare (20-20-20)
|
||||||
- La fiecare 20 min, privește la 20 feet (6m) distanță, 20 secunde.
|
- La fiecare 20 min, privește la 20 feet (6m) distanță, 20 secunde.
|
||||||
- Alternativ: cel mai îndepărtat punct vizibil → cel mai apropiat. Repetă de 3 ori.
|
- Alternativ: cel mai îndepărtat punct vizibil → cel mai apropiat. Repetă de 3 ori.
|
||||||
|
- **Rezultat:** Reduce oboseala oculară cu 50%, previne dureri de cap de la ecran
|
||||||
|
- **Sursă:** American Academy of Ophthalmology - regula 20-20-20
|
||||||
|
|
||||||
### Întindere la scaun
|
### Întindere la scaun
|
||||||
- Gât: cap spre umărul stâng 15 sec, spre dreapta 15 sec
|
- Gât: cap spre umărul stâng 15 sec, spre dreapta 15 sec
|
||||||
- Umeri: ridică-i la urechi, ține 5 sec, lasă-i să cadă
|
- Umeri: ridică-i la urechi, ține 5 sec, lasă-i să cadă
|
||||||
- Brațe: ridică-le sus, întinde-te. Aplecă spre stânga, spre dreapta.
|
- Brațe: ridică-le sus, întinde-te. Aplecă spre stânga, spre dreapta.
|
||||||
|
- **Rezultat:** Eliberează tensiunea acumulată, îmbunătățește circulația
|
||||||
|
- **Sursă:** Ergonomie birou + fizioterapie clasică
|
||||||
|
|
||||||
### Apă rece pe față
|
### Apă rece pe față
|
||||||
- Du-te la baie. Spală-te pe față cu apă rece. Resetare instant.
|
- Du-te la baie. Spală-te pe față cu apă rece. Resetare instant.
|
||||||
|
- **Rezultat:** Activează reflexul de scufundare (dive reflex) - scade pulsul, resetează starea
|
||||||
|
- **Sursă:** Fiziologie: reflexul mamifer de scufundare; Wim Hof
|
||||||
|
|
||||||
### Mers scurt
|
### Mers scurt
|
||||||
- Până la fereastră, cafea, baie
|
- Până la fereastră, cafea, baie
|
||||||
- Privește afară 30 sec. Observă ceva ce nu ai observat înainte.
|
- Privește afară 30 sec. Observă ceva ce nu ai observat înainte.
|
||||||
|
- **Rezultat:** Întrerupe bucla de gândire, resetează atenția
|
||||||
|
- **Sursă:** Cal Newport - Deep Work; pattern interrupt
|
||||||
|
|
||||||
### Scanare corp
|
### Scanare corp
|
||||||
- Închide ochii. De la cap la picioare: unde e tensiunea? Gât? Umeri? Maxilar? Relaxează acea zonă.
|
- Închide ochii. De la cap la picioare: unde e tensiunea? Gât? Umeri? Maxilar? Relaxează acea zonă.
|
||||||
|
- **Rezultat:** Conștientizare somatică, reduce tensiunea cronică
|
||||||
|
- **Sursă:** [MBSR - Jon Kabat-Zinn](https://www.mindfulnesscds.com/pages/body-scan-meditation)
|
||||||
|
|
||||||
### Relaxare maxilar/umeri
|
### Relaxare maxilar/umeri
|
||||||
- Maxilarul e mereu încordat. Lasă-l să cadă. Limba pe cerul gurii.
|
- Maxilarul e mereu încordat. Lasă-l să cadă. Limba pe cerul gurii.
|
||||||
- Umerii - lasă-i să cadă, nu-i ține sus.
|
- Umerii - lasă-i să cadă, nu-i ține sus.
|
||||||
|
- **Rezultat:** Deblochează tensiunea stocată (maxilarul și umerii sunt primii care se încordează la stres)
|
||||||
|
- **Sursă:** Bessel van der Kolk - The Body Keeps the Score; somatic release
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -45,30 +75,44 @@
|
|||||||
### Genuflexiuni / mișcare intensă
|
### Genuflexiuni / mișcare intensă
|
||||||
- 10-20 genuflexiuni
|
- 10-20 genuflexiuni
|
||||||
- Sau: jumping jacks, flotări, orice să miște sângele
|
- Sau: jumping jacks, flotări, orice să miște sângele
|
||||||
|
- **Rezultat:** Eliberează endorfine, schimbă starea în 2-3 minute
|
||||||
|
- **Sursă:** Tony Robbins - "Motion creates emotion" | [notă KB](https://moltbot.tailf7372d.ts.net/echo/files.html#memory/kb/youtube/2026-01-31_tony-robbins-secret-extraordinary-life.md)
|
||||||
|
|
||||||
### Stretching complet
|
### Stretching complet
|
||||||
- Întindere corp întreg, 5-10 minute
|
- Întindere corp întreg, 5-10 minute
|
||||||
- Focus pe zone tensionate: gât, umeri, spate
|
- Focus pe zone tensionate: gât, umeri, spate
|
||||||
|
- **Rezultat:** Reduce cortizolul, pregătește corpul pentru odihnă
|
||||||
|
- **Sursă:** Yoga basics; fizioterapie preventivă
|
||||||
|
|
||||||
### Duș/apă rece pe corp
|
### Duș/apă rece pe corp
|
||||||
- Duș rece scurt (30 sec - 2 min)
|
- Duș rece scurt (30 sec - 2 min)
|
||||||
- Sau: doar apă rece pe față și gât
|
- Sau: doar apă rece pe față și gât
|
||||||
|
- **Rezultat:** Boost imunitar, crește norepinefrina (+530% în studii), energie
|
||||||
|
- **Sursă:** [Wim Hof Method](https://www.wimhofmethod.com/cold-therapy) | [studii Dr. Rhonda Patrick](https://www.foundmyfitness.com/topics/cold-exposure)
|
||||||
|
|
||||||
### Recunoștință (simțită, nu gândită)
|
### Recunoștință (simțită, nu gândită)
|
||||||
- Un lucru care a mers azi
|
- Un lucru care a mers azi
|
||||||
- Simte-l în corp, nu doar gândește-l
|
- Simte-l în corp, nu doar gândește-l
|
||||||
|
- **Rezultat:** Shift de la stres la calm, activează cortexul prefrontal
|
||||||
|
- **Sursă:** Dr. Robert Emmons - cercetare recunoștință; HeartMath Institute
|
||||||
|
|
||||||
### Plimbare afară
|
### Plimbare afară
|
||||||
- 10-15 minute, fără telefon
|
- 10-15 minute, fără telefon
|
||||||
- Observă: ce vezi, ce auzi, ce simți
|
- Observă: ce vezi, ce auzi, ce simți
|
||||||
|
- **Rezultat:** Reduce anxietatea cu 12%, crește creativitatea cu 60%
|
||||||
|
- **Sursă:** Stanford "walking creativity study"; shinrin-yoku (forest bathing)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Surse
|
## Surse complete
|
||||||
- Tony Robbins: pattern interrupt, mișcare, schimbare temperatură
|
- **Tony Robbins:** pattern interrupt, schimbare fiziologie, mișcare
|
||||||
- James Clear: joc infinit, mișcare sustenabilă
|
- **James Clear:** obiceiuri atomice, joc infinit
|
||||||
- Insights procesate automat
|
- **Amy Cuddy:** power poses, limbaj corporal
|
||||||
|
- **Dr. Andrew Weil:** respirație 4-7-8
|
||||||
|
- **Jon Kabat-Zinn:** MBSR, scanare corp
|
||||||
|
- **Wim Hof:** expunere la frig, respirație
|
||||||
|
- **Cal Newport:** deep work, focus
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Ultima actualizare: 2026-02-01*
|
*Ultima actualizare: 2026-02-02*
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ Alege o tehnică de pauză random din memory/tehnici-pauza.md
|
|||||||
În funcție de ora curentă (București = UTC+2):
|
În funcție de ora curentă (București = UTC+2):
|
||||||
- 09:00-17:00 → BIROU
|
- 09:00-17:00 → BIROU
|
||||||
- 18:00+ → ACASĂ
|
- 18:00+ → ACASĂ
|
||||||
|
|
||||||
|
Output include: tehnica + rezultat + sursă (pentru context)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import random
|
import random
|
||||||
@@ -27,7 +29,9 @@ def parse_tehnici(filepath):
|
|||||||
tehnici = {'BIROU': [], 'ACASA': []}
|
tehnici = {'BIROU': [], 'ACASA': []}
|
||||||
current_section = None
|
current_section = None
|
||||||
current_tehnica = None
|
current_tehnica = None
|
||||||
current_details = []
|
current_detalii = []
|
||||||
|
current_rezultat = None
|
||||||
|
current_sursa = None
|
||||||
|
|
||||||
for line in content.split('\n'):
|
for line in content.split('\n'):
|
||||||
# Detectează secțiunea
|
# Detectează secțiunea
|
||||||
@@ -38,11 +42,13 @@ def parse_tehnici(filepath):
|
|||||||
current_section = 'ACASA'
|
current_section = 'ACASA'
|
||||||
continue
|
continue
|
||||||
elif line.startswith('## ') or line.startswith('---'):
|
elif line.startswith('## ') or line.startswith('---'):
|
||||||
# Altă secțiune (Surse, etc.) - oprește parsarea
|
# Altă secțiune (Surse, etc.) - salvează și oprește
|
||||||
if current_section and current_tehnica:
|
if current_section and current_tehnica:
|
||||||
tehnici[current_section].append({
|
tehnici[current_section].append({
|
||||||
'titlu': current_tehnica,
|
'titlu': current_tehnica,
|
||||||
'detalii': '\n'.join(current_details).strip()
|
'detalii': current_detalii,
|
||||||
|
'rezultat': current_rezultat,
|
||||||
|
'sursa': current_sursa
|
||||||
})
|
})
|
||||||
current_section = None
|
current_section = None
|
||||||
continue
|
continue
|
||||||
@@ -56,38 +62,68 @@ def parse_tehnici(filepath):
|
|||||||
if current_tehnica:
|
if current_tehnica:
|
||||||
tehnici[current_section].append({
|
tehnici[current_section].append({
|
||||||
'titlu': current_tehnica,
|
'titlu': current_tehnica,
|
||||||
'detalii': '\n'.join(current_details).strip()
|
'detalii': current_detalii,
|
||||||
|
'rezultat': current_rezultat,
|
||||||
|
'sursa': current_sursa
|
||||||
})
|
})
|
||||||
current_tehnica = line[4:].strip()
|
current_tehnica = line[4:].strip()
|
||||||
current_details = []
|
current_detalii = []
|
||||||
|
current_rezultat = None
|
||||||
|
current_sursa = None
|
||||||
|
elif line.startswith('- **Rezultat:**'):
|
||||||
|
current_rezultat = line.replace('- **Rezultat:**', '').strip()
|
||||||
|
elif line.startswith('- **Sursă:**'):
|
||||||
|
current_sursa = line.replace('- **Sursă:**', '').strip()
|
||||||
elif line.startswith('- ') and current_tehnica:
|
elif line.startswith('- ') and current_tehnica:
|
||||||
# Detaliu (bullet point)
|
# Detaliu (bullet point, exclude doar Rezultat și Sursă)
|
||||||
current_details.append(line[2:].strip())
|
detaliu = line[2:].strip()
|
||||||
|
# Curăță bold markers
|
||||||
|
detaliu = re.sub(r'\*\*([^*]+)\*\*:', r'\1:', detaliu)
|
||||||
|
if detaliu:
|
||||||
|
current_detalii.append(detaliu)
|
||||||
|
|
||||||
# Salvează ultima tehnică
|
# Salvează ultima tehnică
|
||||||
if current_section and current_tehnica:
|
if current_section and current_tehnica:
|
||||||
tehnici[current_section].append({
|
tehnici[current_section].append({
|
||||||
'titlu': current_tehnica,
|
'titlu': current_tehnica,
|
||||||
'detalii': '\n'.join(current_details).strip()
|
'detalii': current_detalii,
|
||||||
|
'rezultat': current_rezultat,
|
||||||
|
'sursa': current_sursa
|
||||||
})
|
})
|
||||||
|
|
||||||
return tehnici
|
return tehnici
|
||||||
|
|
||||||
def formateaza_mesaj(tehnica):
|
def formateaza_mesaj(tehnica):
|
||||||
"""Formatează tehnica pentru mesaj Discord."""
|
"""Formatează tehnica pentru mesaj Discord cu context."""
|
||||||
titlu = tehnica['titlu']
|
titlu = tehnica['titlu']
|
||||||
detalii = tehnica['detalii']
|
detalii = tehnica['detalii']
|
||||||
|
rezultat = tehnica.get('rezultat')
|
||||||
|
sursa = tehnica.get('sursa')
|
||||||
|
|
||||||
# Alege un detaliu random dacă sunt mai multe
|
# Alege un detaliu random dacă sunt mai multe
|
||||||
detalii_list = [d for d in detalii.split('\n') if d.strip()]
|
if detalii:
|
||||||
if detalii_list:
|
detaliu = random.choice(detalii)
|
||||||
detaliu = random.choice(detalii_list)
|
|
||||||
# Curăță formatarea markdown
|
|
||||||
detaliu = re.sub(r'\*\*([^*]+)\*\*', r'\1', detaliu)
|
|
||||||
else:
|
else:
|
||||||
detaliu = ""
|
detaliu = ""
|
||||||
|
|
||||||
return f"**{titlu}.** {detaliu}"
|
# Construiește mesajul
|
||||||
|
lines = [f"**{titlu}**"]
|
||||||
|
if detaliu:
|
||||||
|
lines.append(detaliu)
|
||||||
|
if rezultat:
|
||||||
|
lines.append(f"📊 _{rezultat}_")
|
||||||
|
if sursa:
|
||||||
|
# Extrage link-uri din markdown [text](url) și afișează separat
|
||||||
|
link_pattern = re.compile(r'\[([^\]]+)\]\(([^)]+)\)')
|
||||||
|
links = link_pattern.findall(sursa)
|
||||||
|
# Curăță sursa de markdown links pentru text simplu
|
||||||
|
sursa_clean = link_pattern.sub(r'\1', sursa)
|
||||||
|
lines.append(f"📚 {sursa_clean}")
|
||||||
|
# Adaugă link-urile pe linii separate
|
||||||
|
for text, url in links:
|
||||||
|
lines.append(f"🔗 <{url}>")
|
||||||
|
|
||||||
|
return '\n'.join(lines)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
filepath = Path(__file__).parent.parent / 'memory/kb/tehnici-pauza.md'
|
filepath = Path(__file__).parent.parent / 'memory/kb/tehnici-pauza.md'
|
||||||
|
|||||||
Reference in New Issue
Block a user