Commit Graph

501 Commits

Author SHA1 Message Date
4e6f940b75 refactor(phase-6): remove scale testing plan, simplify to docker + runbook
- Delete PLAN-02-SCALE-TESTING.md (scale testing deferred to v3)
- Rename PLAN-03-BACKUP-RUNBOOK to PLAN-02-OPERATIONAL-RUNBOOK
- Phase 6 now has 2 executable plans instead of 3
2026-04-22 18:18:00 +03:00
4ea9625928 docs(phase-6): revise context - single-instance deployment, Docker only, no scale testing
- Lock decision: Single-instance Docker deployment (not multi-site)
- Remove scale testing from Phase 6 scope (defer to v3)
- Simplify to 2 plans: Docker deployment + operational runbook
- Update success criteria to focus on reliability, not performance testing
2026-04-22 18:17:45 +03:00
4b7621fcd1 feat(6): phase 6 planning complete - deployment, scale testing, backup/restore
Phase 6 comprehensive plans ready for execution:

Plan 1: Docker Containerization & Deployment Automation (6 tasks)
- Enhance backend/frontend Dockerfiles with health checks
- Create deploy.sh for single-command deployment
- Environment automation and validation
- Quick start guide and troubleshooting docs

Plan 2: Scale Testing & Performance Optimization (6 tasks)
- Locust-based load testing framework (5 concurrent users)
- Database seeding (10K items with realistic data)
- Metrics collection (CPU, memory, response times)
- Performance baseline establishment and SLO documentation
- Health check monitoring automation
- Load test execution guide

Plan 3: Backup/Restore & Operational Runbook (7 tasks)
- Automated backup script (daily/weekly with retention)
- Restore validation and disaster recovery procedures
- Cron job configuration for scheduled backups
- Comprehensive operational runbook (deployment, scaling, troubleshooting)
- Health monitoring checklist (daily/weekly/monthly)
- Disaster recovery plan (3+ scenarios, <10min RTO)
- Operations documentation index and integration guide

Context document summarizes:
- Phase goal: Production-ready multi-site deployment
- Key decisions: Docker strategy, automation scope, scale limits
- Upstream dependencies: Phase 5 complete
- Success criteria: Single-command deploy, 10K items + 5 users <2s latency
- Backup strategy: Daily incremental, weekly full (30/90 day retention)

All plans include:
- Detailed task breakdowns (5-7 per plan)
- Acceptance criteria and testing procedures
- Dependencies and blockers
- Effort estimates and risk assessment
- Success metrics and monitoring guidance

Ready for execution phase (estimated 4-5 weeks total).
2026-04-22 18:13:35 +03:00
d0c0f8a84c docs(phase-5): verification review - all blocking issues resolved, ready to merge 2026-04-22 18:09:18 +03:00
43094c42d1 docs(phase-5): code review fixes complete - auth headers and validation 2026-04-22 18:05:24 +03:00
4ead83cfad fix(5): validate part_number is non-empty before transformation 2026-04-22 18:04:54 +03:00
0c0c519274 fix(5): add authorization headers to search API calls 2026-04-22 18:04:47 +03:00
7bb92d3bd9 fix(5): add authorization headers to export API calls 2026-04-22 18:04:36 +03:00
62475ae0af docs(phase-5): code review complete 2026-04-22 18:02:33 +03:00
61382d3f13 docs(phase-5): update tracking after wave 1 execution complete
- Mark Phase 5 complete in ROADMAP
- Update scope: Quick Quantity Adjustment replaces Batch Operations
- All 3 plans delivered: 18 tasks, 23+ test cases
- Update STATE.md with execution summary and next steps
2026-04-22 17:49:37 +03:00
a68d1bd23d docs(5-plan-02): add summary - all 6 tasks completed, full test coverage 2026-04-22 17:44:55 +03:00
96befa3571 test(5-plan-02-t6): add comprehensive frontend tests for search functionality and hooks 2026-04-22 17:44:13 +03:00
b28eb49fe7 feat(5-plan-02-t3,t4): create useItemSearch hook and integrate search button into inventory page 2026-04-22 17:44:11 +03:00
0138f04f6e feat(5-plan-02-t2,t5): create SearchModal and QuantityAdjustmentModal components for inventory search 2026-04-22 17:44:03 +03:00
42fb8a1d63 feat(5-plan-02-t1,t6): add backend search endpoint with comprehensive test coverage 2026-04-22 17:44:00 +03:00
fd13f63c28 test(5-03-07): add comprehensive export tests for CSV/Excel generation and endpoint authorization 2026-04-22 17:43:23 +03:00
798cf4bfd5 feat(5-03-06): add openpyxl to backend dependencies for Excel export support 2026-04-22 17:43:21 +03:00
a9a64b8d0c feat(5-03-05): integrate ExportPanel into admin dashboard 2026-04-22 17:43:18 +03:00
767a7657b1 feat(5-03-04): create useExport hook for managing export API calls and file downloads 2026-04-22 17:43:16 +03:00
274e6f58e5 feat(5-03-03): create admin ExportPanel UI component with CSV and Excel buttons for both reports 2026-04-22 17:43:12 +03:00
b6eb284568 feat(5-03-02): create admin export endpoints for inventory snapshot and audit trail with authorization 2026-04-22 17:43:09 +03:00
9fc3de4798 feat(5-03-01): create export service with CSV and Excel generation for inventory and audit trails 2026-04-22 17:43:05 +03:00
7f3ed6c666 docs(5.1): complete Phase 5 Plan 01 execution summary and session handover
- Created 5-PLAN-01-SUMMARY.md with full implementation report
- Updated SESSION_STATE.md with Session 38 completion details
- Phase 5 Plan 01 status: COMPLETED (5/5 tasks, all tests written)
- Ready for inventory page integration and Phase 5 Plan 02 execution
2026-04-22 17:43:02 +03:00
a7746a14ea test(5.1): add integration and unit tests for quick quantity adjustment
- Vitest hook tests for useQuantityAdjustment (optimistic updates, debouncing)
- Pytest backend tests for PATCH /items/{itemId} endpoint
- Tests cover success, failure, validation, and audit logging scenarios
2026-04-22 17:42:08 +03:00
9fd20fff7c feat(5.1): implement quantity display component and adjustment hook
- Create QuantityDisplay component with tap-to-edit UI + +/- buttons
- Implement useQuantityAdjustment hook with optimistic updates, debouncing
- Add PATCH /items/{itemId} backend endpoint with audit logging
- Components support inline quantity adjustment without modal friction
2026-04-22 17:42:04 +03:00
d7dcd051fe docs(session): Phase 5 planning complete - 3 plans ready for execution 2026-04-22 17:36:48 +03:00
ae3ca2cbee feat(5): phase 5 planning complete - 3 plans, 18 tasks covering quick adjust, search, exports 2026-04-22 17:36:36 +03:00
bc890faa5d docs(session): Phase 4.1 verification complete, Phase 5 discussion/context complete 2026-04-22 17:33:51 +03:00
6471f6c86f docs(5): phase 5 context finalized - quick quantity adjust, search, exports locked 2026-04-22 17:33:44 +03:00
68d2ab9abd docs(session): Phase 4.1 complete - all 3 waves executed, verification pass, ready for Phase 5 2026-04-22 17:03:01 +03:00
965c7631b2 docs(4.1): phase 4.1 UAT complete - all 14 tests pass, ready for next phase 2026-04-22 17:02:36 +03:00
b0d93e8be8 docs(4.1): wave 3 execution complete - frontend components for search integration 2026-04-22 16:47:24 +03:00
2647f0428c feat(4.1-05-07): create frontend components for spare-parts search integration - useItemSearch hook, LoadingModal, ErrorModal with tests 2026-04-22 16:46:50 +03:00
54813067e2 docs(session): record phase 4.1 execution progress - waves 1-2 complete, wave 3 ready 2026-04-22 16:45:34 +03:00
42efe54265 docs(4.1): wave 2 execution complete - web scraping and spec extraction backend services 2026-04-22 16:38:21 +03:00
8dca073c50 feat(4.1-03,4.1-04): implement search orchestrator and integration tests 2026-04-22 16:37:38 +03:00
6e5642ff06 feat(4.1-02): implement web scraper and spec extractor services for spare-parts search 2026-04-22 16:37:01 +03:00
5ba488ea5e docs(4.1): wave 1 execution complete - spare-parts classification foundation 2026-04-22 16:36:11 +03:00
f20c60169a test(4.1-04): create comprehensive unit tests for spare-parts classification module 2026-04-22 16:35:41 +03:00
5fa1244004 feat(4.1-02,4.1-03): add spare-parts classification guide to AI extraction prompt for Gemini and Claude 2026-04-22 16:34:48 +03:00
2ecaa6b2e8 feat(4.1-01): create spare-parts classification whitelist module with fuzzy matching 2026-04-22 16:34:10 +03:00
ac87c4c06b docs(4.1): planning complete - research + 3 executable plans
Phase 4.1: AI Prompt Enhancement — Spare Parts Deep Identification

Artifacts:
- 4.1-RESEARCH.md: Web scraping patterns, spare-parts classification, integration architecture
- 4.1-PLAN-01.md (Wave 1): Spare-parts whitelist + AI prompt enhancement (4 tasks)
- 4.1-PLAN-02.md (Wave 2): Web scraping service + backend integration (6 tasks)
- 4.1-PLAN-03.md (Wave 3): Frontend integration + end-to-end testing (7 tasks)

All 17 tasks verified:
✓ Concrete action steps with exact function signatures and file paths
✓ 100% verifiable acceptance criteria (grep, pytest, vitest, imports)
✓ Architecture aligned with all 11 CONTEXT.md decisions
✓ CLAUDE.md compliance: TypeScript strict, API tests, UI fidelity
✓ Wave dependencies correctly ordered
✓ Risk mitigation: rate limiting, timeout handling, offline graceful degradation

Ready for execution via /gsd-execute-phase 4.1
2026-04-22 16:28:26 +03:00
c378d1a1f4 docs(session): record phase 4.1 context gathering completion 2026-04-22 16:17:12 +03:00
b90085cce5 docs(4.1): capture phase context and discussion log for AI spare parts deep identification
- AI Prompt: Detailed categorization to distinguish spare parts from consumables
- Search: Web scraping (requests + BeautifulSoup) to extract Google results, no API key
- Trigger: Automatic background search after AI extraction if category matches whitelist
- UX: Block until search completes, user reviews and edits all fields before save
- Mapping: Extract product type/specs/manufacturer/description to Notes field
- Retry on failure, user can skip if needed
2026-04-22 16:16:51 +03:00
d3f8b6c4ff Phase 4.1 inserted: AI spare parts deep identification (internet search enhancement) 2026-04-22 16:03:25 +03:00
5e7318c7f6 Planning reset: v2 roadmap and phase 4-7 structure 2026-04-22 15:56:47 +03:00
4c4eb91a96 docs: record decision to simplify image handling 2026-04-22 14:44:18 +03:00
51c2a5a4bb simplify: remove image rotation modal, save original image as-is
Removed the rotation/zoom adjustment modal feature. Approach was too complex and
time-consuming without delivering stable results.

New simplified flow:
1. User extracts item with AI
2. Item saved with original image (resized/compressed by backend)
3. No rotation adjustments in frontend
4. Image editing can be implemented as a future feature

This unblocks the workflow and gets users to a working state.
Backend still applies compression/resizing, just no rotation processing.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-22 14:44:00 +03:00
285c3f17d4 fix: CRITICAL - remove double rotation (frontend + backend)
Root cause: Image was being rotated TWICE:
1. Frontend rotated it in the modal and sent processed blob
2. Backend rotated it AGAIN based on rotation_degrees

This double rotation made the image appear unrotated or distorted.

Solution: Remove frontend image processing entirely.
- Modal now sends ONLY the rotation value
- No imageBlob from modal (uses original)
- Backend receives original image + rotation value
- Backend applies rotation ONCE

Now image is rotated correctly by backend without duplication.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-22 14:23:20 +03:00
743f377357 fix: CRITICAL - prevent image clipping when rotating
When rotating images, the rotated corners extend beyond the original canvas
bounds, causing the image to be clipped and appear skewed.

Fixed by:
1. Calculate canvas size needed to fit rotated image
2. Use formula: newSize = sqrt((w*cos)^2 + (h*sin)^2)
3. Center image and rotate around center of new canvas
4. Update cropBounds to new canvas dimensions

Now when user rotates an image, the full rotated result is saved without
any clipping or skewing. The saved image dimensions will be larger than
the original to accommodate the rotation.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-22 14:19:20 +03:00