Platform bundle: marketing publish, IT ops, packaging, agents mesh.
Volledige Foodlinkk Command Center uitbreiding met social automatisering, reclamefolder filters, Proxmox monitoring en documentatie.
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
-- Retail CRM intelligence layer
|
||||
CREATE TABLE IF NOT EXISTS supermarket_contacts (
|
||||
id SERIAL PRIMARY KEY,
|
||||
supermarket_id INTEGER NOT NULL REFERENCES supermarkets(id) ON DELETE CASCADE,
|
||||
role VARCHAR(64) NOT NULL DEFAULT 'manager',
|
||||
full_name VARCHAR(255),
|
||||
phone VARCHAR(32),
|
||||
email VARCHAR(255),
|
||||
linkedin_url VARCHAR(512),
|
||||
source VARCHAR(100),
|
||||
confidence NUMERIC(3,2) DEFAULT 0.50,
|
||||
verified_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_supermarket_contacts_store ON supermarket_contacts(supermarket_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_supermarket_contacts_role ON supermarket_contacts(role);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS supermarket_profiles (
|
||||
supermarket_id INTEGER PRIMARY KEY REFERENCES supermarkets(id) ON DELETE CASCADE,
|
||||
staff_count_estimate INTEGER,
|
||||
manager_name VARCHAR(255),
|
||||
manager_phone VARCHAR(32),
|
||||
manager_email VARCHAR(255),
|
||||
services JSONB DEFAULT '{}'::jsonb,
|
||||
facilities JSONB DEFAULT '{}'::jsonb,
|
||||
web_data JSONB DEFAULT '{}'::jsonb,
|
||||
scrape_url VARCHAR(512),
|
||||
last_scraped_at TIMESTAMPTZ,
|
||||
data_completeness NUMERIC(3,2) DEFAULT 0,
|
||||
notes TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS client_supermarket_links (
|
||||
id SERIAL PRIMARY KEY,
|
||||
client_id INTEGER NOT NULL REFERENCES clients(id) ON DELETE CASCADE,
|
||||
supermarket_id INTEGER NOT NULL REFERENCES supermarkets(id) ON DELETE CASCADE,
|
||||
deal_id INTEGER REFERENCES deals(id) ON DELETE SET NULL,
|
||||
relationship_type VARCHAR(64) DEFAULT 'prospect',
|
||||
notes TEXT,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
UNIQUE(client_id, supermarket_id)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_csl_client ON client_supermarket_links(client_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_csl_store ON client_supermarket_links(supermarket_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS halal_certifications (
|
||||
id SERIAL PRIMARY KEY,
|
||||
supermarket_id INTEGER REFERENCES supermarkets(id) ON DELETE SET NULL,
|
||||
certifier VARCHAR(100) NOT NULL,
|
||||
certificate_number VARCHAR(100),
|
||||
business_name VARCHAR(255),
|
||||
address TEXT,
|
||||
city VARCHAR(100),
|
||||
expiry_date DATE,
|
||||
status VARCHAR(32) DEFAULT 'active',
|
||||
registry_source VARCHAR(100),
|
||||
matched_confidence NUMERIC(3,2),
|
||||
raw_data JSONB DEFAULT '{}'::jsonb,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_halal_cert_store ON halal_certifications(supermarket_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_halal_cert_status ON halal_certifications(status);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS retail_opportunity_scores (
|
||||
supermarket_id INTEGER PRIMARY KEY REFERENCES supermarkets(id) ON DELETE CASCADE,
|
||||
halal_opportunity_score NUMERIC(5,2),
|
||||
market_potential_score NUMERIC(5,2),
|
||||
factors JSONB DEFAULT '{}'::jsonb,
|
||||
computed_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_retail_opp_halal ON retail_opportunity_scores(halal_opportunity_score DESC);
|
||||
|
||||
ALTER TABLE supermarkets ADD COLUMN IF NOT EXISTS employee_count INTEGER;
|
||||
ALTER TABLE supermarkets ADD COLUMN IF NOT EXISTS manager_name VARCHAR(255);
|
||||
ALTER TABLE supermarkets ADD COLUMN IF NOT EXISTS enrichment_score NUMERIC(3,2) DEFAULT 0;
|
||||
ALTER TABLE supermarkets ADD COLUMN IF NOT EXISTS halal_opportunity_score NUMERIC(5,2);
|
||||
|
||||
INSERT INTO data_providers (name, provider_type, config, is_active) VALUES
|
||||
('halal_registry', 'scrape', '{"sources": ["osm", "hqc", "manual"]}', true),
|
||||
('branch_scraper', 'scrape', '{"chains": ["ah", "jumbo", "plus", "lidl", "aldi", "dirk"]}', true),
|
||||
('market_trends', 'api', '{"categories": ["kant-en-klaar", "halal", "ready-meals"]}', true)
|
||||
ON CONFLICT (name) DO UPDATE SET config = EXCLUDED.config, is_active = true;
|
||||
Reference in New Issue
Block a user