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>
3.0 KiB
3.0 KiB
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:
- ✅ Emaily FROM martin@slovensko.ai → riso@slovensko.ai (prijaté)
- ✅ Emaily FROM riso@slovensko.ai → martin@slovensko.ai (odoslané)
- ✅ Iba z Inbox a Sent
- ✅ Iba z posledných 30 dní
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 mesiacelimit: 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í
- Refreshni frontend (F5)
- Pridaj kontakty cez Inbox page
- Počkaj kým sa syncnú (vidíš loading)
- 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:
- Presuň nechcené emaily do Archive
- Alebo ich TRVALO vymaž (Shift+Delete)
- WAIT 5 min (server sa musí syncnúť)
- Potom spusti CLEAN_EVERYTHING.js
- 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:
- Pridaj kontakt (napr. foxerdxd@gmail.com)
- Skontroluj koľko emailov sa synclo
- Over že sú správne (FROM alebo TO ten kontakt)
- Pošli nový email cez CRM
- 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