Files
crm-server/CLEAN_START_GUIDE.md
richardtekula bb851639b8 Add Timesheets API with file upload and role-based access
Backend Features:
- Timesheets database table (id, userId, fileName, filePath, fileType, fileSize, year, month, timestamps)
- File upload with multer (memory storage, 10MB limit, PDF/Excel validation)
- Structured file storage: uploads/timesheets/{userId}/{year}/{month}/
- RESTful API endpoints:
  * POST /api/timesheets/upload - Upload timesheet
  * GET /api/timesheets/my - Get user's timesheets (with filters)
  * GET /api/timesheets/all - Get all timesheets (admin only)
  * GET /api/timesheets/:id/download - Download file
  * DELETE /api/timesheets/:id - Delete timesheet
- Role-based permissions: users access own files, admins access all
- Proper error handling and file cleanup on errors
- Database migration for timesheets table

Technical:
- Uses req.user.role for permission checks
- Automatic directory creation for user/year/month structure
- Blob URL cleanup and proper file handling
- Integration with existing auth middleware

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-21 08:35:30 +01:00

3.0 KiB
Raw Blame History

CLEAN START - Kompletný Reset CRM Systému

Problém

  • Staré/archivované emaily sa syncujú aj keď nie sú v Thunderbirde
  • Emaily majú zlý contactId
  • Kontakty sa nedajú vymazať cez UI

Riešenie: KOMPLETNÝ RESET

Krok 1: Vyčisti databázu

node src/scripts/CLEAN_EVERYTHING.js

Toto vymaže:

  • Všetky emaily
  • Všetky kontakty

Krok 2: Teraz môžeš pridať kontakty NANOVO

Nový sync bude:

  • IBA z Inboxu a Sent foldra (nie Archive, Trash, Drafts)
  • IBA emaily z posledných 30 dní
  • IBA emaily FROM alebo TO daný kontakt

Krok 3: Ako to funguje teraz

Keď pridáš kontakt (napr. martin@slovensko.ai):

SYNCNE:

NÉSYNCNE:

  • Emaily od iných ľudí
  • Staré archivované emaily
  • Emaily z Trash/Archive/Drafts
  • Emaily staršie ako 30 dní

Prečo sa fetchovali staré emaily?

JMAP API fetchuje zo SERVERA, nie z Thunderbirdu!

  • Thunderbird je len klient
  • Server (truemail.sk) má všetky emaily (aj zmazané, archivované)
  • Starý buggy kód fetchoval zo všetkých mailboxov bez filtra

Nové nastavenia syncу

Môžeš zmeniť v kóde:

// V contact.service.js, line 56
await syncEmailsFromSender(jmapConfig, emailAccountId, newContact.id, email, {
  limit: 50,    // Max počet emailov
  daysBack: 30  // Dni späť (30 = posledný mesiac)
});

Zmeniť na:

  • daysBack: 7 - Iba posledný týždeň
  • daysBack: 90 - Posledné 3 mesiace
  • limit: 20 - Max 20 emailov

Alternatíva: Manuálne vyčistenie cez DB

Ak nechceš používať script:

-- Vymaž všetky emaily
DELETE FROM emails;

-- Vymaž všetky kontakty
DELETE FROM contacts;

Po vyčistení

  1. Refreshni frontend (F5)
  2. Pridaj kontakty cez Inbox page
  3. Počkaj kým sa syncnú (vidíš loading)
  4. Skontroluj že sú iba správne emaily

Ak sa stále fetchujú zlé emaily

Znamená to že sú SKUTOČNE v Inbox/Sent na serveri.

Choď do Thunderbirdu a:

  1. Presuň nechcené emaily do Archive
  2. Alebo ich TRVALO vymaž (Shift+Delete)
  3. WAIT 5 min (server sa musí syncnúť)
  4. Potom spusti CLEAN_EVERYTHING.js
  5. A pridaj kontakty znova

Výhody nového systému

Žiadne staré smeti Iba aktuálna komunikácia Správne groupovanie Rýchlejší sync Menšia databáza

Testing

Po resete otestuj:

  1. Pridaj kontakt (napr. foxerdxd@gmail.com)
  2. Skontroluj koľko emailov sa synclo
  3. Over že sú správne (FROM alebo TO ten kontakt)
  4. Pošli nový email cez CRM
  5. Over že sa zobrazí v konverzácii

Ak niečo nejde

Check logy pri sync:

Filtering: last 30 days, from Inbox/Sent only
Found X emails with contact@email.com

Ak je X príliš veľa → zníž daysBack Ak je X 0 → zväčši daysBack alebo over že Inbox má emaily