BOHA
d33c2b3416
fix: invoice numbering — use MAX from invoices table instead of sequence counter
2026-03-23 19:25:16 +01:00
BOHA
2718a7b716
fix: attendance admin — add user_name to records, fix Czech diacritics in table headers
...
- listAttendance() now maps users.first_name + last_name to user_name
- Fixed escaped Unicode in table headers (Zaměstnanec, Příchod, Poznámka)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 13:41:55 +01:00
BOHA
20c1aab14c
fix: use nodemailer address object for proper UTF-8 encoding in from name
2026-03-23 12:55:32 +01:00
BOHA
9f36ad0985
feat: configurable SMTP_FROM_NAME via .env (defaults to BOHA Automation)
2026-03-23 12:52:21 +01:00
BOHA
8a453deaac
feat: add email notification for new leave requests
...
- mailer.ts: nodemailer transport via local sendmail
- leave-notification.ts: HTML email matching PHP template
- Sends notification to LEAVE_NOTIFY_EMAIL on new leave request
- Non-blocking: errors logged but don't fail the request
- Added LEAVE_NOTIFY_EMAIL and APP_URL env vars
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 11:54:29 +01:00
BOHA
b87081dd2c
feat: integrate NAS file operations with project CRUD
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 10:19:15 +01:00
BOHA
ff26dc497d
feat: add NasFileManager service with security-hardened file operations
...
TypeScript port of PHP NasFileManager with symlink rejection,
path traversal protection, MIME validation via file-type, and
blocked extension checking.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 10:16:36 +01:00
BOHA
23ae832eeb
fix: attendance print - return proper data structure with records, leave balances, and fund stats
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:36:52 +01:00
BOHA
c0b8a94210
fix: resolve TypeScript compilation errors from service extraction
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:11:04 +01:00
BOHA
28eb58946f
refactor: extract attendance business logic into attendance.service.ts
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:06:40 +01:00
BOHA
0e9d30f5a8
refactor: extract orders business logic into orders.service.ts
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:04:03 +01:00
BOHA
ba0e9617ad
refactor: extract invoices business logic into invoices.service.ts
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:04:02 +01:00
BOHA
89fa3128cf
refactor: extract projects business logic into projects.service.ts
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:03:32 +01:00
BOHA
dbf8749b37
refactor: extract users business logic into users.service.ts
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:03:31 +01:00
BOHA
d26bbd8e7c
refactor: extract offers business logic into offers.service.ts
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:01:56 +01:00
BOHA
2146696bc6
refactor: extract numbering logic into numbering.service.ts
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 09:00:07 +01:00
BOHA
7689b28d6d
security: timing-safe auth to prevent username enumeration
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 08:48:13 +01:00
BOHA
4608494a3f
initial commit
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 08:46:51 +01:00