init projectmycelium
This commit is contained in:
253
docs/dev/design/archive/this_plan.md
Normal file
253
docs/dev/design/archive/this_plan.md
Normal file
@@ -0,0 +1,253 @@
|
||||
# Project Mycelium - Complete Mock Data Removal Plan
|
||||
**Date**: 2025-08-14
|
||||
**Task**: Remove all code-based mock data and enforce persistent-only data
|
||||
**Status**: Implementation Active
|
||||
|
||||
## Overview
|
||||
|
||||
Despite the architecture documentation claiming "100% Mock Data Elimination," extensive mock data infrastructure remains throughout the system. This plan systematically removes all 129+ mock patterns identified while ensuring the application continues to function with persistent storage only.
|
||||
|
||||
## Current Mock Data Patterns Identified
|
||||
|
||||
### Critical Mock Infrastructure:
|
||||
- [ ] **MockUserData Factory Methods**: `user1()` through `user5()` in `src/models/user.rs`
|
||||
- [ ] **MockDataService Singleton**: Complete service in `src/services/mock_data.rs`
|
||||
- [ ] **User.mock_data Field**: Extensively used across controllers
|
||||
- [ ] **MockPaymentGateway**: Mock payment processing in `src/services/order.rs`
|
||||
- [ ] **Mock-dependent Controllers**: Rental, Pool, Dashboard controllers
|
||||
- [ ] **Mock Initialization**: User persistence still initializes with mock data
|
||||
|
||||
## Phase 1: Infrastructure & Data Model Changes ✅
|
||||
|
||||
**Goal**: Establish persistent-only data patterns and remove mock dependencies
|
||||
|
||||
### 1.1 Remove MockUserData Factory Methods
|
||||
- [ ] Delete `user1()` through `user5()` methods from `src/models/user.rs`
|
||||
- [ ] Replace inline mock arrays with `Vec::new()` defaults
|
||||
- [ ] Ensure all fields have `#[serde(default)]` for backward compatibility
|
||||
- [ ] Update `MockUserData::new_user()` to return minimal default structures
|
||||
|
||||
**Files to modify:**
|
||||
- `src/models/user.rs` (lines 1311-2801)
|
||||
|
||||
### 1.2 Remove User.mock_data Field Dependency
|
||||
- [ ] Update User struct to make mock_data field optional/deprecated
|
||||
- [ ] Remove mock_data field access from all controllers
|
||||
- [ ] Route wallet balance, transactions through UserPersistence only
|
||||
- [ ] Add transition methods to extract data from persistent storage
|
||||
|
||||
**Files to modify:**
|
||||
- `src/models/user.rs` (User struct definition)
|
||||
- `src/models/builders.rs` (UserBuilder)
|
||||
|
||||
### 1.3 Remove MockDataService Infrastructure
|
||||
- [ ] Delete entire `src/services/mock_data.rs` file
|
||||
- [ ] Remove MockDataService imports across all controllers
|
||||
- [ ] Update `src/services/mod.rs` to remove mock_data module
|
||||
- [ ] Replace marketplace config with minimal persistent config
|
||||
|
||||
**Files to modify:**
|
||||
- `src/services/mock_data.rs` (DELETE)
|
||||
- `src/services/mod.rs`
|
||||
- All controllers importing MockDataService
|
||||
|
||||
## Phase 2: Controller Refactoring ✅
|
||||
|
||||
**Goal**: Route all data operations through UserPersistence only
|
||||
|
||||
### 2.1 Dashboard Controller Overhaul
|
||||
- [ ] Remove all `mock_data` field access in `src/controllers/dashboard.rs`
|
||||
- [ ] Route wallet balance through persistent storage (lines 44-55)
|
||||
- [ ] Replace mock service/app statistics with persistent data aggregation
|
||||
- [ ] Update service provider, farmer, app provider data initialization
|
||||
- [ ] Remove mock balance updates in wallet operations
|
||||
|
||||
**Files to modify:**
|
||||
- `src/controllers/dashboard.rs` (lines 44-55, 75-279, 2698-3059, 3328-3338, 4327-4330, 4803-4813)
|
||||
|
||||
### 2.2 Rental Controller Cleanup
|
||||
- [ ] Remove MockDataService dependencies (line 7)
|
||||
- [ ] Replace mock product lookups with persistent storage queries
|
||||
- [ ] Remove mock balance deduction logic (lines 82-174, 242-317, 384-401)
|
||||
- [ ] Update rental operations to use UserPersistence only
|
||||
|
||||
**Files to modify:**
|
||||
- `src/controllers/rental.rs` (lines 7, 35-36, 82-174, 194-196, 242-317, 337-339, 384-401, 430-432)
|
||||
|
||||
### 2.3 Pool Controller Refactoring
|
||||
- [ ] Remove `mock_data` usage (lines 92-136, 207-228)
|
||||
- [ ] Route all transaction and balance operations through UserPersistence
|
||||
- [ ] Replace mock transaction history updates
|
||||
|
||||
**Files to modify:**
|
||||
- `src/controllers/pool.rs` (lines 92-136, 207-228)
|
||||
|
||||
### 2.4 Marketplace Controller Cleanup
|
||||
- [ ] Remove MockDataService usage (lines 6, 127-131, 726-742)
|
||||
- [ ] Replace mock marketplace config with minimal persistent config
|
||||
- [ ] Remove mock product registration for user apps
|
||||
|
||||
**Files to modify:**
|
||||
- `src/controllers/marketplace.rs` (lines 6, 127-131, 706-742)
|
||||
|
||||
## Phase 3: Service Layer Cleanup ✅
|
||||
|
||||
**Goal**: Eliminate remaining mock services and payment gateways
|
||||
|
||||
### 3.1 Remove MockPaymentGateway
|
||||
- [ ] Delete `MockPaymentGateway` from order service (lines 82-84, 1119-1224)
|
||||
- [ ] Replace with persistent payment method handling only
|
||||
- [ ] Remove mock payment method fallbacks (lines 606-615, 1225-1227)
|
||||
- [ ] Update payment processing to use real gateways only
|
||||
|
||||
**Files to modify:**
|
||||
- `src/services/order.rs` (lines 82-84, 606-615, 1119-1224, 1225-1227)
|
||||
|
||||
### 3.2 User Persistence Cleanup
|
||||
- [ ] Remove `initialize_user_with_mock_balance` method (lines 349-370)
|
||||
- [ ] Replace with pure persistent data initialization
|
||||
- [ ] Ensure all new users get default empty structures, not mock data
|
||||
- [ ] Update session manager to not apply mock data
|
||||
|
||||
**Files to modify:**
|
||||
- `src/services/user_persistence.rs` (lines 349-370)
|
||||
- `src/services/session_manager.rs` (lines 141-158)
|
||||
|
||||
### 3.3 Farmer Service Mock Cleanup
|
||||
- [ ] Remove mock product generation (lines 432-454)
|
||||
- [ ] Route marketplace product creation through persistent storage only
|
||||
- [ ] Remove MockDataService dependencies
|
||||
|
||||
**Files to modify:**
|
||||
- `src/services/farmer.rs` (lines 432-454)
|
||||
|
||||
### 3.4 Product Service Mock Dependencies
|
||||
- [ ] Remove MockDataService usage (lines 3, 157-161, 398-401)
|
||||
- [ ] Ensure product aggregation uses only fixtures and persistent data
|
||||
- [ ] Remove mock product and category fallbacks
|
||||
|
||||
**Files to modify:**
|
||||
- `src/services/product.rs` (lines 3, 157-161, 398-401)
|
||||
|
||||
## Phase 4: Configuration & Guards ✅
|
||||
|
||||
**Goal**: Enforce persistent-only operation and prevent mock fallbacks
|
||||
|
||||
### 4.1 Production Guards Implementation
|
||||
- [ ] Remove enable_mock_data configuration option
|
||||
- [ ] Add compile-time checks to prevent mock usage
|
||||
- [ ] Remove all conditional mock paths from production code
|
||||
- [ ] Update configuration to make persistent-only the default
|
||||
|
||||
**Files to modify:**
|
||||
- `src/config/builder.rs` (lines 28-30, 77-79, 105, 157-166, 225-227, 289, 343-346, 493-530)
|
||||
|
||||
### 4.2 Model Updates for Persistence
|
||||
- [ ] Ensure all persistent data structures have `#[serde(default)]`
|
||||
- [ ] Remove MockUserData dependencies from builders
|
||||
- [ ] Update User model to not require mock_data field
|
||||
|
||||
**Files to modify:**
|
||||
- `src/models/builders.rs` (lines 12, 269, 307-309, 323, 1026, 1053-1101, 1219-1255)
|
||||
- `src/models/currency.rs` (lines 34, 161, 175, 190, 206, 221)
|
||||
- `src/models/order.rs` (lines 88-89)
|
||||
|
||||
### 4.3 Authentication & Other Controllers
|
||||
- [ ] Remove MockUserData from gitea auth controller (lines 7, 161)
|
||||
- [ ] Update wallet controller to clear mock data field (lines 93-94)
|
||||
|
||||
**Files to modify:**
|
||||
- `src/controllers/gitea_auth.rs` (lines 7, 161)
|
||||
- `src/controllers/wallet.rs` (lines 93-94)
|
||||
- `src/controllers/order.rs` (lines 641-643)
|
||||
|
||||
## Phase 5: Service Dependencies & Grid ✅
|
||||
|
||||
**Goal**: Clean up remaining service mock dependencies
|
||||
|
||||
### 5.1 Grid Service Mock Cleanup
|
||||
- [ ] Remove mock grid data creation (lines 97, 194-196)
|
||||
- [ ] Replace with proper error handling for missing grid data
|
||||
|
||||
**Files to modify:**
|
||||
- `src/services/grid.rs` (lines 97, 194-196)
|
||||
|
||||
### 5.2 Pool Service Analytics
|
||||
- [ ] Remove mock analytics generation (lines 64, 182-183)
|
||||
- [ ] Replace with real analytics from persistent data
|
||||
|
||||
**Files to modify:**
|
||||
- `src/services/pool_service.rs` (lines 64, 182-183)
|
||||
|
||||
## Phase 6: Verification & Testing ✅
|
||||
|
||||
**Goal**: Ensure system works correctly and update documentation
|
||||
|
||||
### 6.1 Compilation & Runtime Testing
|
||||
- [ ] Run `cargo check` to verify no compilation errors
|
||||
- [ ] Test with `APP_ENABLE_MOCKS=0` to ensure no runtime mock dependencies
|
||||
- [ ] Verify all dashboard flows work with persistent data
|
||||
- [ ] Test marketplace functionality end-to-end
|
||||
|
||||
### 6.2 Test Updates
|
||||
- [ ] Update test files to remove mock dependencies
|
||||
- [ ] Ensure integration tests use fixture JSON instead of code-based mocks
|
||||
- [ ] Update mock gating tests to reflect new reality
|
||||
|
||||
**Files to modify:**
|
||||
- `tests/service_booking_integration_test.rs` (line 112)
|
||||
- `tests/mock_gating.rs` (lines 8-39)
|
||||
|
||||
### 6.3 Final Verification
|
||||
- [ ] Search for remaining mock patterns: `grep -r "Mock\|mock_\|demo_\|sample_" src/`
|
||||
- [ ] Verify no `pub fn user[0-9]+` patterns remain
|
||||
- [ ] Ensure all persistent data operations work correctly
|
||||
|
||||
## Phase 7: Documentation Updates ✅
|
||||
|
||||
**Goal**: Update documentation to reflect actual implementation
|
||||
|
||||
### 7.1 Architecture Documentation
|
||||
- [ ] Update `marketplace-architecture.md` Progress Update section
|
||||
- [ ] Add note about code-based mock data removal completion
|
||||
- [ ] Document persistent-data-only architecture
|
||||
|
||||
**Files to modify:**
|
||||
- `docs/dev/design/current/marketplace-architecture.md`
|
||||
|
||||
### 7.2 TODO Documentation
|
||||
- [ ] Update `marketplace-todo.md` to mark task completed
|
||||
- [ ] Remove mock cleanup items from todo list
|
||||
- [ ] Add any follow-up persistence improvements needed
|
||||
|
||||
**Files to modify:**
|
||||
- `docs/dev/design/current/marketplace-todo.md`
|
||||
|
||||
## Implementation Strategy
|
||||
|
||||
### Critical Success Factors:
|
||||
1. **Backward Compatibility**: All persistent structures must have `#[serde(default)]`
|
||||
2. **Default Values**: Replace mock arrays with sensible defaults (`Vec::new()`, `None`, `0`)
|
||||
3. **Error Handling**: Add proper error handling for missing data instead of mock fallbacks
|
||||
4. **Gradual Migration**: Keep User.mock_data field optional during transition
|
||||
5. **Testing**: Verify each phase before proceeding to next
|
||||
|
||||
### Risk Mitigation:
|
||||
- **Compilation Safety**: Check `cargo check` after each major change
|
||||
- **Data Safety**: Ensure existing user_data/ JSON files continue to work
|
||||
- **Functionality Safety**: Test core flows after each controller update
|
||||
- **Rollback Plan**: Git commits for each phase allow easy rollback
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- ✅ `cargo check` passes with zero compilation errors
|
||||
- ✅ Application starts and runs with `APP_ENABLE_MOCKS=0`
|
||||
- ✅ No code-based mock user factories remain in codebase
|
||||
- ✅ Dashboard displays persistent data or proper empty states
|
||||
- ✅ All marketplace flows function using persistent storage only
|
||||
- ✅ No occurrences of mock patterns in grep search
|
||||
- ✅ Architecture documentation reflects actual implementation
|
||||
|
||||
## Progress Tracking
|
||||
|
||||
This document will be updated with checkmarks (✅) as each section is completed during implementation.
|
Reference in New Issue
Block a user