File size: 1,854 Bytes
bcc8074
a650e63
bcc8074
a650e63
 
bcc8074
a650e63
 
 
 
 
 
 
 
 
bcc8074
a650e63
 
 
 
bcc8074
 
 
a650e63
bcc8074
 
 
 
a650e63
 
 
 
 
 
 
bcc8074
 
 
 
 
 
 
a650e63
bcc8074
a650e63
 
bcc8074
 
a650e63
 
 
 
 
 
 
 
 
 
bcc8074
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
Credit Service - Middleware-based credit management system.

Provides automatic credit tracking via middleware with complete audit trail.
Application layer is completely unaware of credit management.

Components:
- CreditServiceConfig: Route configuration with credit costs and types
- CreditMiddleware: Request/response-based credit handling
- CreditTransactionManager: Core credit transaction operations
- ResponseInspector: Response analysis for credit decisions
- credit_manager: Legacy refund logic (used by middleware)

Usage in app.py:
    from services.credit_service import CreditServiceConfig
    
    CreditServiceConfig.register(
        route_configs={
            "/gemini/analyze-image": {"cost": 1, "type": "sync"},
            "/gemini/generate-video": {"cost": 10, "type": "async"},
        }
    )
    
    app.add_middleware(CreditServiceConfig.get_middleware())
"""

from services.credit_service.config import CreditServiceConfig
from services.credit_service.middleware import CreditMiddleware
from services.credit_service.transaction_manager import (
    CreditTransactionManager,
    InsufficientCreditsError,
    TransactionNotFoundError,
    UserNotFoundError
)
from services.credit_service.response_inspector import ResponseInspector
from services.credit_service.credit_manager import (
    is_refundable_error,
    REFUNDABLE_ERROR_PATTERNS,
    NON_REFUNDABLE_ERROR_PATTERNS,
)

__all__ = [
    # Configuration
    'CreditServiceConfig',
    
    # Middleware
    'CreditMiddleware',
    
    # Transaction Manager
    'CreditTransactionManager',
    'InsufficientCreditsError',
    'TransactionNotFoundError',
    'UserNotFoundError',
    
    # Response Inspector
    'ResponseInspector',
    
    # Refund logic helpers
    'is_refundable_error',
    'REFUNDABLE_ERROR_PATTERNS',
    'NON_REFUNDABLE_ERROR_PATTERNS',
]