初始提交:餐智库 CIBank 餐饮行业知识库
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
PRAGMA journal_mode = WAL;
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
-- 文章表:公众号文章 + 视频号ASR转写文本
|
||||
CREATE TABLE IF NOT EXISTS articles (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
canonical_url TEXT NOT NULL UNIQUE,
|
||||
source TEXT NOT NULL DEFAULT 'hongcan', -- 来源平台
|
||||
source_name TEXT, -- 公众号名称 / 视频号名称
|
||||
source_type TEXT NOT NULL DEFAULT '公众号', -- 公众号 | 视频号
|
||||
title TEXT,
|
||||
author TEXT,
|
||||
published_at TEXT,
|
||||
summary TEXT,
|
||||
content TEXT,
|
||||
content_hash TEXT,
|
||||
category TEXT, -- 赛道:茶饮咖啡/快餐/火锅/正餐/烘焙/供应链/综合
|
||||
crawl_status TEXT NOT NULL DEFAULT 'pending', -- pending | success | failed
|
||||
retry_count INTEGER NOT NULL DEFAULT 0,
|
||||
last_error TEXT,
|
||||
media_url TEXT, -- 原始视频文件路径(视频号专用)
|
||||
discovered_at TEXT NOT NULL,
|
||||
crawled_at TEXT,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_articles_published_at ON articles(published_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_articles_crawl_status ON articles(crawl_status, retry_count);
|
||||
CREATE INDEX IF NOT EXISTS idx_articles_source_type ON articles(source_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_articles_category ON articles(category);
|
||||
|
||||
-- 采集运行记录
|
||||
CREATE TABLE IF NOT EXISTS crawl_runs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
started_at TEXT NOT NULL,
|
||||
finished_at TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'running',
|
||||
source_type TEXT NOT NULL DEFAULT '公众号',
|
||||
discovered_count INTEGER NOT NULL DEFAULT 0,
|
||||
inserted_count INTEGER NOT NULL DEFAULT 0,
|
||||
updated_count INTEGER NOT NULL DEFAULT 0,
|
||||
failed_count INTEGER NOT NULL DEFAULT 0,
|
||||
message TEXT
|
||||
);
|
||||
|
||||
-- AI 结构化分析结果
|
||||
CREATE TABLE IF NOT EXISTS ai_analyses (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
article_id INTEGER NOT NULL,
|
||||
model TEXT NOT NULL,
|
||||
analysis_type TEXT NOT NULL DEFAULT 'editorial',
|
||||
result_json TEXT NOT NULL, -- 完整结构化JSON
|
||||
content_hash TEXT,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL,
|
||||
UNIQUE(article_id, model, analysis_type),
|
||||
FOREIGN KEY(article_id) REFERENCES articles(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_ai_analyses_article ON ai_analyses(article_id, updated_at);
|
||||
|
||||
-- 向量嵌入表(用于RAG检索)
|
||||
CREATE TABLE IF NOT EXISTS embeddings (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
article_id INTEGER NOT NULL,
|
||||
chunk_index INTEGER NOT NULL DEFAULT 0,
|
||||
chunk_text TEXT NOT NULL,
|
||||
embedding BLOB, -- JSON序列化的float数组
|
||||
model TEXT NOT NULL,
|
||||
content_hash TEXT,
|
||||
created_at TEXT NOT NULL,
|
||||
FOREIGN KEY(article_id) REFERENCES articles(id) ON DELETE CASCADE,
|
||||
UNIQUE(article_id, chunk_index, model)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_embeddings_article ON embeddings(article_id);
|
||||
|
||||
-- 品牌实体库
|
||||
CREATE TABLE IF NOT EXISTS brands (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
category TEXT,
|
||||
stores INTEGER DEFAULT 0,
|
||||
avg_price INTEGER DEFAULT 0,
|
||||
model TEXT, -- 直营 | 加盟 | 直营+加盟
|
||||
city_tier_json TEXT DEFAULT '[]', -- [{tier, pct}]
|
||||
trend_json TEXT DEFAULT '[]', -- 近12个月门店数
|
||||
latest_news TEXT,
|
||||
news_date TEXT,
|
||||
growth REAL DEFAULT 0,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
-- 行业信号(跨文章聚合)
|
||||
CREATE TABLE IF NOT EXISTS industry_signals (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
signal_date TEXT NOT NULL,
|
||||
title TEXT NOT NULL,
|
||||
summary TEXT NOT NULL,
|
||||
trend TEXT NOT NULL DEFAULT 'emerging',
|
||||
confidence REAL NOT NULL DEFAULT 0.5,
|
||||
implications_json TEXT NOT NULL DEFAULT '[]',
|
||||
article_ids_json TEXT NOT NULL DEFAULT '[]',
|
||||
tags_json TEXT NOT NULL DEFAULT '[]',
|
||||
model TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL,
|
||||
UNIQUE(signal_date, title)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_industry_signals_date ON industry_signals(signal_date DESC, confidence DESC);
|
||||
|
||||
-- 报告表
|
||||
CREATE TABLE IF NOT EXISTS reports (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
title TEXT NOT NULL,
|
||||
report_date TEXT NOT NULL,
|
||||
period TEXT,
|
||||
highlights_json TEXT NOT NULL DEFAULT '[]',
|
||||
sections_json TEXT NOT NULL DEFAULT '[]',
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_reports_date ON reports(report_date DESC);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pipeline_runs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
run_type TEXT NOT NULL,
|
||||
started_at TEXT NOT NULL,
|
||||
finished_at TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'running',
|
||||
current_step TEXT,
|
||||
steps_json TEXT NOT NULL DEFAULT '{}',
|
||||
error_message TEXT,
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_pipeline_runs_started ON pipeline_runs(started_at DESC);
|
||||
|
||||
-- 信源配置表(公众号 + 视频号)
|
||||
CREATE TABLE IF NOT EXISTS sources (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
source_type TEXT NOT NULL DEFAULT '公众号', -- 公众号 | 视频号
|
||||
name TEXT NOT NULL, -- 信源名称(公众号名称/视频号账号名)
|
||||
finder TEXT, -- 视频号 finder ID(视频号专用)
|
||||
list_url TEXT, -- 列表页URL(公众号专用)
|
||||
download_dir TEXT, -- 下载目录(视频号专用)
|
||||
enabled INTEGER NOT NULL DEFAULT 1, -- 是否启用 1/0
|
||||
last_crawled_at TEXT, -- 最近采集时间
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL,
|
||||
UNIQUE(source_type, name)
|
||||
);
|
||||
Reference in New Issue
Block a user