17 Commits

Author SHA1 Message Date
huangzhenpc
a5fd90cb1e Add notification system for Claude payment status changes
Detect refund/suspension status changes and generate notifications
stored in Redis. Bell icon in navbar shows unread count badge,
click to expand dropdown with dismiss per-item or read-all.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:00:05 +08:00
huangzhenpc
18ae09af12 Claude detection respects payment filter, add project skill
- Backend check-claude-payment accepts optional emails list
- Frontend sends filtered emails when filter is active
- Button label updates to show current filter scope
- Add project skill for development guidance

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 14:10:06 +08:00
huangzhenpc
4091bcc8ad Highlight refund received time with green badge
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 02:05:43 +08:00
huangzhenpc
3be4b114a5 Add refund received timestamp column, record time when marking refund
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 02:01:37 +08:00
huangzhenpc
688d200d2c Replace native confirm dialogs with custom styled modal
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:55:49 +08:00
huangzhenpc
c032b79a16 Only show refund received button when email has refund status
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:55:02 +08:00
huangzhenpc
1638d2c057 Merge client_id+token into credential popup, add refund button to actions
- Merge client_id and token columns into single "credential" button
- Click to view in modal with copy buttons for each
- Add refund toggle button in actions row with confirm dialog
- Remove separate refund_received column, cleaner layout

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:52:41 +08:00
huangzhenpc
d8d651240a Add refund received toggle button and filter options
- Add refund_received column to claude_payment_status table
- API endpoint POST /api/tools/refund-received/{email} to toggle
- Clickable badge in table to mark refund as received/not received
- Filter options: refund received / refund not received

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:46:45 +08:00
huangzhenpc
663f99a510 Use host Redis (127.0.0.1:6379) with password, switch to host network mode
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:28:52 +08:00
huangzhenpc
e96b2e1b4a Add Redis caching, email refresh button, optimize page loading
- Add Redis service (docker-compose) for caching accounts, messages, payment status
- Cache accounts list (5min), messages (3min), payment status (10min)
- Auto-invalidate cache on import/delete/payment-check/note-update
- Add refresh button to email list panel (force re-fetch from IMAP)
- Messages API supports refresh=true param to bypass cache
- New cache.py module with RedisCache class

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:26:42 +08:00
huangzhenpc
197c969e41 Add payment status filter dropdown (paid/unpaid/refunded/suspended)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:20:37 +08:00
huangzhenpc
3c1715603d Fix port mapping: app listens on 5001, map 5000->5001
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:17:21 +08:00
huangzhenpc
d23aaa3143 Add login screen with password protection (oadmin123)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:10:43 +08:00
huangzhenpc
385099f3d0 Add email-validator dependency for Pydantic EmailStr
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 01:08:16 +08:00
huangzhenpc
889f4f15d5 Optimize database and deployment: fix SQL injection, async auth, persist data
- Move SQLite DB to data/ directory and track in git for portability
- Fix SQL injection in cleanup_old_emails (use parameterized query)
- Replace sync requests with async httpx in auth.py
- Enable WAL mode and foreign keys for SQLite
- Add UNIQUE constraint and foreign key to account_tags table
- Remove redundant indexes on primary key columns
- Mount data/ volume in docker-compose for persistence
- Remove unused requests dependency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 00:57:35 +08:00
huangzhenpc
5b01caf8e3 Add project files: Outlook mail manager with Docker support
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-06 00:45:44 +08:00
huangzhenpc
d964a8d758 first commit 2026-03-06 00:28:54 +08:00