Spaces:
Build error
Build error
| # 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); | |
| ``` | |