407 lines
12 KiB
Markdown
407 lines
12 KiB
Markdown
# Unified App Migration Checklist
|
|
|
|
**Track your progress** as you implement the unified app.
|
|
|
|
---
|
|
|
|
## Phase 1: Project Setup (0.5 days)
|
|
|
|
### Directory Structure
|
|
- [ ] Create directory structure in root (`/mnt/e/proiecte/roa2web/`)
|
|
- [ ] Create `src/` subdirectories:
|
|
- [ ] `src/modules/reports/views/`
|
|
- [ ] `src/modules/reports/stores/`
|
|
- [ ] `src/modules/reports/services/`
|
|
- [ ] `src/modules/data-entry/views/receipts/`
|
|
- [ ] `src/modules/data-entry/components/ocr/`
|
|
- [ ] `src/modules/data-entry/stores/`
|
|
- [ ] `src/modules/data-entry/services/`
|
|
- [ ] `src/shared/components/`
|
|
- [ ] `src/shared/stores/`
|
|
- [ ] `src/shared/styles/`
|
|
- [ ] `src/config/`
|
|
- [ ] `src/router/`
|
|
- [ ] `src/assets/css/`
|
|
|
|
### Core Configuration Files
|
|
- [ ] Create `package.json` (merge dependencies from both apps)
|
|
- [ ] Create `vite.config.js` (dual proxy + lazy loading)
|
|
- [ ] Create `src/main.js` (PrimeVue setup)
|
|
- [ ] Create `.env.example` (environment variables)
|
|
- [ ] Create `.gitignore`
|
|
- [ ] Create `README.md`
|
|
|
|
### Copy Shared Resources
|
|
- [ ] Copy `shared/frontend/components/` → `src/shared/components/`
|
|
- [ ] Copy `shared/frontend/stores/` → `src/shared/stores/`
|
|
- [ ] Copy `shared/frontend/styles/` → `src/shared/styles/`
|
|
- [ ] Copy `reports-app/frontend/src/assets/css/` → `src/assets/css/`
|
|
|
|
### Verification
|
|
- [ ] Run `npm install` - succeeds
|
|
- [ ] Run `npm run dev` - starts on port 3000
|
|
- [ ] No console errors
|
|
|
|
---
|
|
|
|
## Phase 2: Module Migration (1 day)
|
|
|
|
### Reports Module - Views
|
|
- [ ] Copy `DashboardView.vue` → `src/modules/reports/views/`
|
|
- [ ] Copy `InvoicesView.vue` → `src/modules/reports/views/`
|
|
- [ ] Copy `BankCashRegisterView.vue` → `src/modules/reports/views/`
|
|
- [ ] Copy `TrialBalanceView.vue` → `src/modules/reports/views/`
|
|
- [ ] Copy `TelegramView.vue` → `src/modules/reports/views/`
|
|
- [ ] Copy `CacheStatsView.vue` → `src/modules/reports/views/`
|
|
- [ ] Update imports in all views (if needed)
|
|
|
|
### Reports Module - Stores
|
|
- [ ] Copy `dashboard.js` → `src/modules/reports/stores/`
|
|
- [ ] Copy `invoices.js` → `src/modules/reports/stores/`
|
|
- [ ] Copy `treasury.js` → `src/modules/reports/stores/`
|
|
- [ ] Copy `trialBalance.js` → `src/modules/reports/stores/`
|
|
- [ ] Copy `cacheStore.js` → `src/modules/reports/stores/`
|
|
- [ ] Update imports in all stores (if needed)
|
|
|
|
### Reports Module - Services
|
|
- [ ] Copy `api.js` → `src/modules/reports/services/` (in root)
|
|
- [ ] Update base URL to `/api/reports/` in api.js
|
|
- [ ] Test API calls route to localhost:8001
|
|
|
|
### Data Entry Module - Views
|
|
- [ ] Copy `ReceiptsListView.vue` → `src/modules/data-entry/views/receipts/`
|
|
- [ ] Copy `ReceiptCreateView.vue` → `src/modules/data-entry/views/receipts/`
|
|
- [ ] Update imports in views (if needed)
|
|
|
|
### Data Entry Module - Components
|
|
- [ ] Copy `OCRUploadZone.vue` → `src/modules/data-entry/components/ocr/`
|
|
- [ ] Copy `OCRPreview.vue` → `src/modules/data-entry/components/ocr/`
|
|
- [ ] Copy `OCRConfidenceIndicator.vue` → `src/modules/data-entry/components/ocr/`
|
|
- [ ] Update imports in components (if needed)
|
|
|
|
### Data Entry Module - Stores
|
|
- [ ] Copy `receiptsStore.js` → `src/modules/data-entry/stores/`
|
|
- [ ] Update imports in store (if needed)
|
|
|
|
### Data Entry Module - Services
|
|
- [ ] Copy `api.js` → `src/modules/data-entry/services/` (in root)
|
|
- [ ] Update base URL to `/api/data-entry/` in api.js
|
|
- [ ] Test API calls route to localhost:8003
|
|
|
|
### CSS Merge
|
|
- [ ] Review `data-entry-app/frontend/src/assets/css/main.css`
|
|
- [ ] Merge unique styles into `src/assets/css/` (in root)
|
|
- [ ] Resolve any style conflicts
|
|
- [ ] Test responsive design
|
|
|
|
### Verification
|
|
- [ ] All Reports views render without errors
|
|
- [ ] All Data Entry views render without errors
|
|
- [ ] No import errors in console
|
|
- [ ] CSS loads correctly
|
|
- [ ] No style conflicts
|
|
|
|
---
|
|
|
|
## Phase 3: Routing & Navigation (0.5 days)
|
|
|
|
### Router Configuration
|
|
- [ ] Create `src/router/index.js` (in root)
|
|
- [ ] Add `/login` route (eager loaded)
|
|
- [ ] Add `/reports/*` routes (lazy loaded)
|
|
- [ ] Add `/data-entry/*` routes (lazy loaded)
|
|
- [ ] Add redirect `/` → `/reports/dashboard`
|
|
- [ ] Add authentication guard
|
|
- [ ] Add 404 handling
|
|
- [ ] Test all routes work
|
|
|
|
### Menu Configuration
|
|
- [ ] Create `src/config/menu.js` (in root)
|
|
- [ ] Define "Rapoarte" section
|
|
- [ ] Define "Introduceri Date" section
|
|
- [ ] Define "Sistem" section
|
|
- [ ] Export menu configuration
|
|
|
|
### Feature Flags
|
|
- [ ] Create `src/config/features.js` (in root)
|
|
- [ ] Add reports.enabled flag
|
|
- [ ] Add dataEntry.enabled flag
|
|
- [ ] Add module-level flags
|
|
- [ ] Export isFeatureEnabled function
|
|
|
|
### Root Component
|
|
- [ ] Create `src/App.vue` (in root)
|
|
- [ ] Integrate AppHeader with unified menu
|
|
- [ ] Integrate SlideMenu with menu sections
|
|
- [ ] Add router-view
|
|
- [ ] Add Toast and ConfirmDialog
|
|
- [ ] Test menu navigation
|
|
|
|
### Verification
|
|
- [ ] Can navigate to all routes
|
|
- [ ] Menu highlights active route
|
|
- [ ] Authentication guard works
|
|
- [ ] Login redirects to dashboard
|
|
- [ ] 404 redirects work
|
|
|
|
---
|
|
|
|
## Phase 4: Error Boundaries & Resilience (0.25 days)
|
|
|
|
### Error Boundary Component
|
|
- [ ] Create `src/shared/components/ErrorBoundary.vue` (in root)
|
|
- [ ] Implement onErrorCaptured hook
|
|
- [ ] Add user-friendly error display
|
|
- [ ] Add retry functionality
|
|
- [ ] Add navigate away option
|
|
- [ ] Test with intentional error
|
|
|
|
### Module Layouts
|
|
- [ ] Create `src/modules/reports/ReportsLayout.vue` (in root)
|
|
- [ ] Wrap with ErrorBoundary component
|
|
- [ ] Create `src/modules/data-entry/DataEntryLayout.vue` (in root)
|
|
- [ ] Wrap with ErrorBoundary component
|
|
|
|
### Error Isolation Testing
|
|
- [ ] Introduce error in Reports module
|
|
- [ ] Verify Data Entry still works
|
|
- [ ] Introduce error in Data Entry module
|
|
- [ ] Verify Reports still works
|
|
- [ ] Test retry functionality
|
|
- [ ] Test navigate away functionality
|
|
|
|
### Feature Flags Testing
|
|
- [ ] Disable Reports module
|
|
- [ ] Verify menu items hidden
|
|
- [ ] Disable Data Entry module
|
|
- [ ] Verify menu items hidden
|
|
- [ ] Re-enable all modules
|
|
|
|
### Loading States
|
|
- [ ] Add loading spinner for lazy routes
|
|
- [ ] Test module switching loading
|
|
- [ ] Add skeleton screens (optional)
|
|
|
|
### Verification
|
|
- [ ] Error boundary catches component errors
|
|
- [ ] User sees friendly error message
|
|
- [ ] Can retry or navigate away
|
|
- [ ] Module isolation works (error in one doesn't crash other)
|
|
- [ ] Feature flags work
|
|
|
|
---
|
|
|
|
## Phase 5: Build & Deploy (0.25 days)
|
|
|
|
### Production Build
|
|
- [ ] Run `npm run build`
|
|
- [ ] Build succeeds without errors
|
|
- [ ] Check `dist/` output
|
|
- [ ] Verify chunks created:
|
|
- [ ] vendor-core.[hash].js
|
|
- [ ] vendor-primevue.[hash].js
|
|
- [ ] vendor-utils.[hash].js
|
|
- [ ] reports.[hash].js (lazy)
|
|
- [ ] data-entry.[hash].js (lazy)
|
|
- [ ] main.[hash].js
|
|
- [ ] main.[hash].css
|
|
|
|
### Bundle Analysis
|
|
- [ ] Install `rollup-plugin-visualizer`
|
|
- [ ] Analyze bundle sizes
|
|
- [ ] Verify total size ≤ sum of current apps
|
|
- [ ] Check for duplicate dependencies
|
|
|
|
### Local Preview
|
|
- [ ] Run `npm run preview`
|
|
- [ ] Test all routes work
|
|
- [ ] Test API calls work
|
|
- [ ] Test error boundaries
|
|
- [ ] Test lazy loading
|
|
|
|
### IIS Configuration
|
|
- [ ] Create `web.config` (in root) with URL rewrite rules
|
|
- [ ] Add SPA routing rule (all → index.html)
|
|
- [ ] Add proxy rule: `/api/reports/*` → `http://localhost:8001/api/*`
|
|
- [ ] Add proxy rule: `/api/data-entry/*` → `http://localhost:8003/api/*`
|
|
- [ ] Add proxy rule: `/uploads/*` → `http://localhost:8003/uploads/*`
|
|
|
|
### Staging Deployment
|
|
- [ ] Deploy to staging IIS site
|
|
- [ ] Test all routes
|
|
- [ ] Test API calls
|
|
- [ ] Test error boundaries
|
|
- [ ] Test on different browsers
|
|
- [ ] Test on mobile devices
|
|
|
|
### Production Deployment
|
|
- [ ] Backup current IIS configuration
|
|
- [ ] Backup current builds
|
|
- [ ] Deploy unified app
|
|
- [ ] Test all routes
|
|
- [ ] Test API calls
|
|
- [ ] Monitor error logs
|
|
|
|
### Verification
|
|
- [ ] Build succeeds
|
|
- [ ] Chunks split correctly
|
|
- [ ] IIS deployment works
|
|
- [ ] API routing correct
|
|
- [ ] All features work in production
|
|
|
|
---
|
|
|
|
## Testing Checklist
|
|
|
|
### Manual Testing
|
|
- [ ] Login flow works
|
|
- [ ] Navigate to all Reports views
|
|
- [ ] Navigate to all Data Entry views
|
|
- [ ] Switch between modules
|
|
- [ ] Test company selector
|
|
- [ ] Test period selector
|
|
- [ ] Test logout
|
|
- [ ] Test on mobile (375px)
|
|
- [ ] Test on tablet (768px)
|
|
- [ ] Test on desktop (1920px)
|
|
|
|
### E2E Tests
|
|
- [ ] Create `tests/e2e/login.spec.js` (in root)
|
|
- [ ] Create `tests/e2e/reports-navigation.spec.js` (in root)
|
|
- [ ] Create `tests/e2e/data-entry-navigation.spec.js` (in root)
|
|
- [ ] Create `tests/e2e/module-switching.spec.js` (in root)
|
|
- [ ] Create `tests/e2e/error-isolation.spec.js` (in root)
|
|
- [ ] Run all E2E tests - pass
|
|
|
|
### Performance Testing
|
|
- [ ] Run Lighthouse audit
|
|
- [ ] Performance score ≥ 90
|
|
- [ ] Initial load < 2 seconds
|
|
- [ ] Module switching < 500ms (cached)
|
|
|
|
---
|
|
|
|
## Post-Implementation Checklist
|
|
|
|
### Documentation Updates
|
|
- [ ] Update `CLAUDE.md` - Architecture section
|
|
- [ ] Update `CLAUDE.md` - Deployment section
|
|
- [ ] Update `README.md` - Quick start
|
|
- [ ] Update `README.md` - URL structure
|
|
- [ ] Update `DEPLOYMENT_GUIDE.md` - IIS configuration
|
|
- [ ] Update `docs/ARCHITECTURE_SCHEMA.md` - Diagrams
|
|
- [ ] Update `deployment/windows/README.md` - Deployment steps
|
|
|
|
### Cleanup (After 1 Week)
|
|
- [ ] Archive `reports-app/frontend/` → `reports-app/frontend-archived/`
|
|
- [ ] Archive `data-entry-app/frontend/` → `data-entry-app/frontend-archived/`
|
|
- [ ] Update `start-test.sh` to use root directory
|
|
- [ ] Update `start-data-entry.sh` to use root directory
|
|
- [ ] Update CI/CD pipelines (if any)
|
|
- [ ] Document migration in CHANGELOG.md
|
|
|
|
### Monitoring (First Week)
|
|
- [ ] Day 1: Review error logs
|
|
- [ ] Day 2: Review error logs
|
|
- [ ] Day 3: Review error logs
|
|
- [ ] Day 4: Review error logs
|
|
- [ ] Day 5: Review error logs
|
|
- [ ] Day 6: Review error logs
|
|
- [ ] Day 7: Review error logs + user feedback
|
|
|
|
### Optimization (First Month)
|
|
- [ ] Week 2: Analyze bundle sizes
|
|
- [ ] Week 2: Optimize images/assets
|
|
- [ ] Week 3: Consider further code splitting
|
|
- [ ] Week 3: Add performance monitoring
|
|
- [ ] Week 4: Evaluate feature flag usage
|
|
- [ ] Week 4: Plan next improvements
|
|
|
|
---
|
|
|
|
## Common Issues & Solutions
|
|
|
|
### Issue: CSS Conflicts
|
|
**Solution**: Use CSS modules, check `docs/CSS_PATTERNS.md`
|
|
|
|
### Issue: Import Errors
|
|
**Solution**: Update import paths, check alias configuration in vite.config.js
|
|
|
|
### Issue: API Calls Failing
|
|
**Solution**: Verify proxy configuration, check backend is running
|
|
|
|
### Issue: Error Boundary Not Catching
|
|
**Solution**: Check onErrorCaptured implementation, add global error handler
|
|
|
|
### Issue: Large Bundle Size
|
|
**Solution**: Review manualChunks, enable tree shaking, lazy load more
|
|
|
|
### Issue: IIS Routing Not Working
|
|
**Solution**: Check web.config URL rewrite rules, verify IIS URL Rewrite module installed
|
|
|
|
### Issue: Store Contamination
|
|
**Solution**: Use module-scoped stores, check for global state
|
|
|
|
### Issue: PrimeVue Theme Conflicts
|
|
**Solution**: Use single theme (saga-blue), override in vendor CSS
|
|
|
|
---
|
|
|
|
## Progress Tracking
|
|
|
|
**Phase 1: Setup**
|
|
- Started: ___________
|
|
- Completed: ___________
|
|
- Time Spent: ___________ hours
|
|
|
|
**Phase 2: Migration**
|
|
- Started: ___________
|
|
- Completed: ___________
|
|
- Time Spent: ___________ hours
|
|
|
|
**Phase 3: Routing**
|
|
- Started: ___________
|
|
- Completed: ___________
|
|
- Time Spent: ___________ hours
|
|
|
|
**Phase 4: Error Boundaries**
|
|
- Started: ___________
|
|
- Completed: ___________
|
|
- Time Spent: ___________ hours
|
|
|
|
**Phase 5: Build & Deploy**
|
|
- Started: ___________
|
|
- Completed: ___________
|
|
- Time Spent: ___________ hours
|
|
|
|
**Total Time**: ___________ hours (Estimated: 20 hours)
|
|
|
|
---
|
|
|
|
## Success Metrics
|
|
|
|
### Deployment
|
|
- [ ] Single IIS site running (not 2)
|
|
- [ ] Single build process (not 2)
|
|
- [ ] Zero downtime during deployment
|
|
|
|
### Performance
|
|
- [ ] Initial load < 2 seconds
|
|
- [ ] Module switching < 500ms
|
|
- [ ] Lighthouse score ≥ 90
|
|
- [ ] Bundle size ≤ sum of old apps
|
|
|
|
### Quality
|
|
- [ ] 100% feature parity
|
|
- [ ] All E2E tests passing
|
|
- [ ] Zero user-reported bugs (first week)
|
|
- [ ] Error isolation verified
|
|
|
|
---
|
|
|
|
**Status**: ⬜ Not Started | 🔵 In Progress | ✅ Complete
|
|
|
|
**Last Updated**: ___________
|
|
**Completed By**: ___________
|
|
**Production Deploy Date**: ___________
|