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

126 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```bash
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:
```javascript
// 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:
```sql
-- 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