Spaces:
Build error
Build error
File size: 10,319 Bytes
a282d4b | 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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | # BankBot AI β Entity Relationship Diagram
## ER Diagram (Text Notation)
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USERS β
β PK id VARCHAR UUID β
β email VARCHAR UNIQUE NOT NULL β
β password_hash VARCHAR NOT NULL (bcrypt, rounds=12) β
β profile_data JSON {name, phone, avatar, plan} β
β financial_personality VARCHAR (Saver/Investor/Balanced/...) β
β ai_personalization_settings JSON β
β created_at TIMESTAMP β
β updated_at TIMESTAMP β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β 1
ββββββββββββββββββββββΌβββββββββββββββββββββββββββββ
β N β N β N
βββββββββββΌβββββββββββ ββββββββΌβββββββββββββββ ββββββββββββΌβββββββββββ
β ACCOUNTS β β SUBSCRIPTIONS β β GOALS β
β PK id UUID β β PK id UUID β β PK id UUID β
β FK user_id β β FK user_id β β FK user_id β
β type VARCHAR β β merchant VARCHAR β β title VARCHAR β
β (checking/ β β amount FLOAT β β target_amount β
β savings/ β β billing_cycle β β current_amount β
β investment) β β active BOOLEAN β β target_date β
β balance FLOAT β β ai_usage_ β β ai_generated_ β
β currency VARCHARβ β detection JSON β β plan JSON β
β status VARCHAR β ββββββββββββββββββββββ-ββ βββββββββββββββββββ-βββ
βββββββββββ¬ββββββββββββ
β 1
β N
βββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TRANSACTIONS β
β PK id VARCHAR UUID β
β FK account_id β ACCOUNTS.id β
β amount FLOAT NOT NULL β
β type VARCHAR (credit / debit) β
β category VARCHAR (Food/Shopping/Income/...) β
β merchant VARCHAR β
β timestamp TIMESTAMP β
β tags JSON [] β
β ai_generated_metadata JSON {} β
β spending_emotion_label VARCHAR (impulsive/planned/recurring) β
ββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ
β 1
β 0..1
ββββββββββββΌβββββββββββββββ
β FRAUD_LOGS β
β PK id UUID β
β FK transaction_id β
β risk_score FLOAT β
β (0.0 β 1.0) β
β suspicious_activity_ β
β details TEXT β
β status VARCHAR β
β (pending/resolved/ β
β false_positive) β
βββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INVESTMENTS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β asset_name VARCHAR (S&P 500, AAPL, BTC, ...) β
β type VARCHAR (stock/crypto/mutual_fund/bond) β
β amount_invested FLOAT β
β current_value FLOAT β
β portfolio_allocation FLOAT (percentage) β
β ai_risk_analysis JSON {risk, expected_return, rec} β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β NOTIFICATIONS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β title VARCHAR NOT NULL β
β message TEXT NOT NULL β
β type VARCHAR (alert/insight/warning) β
β read_status BOOLEAN DEFAULT false β
β created_at TIMESTAMP β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI_INSIGHTS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β type VARCHAR (recommendation/briefing/cashflow) β
β content TEXT NOT NULL β
β created_at TIMESTAMP β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ANALYTICS_SNAPSHOTS β
β PK id VARCHAR UUID β
β FK user_id β USERS.id β
β date TIMESTAMP NOT NULL β
β total_balance FLOAT β
β total_spending FLOAT β
β total_savings FLOAT β
β financial_score FLOAT β
β trends_json JSON β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
## Relationships Summary
| From | To | Type | Description |
|------|----|------|-------------|
| USERS | ACCOUNTS | 1:N | User has multiple bank accounts |
| USERS | SUBSCRIPTIONS | 1:N | User has multiple subscriptions |
| USERS | GOALS | 1:N | User has multiple financial goals |
| USERS | INVESTMENTS | 1:N | User has multiple investments |
| USERS | NOTIFICATIONS | 1:N | User receives notifications |
| USERS | AI_INSIGHTS | 1:N | User has AI-generated insights |
| USERS | ANALYTICS_SNAPSHOTS | 1:N | Daily financial snapshots |
| ACCOUNTS | TRANSACTIONS | 1:N | Account has many transactions |
| TRANSACTIONS | FRAUD_LOGS | 1:0..1 | Transaction may have one fraud log |
## Indexes (Performance)
```sql
-- Primary lookup patterns
CREATE INDEX idx_transactions_account_id ON transactions(account_id);
CREATE INDEX idx_transactions_timestamp ON transactions(timestamp DESC);
CREATE INDEX idx_transactions_category ON transactions(category);
CREATE INDEX idx_fraud_logs_transaction ON fraud_logs(transaction_id);
CREATE INDEX idx_notifications_user_read ON notifications(user_id, read_status);
CREATE INDEX idx_accounts_user_id ON accounts(user_id);
CREATE INDEX idx_goals_user_id ON goals(user_id);
CREATE INDEX idx_investments_user_id ON investments(user_id);
```
|