init projectmycelium

This commit is contained in:
mik-tf
2025-09-01 21:37:01 -04:00
commit b41efb0e99
319 changed files with 128160 additions and 0 deletions

View 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.