houhuan
735989f0ae
fix: missing closing brace in Config.vue isEdited function
2026-05-14 22:04:55 +08:00
houhuan
0d378b9f35
feat: add clear-all button to Dashboard quick actions
2026-05-14 22:01:54 +08:00
houhuan
809cc5fd81
fix: show sensitive config fields as empty with placeholder, skip masked values on save
2026-05-14 17:07:39 +08:00
houhuan
7e735cdf72
fix: prevent Gitea token corruption from masked config values, add real connection test
2026-05-14 16:36:41 +08:00
houhuan
69473320b3
feat: remove Logs page from sidebar navigation
2026-05-14 16:21:36 +08:00
houhuan
d585a6baaa
feat: add download button to Tables/Images views, add task history delete/clear-all
2026-05-14 16:12:09 +08:00
houhuan
d299db0ab2
fix: move BatchDeleteRequest class before its use in endpoint
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 01:19:17 +08:00
houhuan
5e69e5a841
feat: add Docker deployment (backend:18889, frontend:18888)
...
- Dockerfile.backend: Python 3.11 + FastAPI + uvicorn
- Dockerfile.frontend: Node 20 build + Nginx serve
- docker-compose.yml: orchestration with data volume mount
- nginx.conf: API/WebSocket proxy to backend
- web/backend/requirements.txt: Python dependencies
- .dockerignore: exclude venv/node_modules/data from build
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 22:36:52 +08:00
houhuan
7dabb2ce66
fix: dialog width 75% instead of fullscreen
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:59:33 +08:00
houhuan
2196a25aee
fix: detail dialog matches preview dialog style (fullscreen)
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:56:16 +08:00
houhuan
7baf784a39
feat: processing flow enhancement + responsive UI
...
Phase 2 - Processing flow:
- Multi-task monitoring: store supports concurrent task tracking
- Task retry: POST /api/tasks/{id}/retry re-runs failed tasks
- Dashboard multi-task cards with progress, error details, retry/dismiss
- Log panel expanded from 10 to 50 lines with "view all" link
Phase 3 - UI/UX:
- Mobile sidebar drawer (< 768px) with hamburger menu
- Layout responsive styles (768px, 480px breakpoints)
- Tasks/Logs pages responsive (stat cards, filters, columns)
- File views responsive (header wrap, button sizing)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:18:18 +08:00
houhuan
13ef605481
feat: auto-sync file list + clear processing cache
...
- Auto-sync file_relations on every query (files appear immediately)
- Add POST /api/files/reset-cache endpoint to delete output/result
files and reset status to pending for reprocessing
- Add "清除处理缓存" button to all 3 file views
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 22:18:47 +08:00
houhuan
ec8d0d7db6
fix: handle empty catch in Tables.vue clearAll
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 21:49:58 +08:00
houhuan
17c45cab3f
feat: add batch-delete API endpoint, replace N+1 frontend calls
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 21:45:28 +08:00
houhuan
3a49780d8d
refactor: remove dead code (pollTaskStatus, routeLoadingTimer)
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 21:43:15 +08:00
houhuan
3f8e34c07f
fix: add error handling to Barcodes, Tasks, Logs, Sync views
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 21:41:50 +08:00
houhuan
d94e416202
fix: Memory.vue stats fallback and error handling
2026-05-12 21:40:24 +08:00
houhuan
fa43a9770e
refactor: Orders.vue uses shared composables, fix error handling
2026-05-12 21:38:45 +08:00
houhuan
1a4522bd02
refactor: Tables.vue uses shared composables, fix error handling
2026-05-12 21:35:10 +08:00
houhuan
7e15431937
refactor: Images.vue uses shared composables, fix error handling
...
- Import statusType/statusText/fmtTime from useFileUtils composable
- Use useFilePreview composable for preview state and logic
- Remove duplicated preview refs, cleanupPreview, and utility functions
- Add try/finally to loadData for reliable loading state
- Properly handle cancel vs error in deleteFile and batchDelete
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 21:31:40 +08:00
houhuan
7e63dda522
fix: fetchUser on mount, password validation, remove dead code
...
- Call authStore.fetchUser() in onMounted so avatar shows username after refresh
- Simplify navigator.onLine checks (remove redundant !== false)
- Remove unused navItems array (dead code from earlier iteration)
- Add password form validation with confirm password field and rules
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 21:29:03 +08:00
houhuan
26f6275f4e
fix: add global Vue error handler with user-facing toast
2026-05-12 21:26:38 +08:00
houhuan
2d79c05cf1
refactor: add useFilePreview composable for shared preview logic
2026-05-12 21:25:08 +08:00
houhuan
50ee6ac5bd
refactor: add useFileUtils composable for shared file helpers
2026-05-12 21:23:28 +08:00
houhuan
2a2b4c639e
refactor: extract useDebounce composable from 4 duplicate copies
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 21:19:30 +08:00
houhuan
e441ac82a8
Refactor processing logic and enhance error handling
...
- Cleaned up code in processing.py by removing inline semicolons and improving readability.
- Updated upsert_file_relation calls to ensure consistent handling of file relations.
- Enhanced query_file_relations in db_schema.py to support filtering by file existence.
- Improved API error handling in index.ts with user-friendly messages for 401 and 403 errors.
- Added online/offline status tracking in Layout.vue.
- Implemented debounced search functionality across multiple views to optimize performance.
- Introduced loading skeletons in Dashboard.vue for better user experience during data fetching.
- Enhanced file preview cleanup logic in Images.vue, Orders.vue, and Tables.vue to prevent memory leaks.
- Updated global styles to include new loading and notification animations.
2026-05-12 18:37:23 +08:00
houhuan
81bafaf557
fix: sync/barcode/memory overhaul + detailed logs + preview + result tracking
...
- Sync: fix GiteaSync constructor + add push()/pull() methods
- Barcode: two-tab layout matching GUI (mapping + special rules)
- Memory: spec→specification unification, manual add, confidence/price tracking
- Processing: TaskLogHandler captures detailed logs (barcode mapping, unit conversion)
- Preview: fullscreen dialog for file preview (image/Excel) in Orders/Tables/Images
- Detail: per-file log filtering in file pages
- Tasks: result files now per-task, add copy path button
- Config: reactive edited state + save_config fix
- Dashboard: sync task isolation, log limit 10
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 19:37:10 +08:00
houhuan
c18039f790
feat: 重构仪表盘布局并优化交互
2026-05-05 16:05:59 +08:00
houhuan
0721ed099c
@
...
feat: shadcn主题 + 文件关系追踪 + 处理流程修复
前端:
- 全站应用 shadcn/ui 主题 (zinc灰调, Inter字体, 1px细边框, 无硬阴影)
- 重写 global.css / Dashboard.vue / Login.vue / Layout.vue 样式
- 新增文件处理子页面: 采购单(Orders), 表格处理(Tables), 图片处理(Images)
- 侧边栏使用 el-sub-menu 组织文件处理导航
后端:
- 新增 file_relations 表追踪 input→output→result 链路
- 新增 /files/relations, /files/stats/detailed 等关系查询API
- 新增 ocr-single, excel-single, pipeline-single, merge-batch 端点
- 处理流程增加跳过逻辑 (已处理文件自动跳过)
- 全流程不再自动合并, 合并仅在采购单页面手动触发
Bug修复:
- TaskManager: asyncio.create_task 在线程池中无事件循环 → 改用 _schedule() 调度
- PurchaseOrderMerger 缺少 config 参数 → 传入 ConfigManager()
- FastAPI regex= 弃用 → 改为 pattern=
- merger.process() 接收 Path 对象 → 转为字符串
@
2026-05-05 14:16:30 +08:00
houhuan
dedc3b4183
feat: complete web application — FastAPI backend + Vue 3 SPA frontend
...
- Full FastAPI backend with JWT auth, file management, processing pipeline,
memory CRUD, barcode mappings, config management, cloud sync
- Vue 3 + Element Plus frontend with dashboard, task history, HTTP logs,
memory editor, barcode editor, config editor, sync page
- HTTP request logging middleware with SQLite persistence
- Task history tracking with progress and retry support
- File metadata recording for upload/download operations
- WebAuth section in config.ini for bcrypt password storage
- Bug fix: logs.py count query returns tuple not dict
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 11:59:07 +08:00
houhuan
79522d8356
feat: add task history query and retry API endpoints
2026-05-05 11:33:40 +08:00
houhuan
c49105a678
feat: add HTTP log query API endpoints
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 11:33:23 +08:00
houhuan
5de8694eec
feat: persist task lifecycle to SQLite via TaskManager
2026-05-05 11:32:07 +08:00
houhuan
205e18563d
feat: record file operations to metadata table + add history/stats endpoints
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-05 11:32:04 +08:00
houhuan
56561068ea
feat: add HTTP request logging middleware
2026-05-05 11:31:47 +08:00
houhuan
280b94ae1d
feat: add db_schema for http_logs, task_history, file_metadata tables
2026-05-05 11:29:41 +08:00