Files
projectmycelium/docs/dev/design/archive/marketplace_current_plan.md
2025-09-01 21:37:01 -04:00

14 KiB

Project Mycelium Credits System - Completion Plan

Executive Summary

The Project Mycelium credits system transformation is 85% complete with excellent foundational architecture. This document outlines the remaining work to achieve 100% completion and production readiness.

Current Status: 85% Complete (Not 90% as previously claimed) Production Ready: After Week 1 completion (9 hours of work) Feature Complete: After Week 2 completion (15 hours total)


Current Implementation Analysis

Successfully Implemented (85%)

1. Frontend Transformation (100% Complete)

  • UI Components: All components use "Credits" terminology instead of "TFP"
  • Wallet Dashboard: Shows USD amounts with ${{ wallet_balance | format_decimal(precision=2) }}
  • Marketplace Pricing: Clear USD values throughout all 5 marketplace pages
  • Navigation: Consistent "Credits Wallet" terminology
  • Price Filters: Updated from "Min/Max Price (TFP)" to "Min/Max Price ($)"

2. Backend Infrastructure (80% Complete)

  • Transaction Types: Complete credits transaction types implemented:
    CreditsPurchase { payment_method: String },
    CreditsSale { currency: String, fiat_amount: Decimal, payout_method: String },
    CreditsTransfer { to_user: String, note: Option<String> },
    AutoTopUp { triggered_by_purchase: Option<String>, threshold_amount: Decimal, amount_usd: Decimal, payment_method: String }
    
  • Controller Methods: Credits methods implemented in src/controllers/wallet.rs with proper request structs
  • Data Models: AutoTopUpSettings fully implemented with builder pattern in src/services/user_persistence.rs

3. Auto Top-Up Infrastructure (75% Complete)

  • Service Layer: AutoTopUpService implemented with proper builder pattern
  • JavaScript Integration: BuyNowManager in src/static/js/buy-now.js handles insufficient balance scenarios
  • Settings Management: Complete data structures for thresholds, limits, and payment methods
  • Transaction Processing: Auto top-up transaction type and processing logic implemented

Critical Missing Components (15%)

1. API Routes Not Registered (HIGH PRIORITY - BLOCKING)

Issue: Credits controller methods exist but are NOT registered in src/routes/mod.rs

Missing Routes:

// REQUIRED: Add to src/routes/mod.rs after line 100 in /api scope:
.route("/wallet/buy-credits", web::post().to(WalletController::buy_credits))
.route("/wallet/sell-credits", web::post().to(WalletController::sell_credits))
.route("/wallet/transfer-credits", web::post().to(WalletController::transfer_credits))
.route("/wallet/check-affordability", web::get().to(WalletController::check_affordability))
.route("/wallet/instant-purchase", web::post().to(WalletController::instant_purchase))
.route("/wallet/auto-topup/status", web::get().to(WalletController::get_auto_topup_status))
.route("/wallet/auto-topup/trigger", web::post().to(WalletController::trigger_auto_topup))
.route("/wallet/auto-topup/configure", web::post().to(WalletController::configure_auto_topup))

2. Missing Controller Methods (HIGH PRIORITY - BLOCKING)

Issue: JavaScript calls these endpoints but controller methods don't exist

Required Methods in src/controllers/wallet.rs:

pub async fn check_affordability(session: Session, query: web::Query<AffordabilityQuery>) -> Result<impl Responder>
pub async fn get_auto_topup_status(session: Session) -> Result<impl Responder>
pub async fn trigger_auto_topup(session: Session, form: web::Json<TriggerAutoTopUpRequest>) -> Result<impl Responder>
pub async fn configure_auto_topup(session: Session, form: web::Json<ConfigureAutoTopUpRequest>) -> Result<impl Responder>

Required Request Structs:

#[derive(Debug, Deserialize)]
pub struct AffordabilityQuery {
    pub amount: Decimal,
}

#[derive(Debug, Deserialize)]
pub struct TriggerAutoTopUpRequest {
    pub required_amount: Decimal,
}

#[derive(Debug, Deserialize)]
pub struct ConfigureAutoTopUpRequest {
    pub enabled: bool,
    pub threshold_amount: Decimal,
    pub topup_amount: Decimal,
    pub payment_method_id: String,
    pub daily_limit: Option<Decimal>,
    pub monthly_limit: Option<Decimal>,
}

Issue: Found 93 TFP references in legal documents

Critical Updates Required:

  • src/views/legal/terms.html:89: "Transactions are conducted using the ThreeFold Point (TFP) system" → "USD Credits system"
  • src/views/legal/terms-service-providers.html: Update payment processing references
  • src/views/legal/terms-farmers.html: Update revenue sharing language
  • Service provider agreement modals: Update TFP references to Credits

4. Auto Top-Up UI Configuration (MEDIUM PRIORITY - FEATURE INCOMPLETE)

Issue: Users cannot configure auto top-up settings

Required Components:

  • Auto top-up settings section in src/views/dashboard/wallet.html
  • Configuration modal for threshold and top-up amounts
  • Payment method selection integration
  • Current settings display

Compilation Warnings Analysis

Total Warnings: 135 (Project builds successfully despite warnings)

Warning Categories:

  1. Unused Imports (20+ warnings): Safe to clean up

    • CustomerServiceData, SpendingRecord, PaymentStatus, SliceCombination
  2. Unused Variables (15+ warnings): Code quality issues

    • Variables marked as unused: rental, multi_node_pricing, user
  3. Dead Code (50+ warnings): Significant bloat

    • Unused builder patterns: SliceProductBuilder, NodeGroupBuilder
    • Unused service methods: search_products, filter_products_by_price_range
  4. Unsafe Code (1 warning): Potential security issue

    • creating a shared reference to mutable static in src/services/order.rs:42

Impact Assessment:

  • Compilation: Project builds successfully
  • ⚠️ Code Quality: Significant technical debt from unused code
  • ⚠️ Performance: Dead code increases binary size
  • Functionality: Warnings don't affect runtime behavior

Auto Top-Up Feature Assessment

Current Status: 75% Complete

What's Working:

  • Backend Service: AutoTopUpService in src/services/auto_topup.rs fully functional
  • Data Models: AutoTopUpSettings complete with persistence
  • JavaScript Integration: BuyNowManager handles insufficient balance scenarios
  • Transaction Types: AutoTopUp transaction type implemented

What's Missing:

  • API Endpoints: Controller methods not implemented
  • Route Registration: API routes not registered
  • UI Configuration: No settings page for users
  • Status Display: Current settings not shown in wallet

Auto Top-Up Flow (When Complete):

  1. User configures threshold ($10) and top-up amount ($50)
  2. User attempts purchase requiring $15 with $5 balance
  3. System detects insufficient funds
  4. Auto top-up triggers, adds $50 to balance
  5. Purchase completes successfully
  6. Transaction history shows both auto top-up and purchase

Completion Roadmap

🚀 Week 1: Critical Missing Features (9 hours) → 95% Complete, Production Ready

Priority 1: API Routes Registration (2 hours)

File: src/routes/mod.rs Action: Add missing wallet API routes to the /api scope after line 100

Priority 2: Missing Controller Methods (4 hours)

File: src/controllers/wallet.rs Action: Implement 4 missing controller methods with proper error handling

Files:

  • src/views/legal/terms.html
  • src/views/legal/terms-service-providers.html
  • src/views/legal/terms-farmers.html Action: Replace all TFP references with Credits terminology

🎨 Week 2: Enhancement Tasks (6 hours) → 98% Complete, Feature Complete

Auto Top-Up UI Configuration (6 hours)

File: src/views/dashboard/wallet.html Components:

  1. Settings section showing current auto top-up configuration
  2. Configuration modal with threshold and amount inputs
  3. Payment method selection
  4. Enable/disable toggle

Implementation Pattern: Follow existing modal patterns in wallet.html

🧹 Week 3: Optional Cleanup Tasks (8 hours) → 100% Complete, Optimized

Code Quality Improvements (8 hours)

High-Impact Cleanup:

  1. Remove dead code (50+ unused builder methods and service functions)
  2. Fix unused variables (15+ variables marked as unused)
  3. Clean unused imports (20+ unused import statements)
  4. Fix unsafe code (1 mutable static reference in order.rs)

Benefit: Reduced binary size, improved maintainability, cleaner codebase


Implementation Details

Week 1 Implementation Guide

1. API Routes Registration

// Add to src/routes/mod.rs after line 100:
.route("/wallet/buy-credits", web::post().to(WalletController::buy_credits))
.route("/wallet/sell-credits", web::post().to(WalletController::sell_credits))
.route("/wallet/transfer-credits", web::post().to(WalletController::transfer_credits))
.route("/wallet/check-affordability", web::get().to(WalletController::check_affordability))
.route("/wallet/instant-purchase", web::post().to(WalletController::instant_purchase))
.route("/wallet/auto-topup/status", web::get().to(WalletController::get_auto_topup_status))
.route("/wallet/auto-topup/trigger", web::post().to(WalletController::trigger_auto_topup))
.route("/wallet/auto-topup/configure", web::post().to(WalletController::configure_auto_topup))

2. Controller Method Implementation

Pattern: Follow existing controller methods in src/controllers/wallet.rs Error Handling: Use existing WalletResponse struct Session Management: Follow existing session handling patterns Persistence: Use UserPersistence::save_user_data() for settings

Search Pattern: Find all instances of "TFP", "ThreeFold Point", "token" Replace With: "Credits", "USD Credits", "credits" Maintain: Legal structure and formatting

Week 2 Implementation Guide

Auto Top-Up UI Components

Location: src/views/dashboard/wallet.html after line 100 Components:

  1. Settings card showing current configuration
  2. Bootstrap modal for configuration
  3. Form validation for amounts and limits
  4. Integration with existing wallet refresh functionality

JavaScript: Extend existing wallet JavaScript to handle auto top-up configuration


Architecture Assessment

Strengths of Current Implementation:

  1. Excellent Separation of Concerns: Credits logic properly separated from TFP backend
  2. Backward Compatibility: Maintains existing TFP infrastructure while providing Credits interface
  3. Consistent Patterns: Follows established builder patterns and service architecture
  4. Comprehensive Transaction Types: All necessary transaction types implemented
  5. Professional UI: Clean, intuitive user experience matching modern SaaS platforms

Technical Debt Assessment: LOW

The implementation is architecturally sound with minimal technical debt. The 135 compilation warnings are primarily unused development artifacts, not structural issues.

Scalability: EXCELLENT

The current architecture supports future enhancements:

  • Multiple payment methods
  • Advanced analytics
  • Enterprise features
  • International currency support

Testing Strategy

Week 1 Testing (Critical Path)

  1. API Endpoint Testing: Verify all new routes respond correctly
  2. Auto Top-Up Flow: Test complete insufficient balance → auto top-up → purchase flow
  3. Legal Document Review: Verify all TFP references updated
  4. Regression Testing: Ensure existing functionality unchanged

Week 2 Testing (Feature Complete)

  1. UI Configuration: Test auto top-up settings interface
  2. Form Validation: Test input validation and error handling
  3. Integration Testing: Test UI → API → backend flow

Week 3 Testing (Optimization)

  1. Performance Testing: Verify cleanup doesn't affect performance
  2. Code Quality: Verify no new warnings introduced
  3. Security Review: Verify unsafe code fixes

Deployment Readiness

Current State: 85% - NOT PRODUCTION READY

  • Auto top-up non-functional (missing API routes)
  • Legal documents contain incorrect terms
  • Core credits functionality works
  • UI completely transformed
  • Backend infrastructure solid

After Week 1: 95% - PRODUCTION READY

  • Auto top-up fully functional
  • Legal compliance achieved
  • All user-facing features complete

After Week 2: 98% - FEATURE COMPLETE

  • Professional auto top-up configuration
  • Complete user experience

After Week 3: 100% - PRODUCTION OPTIMIZED

  • Clean, maintainable codebase
  • No compilation warnings
  • Optimized performance

Success Metrics

Week 1 Success Criteria:

  • All 8 API routes registered and responding
  • Auto top-up flow works end-to-end
  • Zero TFP references in legal documents
  • All existing functionality preserved

Week 2 Success Criteria:

  • Users can configure auto top-up settings
  • Settings persist and display correctly
  • UI matches existing design patterns
  • Form validation works properly

Week 3 Success Criteria:

  • Zero compilation warnings
  • Binary size reduced
  • Code coverage maintained
  • Performance benchmarks met

Risk Assessment

Low Risk:

  • API Route Registration: Straightforward addition to existing patterns
  • Legal Document Updates: Simple find/replace operations
  • UI Implementation: Following established patterns

Medium Risk:

  • Controller Method Implementation: Requires proper error handling and session management
  • Auto Top-Up Logic: Complex interaction between frontend and backend

Mitigation Strategies:

  • Incremental Testing: Test each component as implemented
  • Rollback Plan: Git branching strategy for safe rollbacks
  • Code Review: Peer review for critical controller methods

Final Recommendation

Proceed immediately with Week 1 tasks to achieve production readiness. The foundation is excellent, and completion requires only straightforward implementation of existing patterns.

Total effort for production readiness: 9 hours

The credits system transformation has been expertly executed with professional-grade architecture. The remaining work is completion of existing patterns rather than complex new development.


Document Version: 1.0
Created: 2025-08-02
Status: Implementation Plan
Next Review: After Week 1 completion