# hermes-web-cli renew.dspy # Business logic for service renewal and management import json from datetime import datetime, timedelta def get_service_info(service_id: str) -> dict: """Get detailed service information including status and usage stats""" # This function will be called by the .ui files through data_url from hermes_web_cli.init import get_service_by_id service = get_service_by_id(service_id) if not service: return {"error": "Service not found"} # Add additional info like usage stats, renewal date, etc. service_info = service.copy() service_info.update({ "renewal_date": (datetime.now() + timedelta(days=30)).isoformat(), "usage_stats": { "total_sessions": 150, "active_sessions": 12, "api_calls_today": 2340 } }) return service_info def renew_service(service_id: str, renewal_period: str = "monthly") -> dict: """Renew a Hermes service subscription""" from hermes_web_cli.init import get_service_by_id service = get_service_by_id(service_id) if not service: return {"success": False, "error": "Service not found"} # Calculate new renewal date based on period now = datetime.now() if renewal_period == "monthly": new_renewal = now + timedelta(days=30) elif renewal_period == "yearly": new_renewal = now + timedelta(days=365) else: new_renewal = now + timedelta(days=30) # Update service in database (placeholder) renewed_service = service.copy() renewed_service.update({ "renewal_date": new_renewal.isoformat(), "status": "active", "last_renewed": now.isoformat() }) return {"success": True, "service": renewed_service} def get_renewal_options() -> list: """Get available renewal options""" return [ {"id": "monthly", "name": "月度续费", "price": "¥299/月"}, {"id": "quarterly", "name": "季度续费", "price": "¥799/季"}, {"id": "yearly", "name": "年度续费", "price": "¥2899/年"} ] def validate_renewal_request(service_id: str, payment_method: str) -> dict: """Validate renewal request before processing""" from hermes_web_cli.init import get_service_by_id service = get_service_by_id(service_id) if not service: return {"valid": False, "error": "Service not found"} if payment_method not in ["credit_card", "alipay", "wechat_pay"]: return {"valid": False, "error": "Invalid payment method"} return {"valid": True, "service_name": service["name"]} # Module exports for template access __all__ = [ 'get_service_info', 'renew_service', 'get_renewal_options', 'validate_renewal_request' ]