File size: 3,540 Bytes
2e5b4a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
-- SQLite Database Schema for Zenith Unified Enterprise Platform

-- 1. FINANCIAL AUDIT TABLES
CREATE TABLE IF NOT EXISTS dim_accounts (
    account_key INTEGER PRIMARY KEY AUTOINCREMENT,
    account_code TEXT UNIQUE NOT NULL,
    account_name TEXT NOT NULL,
    account_class TEXT NOT NULL, -- Asset, Liability, Equity, Revenue, Expense
    account_subclass TEXT,
    is_active INTEGER DEFAULT 1
);

CREATE TABLE IF NOT EXISTS dim_entities (
    entity_key INTEGER PRIMARY KEY AUTOINCREMENT,
    entity_code TEXT UNIQUE NOT NULL,
    entity_name TEXT NOT NULL,
    country TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS dim_users (
    user_key INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id TEXT UNIQUE NOT NULL,
    username TEXT NOT NULL,
    department TEXT NOT NULL,
    clearance_level TEXT NOT NULL -- Standard, Manager, Auditor
);

CREATE TABLE IF NOT EXISTS fact_journal_entries (
    entry_key INTEGER PRIMARY KEY AUTOINCREMENT,
    entry_id TEXT NOT NULL,
    account_key INTEGER REFERENCES dim_accounts(account_key),
    entity_key INTEGER REFERENCES dim_entities(entity_key),
    user_key INTEGER REFERENCES dim_users(user_key),
    transaction_date TEXT NOT NULL,
    debit_amount REAL DEFAULT 0.0,
    credit_amount REAL DEFAULT 0.0,
    is_manual_override INTEGER DEFAULT 0,
    posted_by TEXT NOT NULL,
    approved_by TEXT NOT NULL,
    anomaly_score REAL DEFAULT 0.0,
    benford_deviation REAL DEFAULT 0.0,
    risk_score REAL DEFAULT 0.0
);

CREATE TABLE IF NOT EXISTS fact_audit_log (
    audit_key INTEGER PRIMARY KEY AUTOINCREMENT,
    entry_id TEXT UNIQUE NOT NULL,
    audit_date TEXT NOT NULL,
    analyst_status TEXT DEFAULT 'PENDING',
    llm_determination TEXT,
    llm_audit_summary TEXT
);

-- 2. BRAND SENTIMENT TABLES (Hinglish/English social reviews)
CREATE TABLE IF NOT EXISTS dim_sentiment_channels (
    channel_key INTEGER PRIMARY KEY AUTOINCREMENT,
    platform_name TEXT NOT NULL, -- Twitter, Reddit, YouTube
    author_handle TEXT NOT NULL,
    follower_cohort TEXT
);

CREATE TABLE IF NOT EXISTS fact_brand_reviews (
    review_key INTEGER PRIMARY KEY AUTOINCREMENT,
    comment_id TEXT UNIQUE NOT NULL,
    channel_key INTEGER REFERENCES dim_sentiment_channels(channel_key),
    raw_text TEXT NOT NULL,
    normalized_text TEXT,
    sentiment_label TEXT, -- Positive, Negative, Neutral
    confidence_score REAL,
    post_timestamp TEXT NOT NULL
);

-- 3. COMPETITOR MARKET & PRICING TABLES (Dark patterns tracking)
CREATE TABLE IF NOT EXISTS dim_competitor_retailers (
    retailer_key INTEGER PRIMARY KEY AUTOINCREMENT,
    retailer_name TEXT UNIQUE NOT NULL,
    domain_url TEXT NOT NULL,
    country TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS fact_retail_prices (
    price_key INTEGER PRIMARY KEY AUTOINCREMENT,
    retailer_key INTEGER REFERENCES dim_competitor_retailers(retailer_key),
    product_sku TEXT NOT NULL,
    product_name TEXT NOT NULL,
    cart_price REAL NOT NULL,
    checkout_price REAL NOT NULL,
    price_inflation_pct REAL NOT NULL,
    is_violation INTEGER DEFAULT 0, -- 1 if checkout_price > cart_price (drip pricing)
    violation_category TEXT,       -- DRIP_PRICING, HIDDEN_FEES, FAKE_SCARCITY
    timestamp TEXT NOT NULL
);

-- Performance indices
CREATE INDEX IF NOT EXISTS idx_fje_entry_id ON fact_journal_entries(entry_id);
CREATE INDEX IF NOT EXISTS idx_fje_date ON fact_journal_entries(transaction_date);
CREATE INDEX IF NOT EXISTS idx_fbr_comment ON fact_brand_reviews(comment_id);
CREATE INDEX IF NOT EXISTS idx_frp_sku ON fact_retail_prices(product_sku);