| import sqlite3 |
| import os |
| import sys |
|
|
| |
| sys.path.append(os.path.dirname(os.path.abspath(__file__))) |
| from config import DB_PATH |
|
|
| def init_db(): |
| |
| os.makedirs(os.path.dirname(DB_PATH), exist_ok=True) |
| |
| conn = sqlite3.connect(DB_PATH) |
| cursor = conn.cursor() |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS keyword ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| word TEXT NOT NULL, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS competitor_account ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| account_name TEXT NOT NULL, |
| platform TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS own_account ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| account_name TEXT NOT NULL, |
| platform TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS crawl_task ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| target_type TEXT, |
| target_value TEXT, |
| status TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS raw_note ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| source_platform TEXT, |
| content TEXT, |
| author TEXT, |
| url TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS cleaned_note ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| raw_note_id INTEGER, |
| cleaned_content TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| FOREIGN KEY (raw_note_id) REFERENCES raw_note(id) |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS content_material ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| title TEXT, |
| body TEXT, |
| type TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS prompt_template ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| name TEXT, |
| template_content TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
|
|
| |
| cursor.execute("SELECT count(*) FROM prompt_template") |
| if cursor.fetchone()[0] == 0: |
| system_prompt = """Rewrite the following material to be engaging for Xiaohongshu. |
| |
| IMPORTANT COMPLIANCE GUIDELINES (小红书笔记十不要原则): |
| 1. 严禁低俗擦边(如性暗示、暴露)和引人不适(如血腥、恐怖)的内容。 |
| 2. 严禁模板化洗稿,追求原创真实,不高度雷同。 |
| 3. 禁止利用特殊身份(如医生、专家)进行无授权的营销背书。 |
| 4. 禁止虚假价格、虚构原价或虚假承诺(如发货时效不符)。 |
| 5. 禁止过度修图、滤镜失真、P图夸大商品效果,避免货不对板。 |
| 6. 禁止向微信、淘宝、抖音、B站、微博等第三方平台导流,禁止留联系方式。 |
| 7. 禁止付费互动,禁止通过送福利等方式诱导用户点赞、关注或抽奖。 |
| 8. 严禁炫富内容(如晒账单、鼓吹财富自由等超出常人消费能力的行为)。 |
| 9. 禁止网络暴力、挂人或挑起对立。 |
| 10. 禁止使用极限用语(如国家级、最高级、第一等)、封建迷信用语及虚假医疗功效用语。 |
| |
| Please ensure the rewritten content strictly follows the above guidelines. |
| |
| Material to rewrite:""" |
| cursor.execute("INSERT INTO prompt_template (name, template_content) VALUES (?, ?)", ("Compliance Rewrite", system_prompt)) |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS generated_post ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| material_id INTEGER, |
| prompt_id INTEGER, |
| content TEXT, |
| status TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| FOREIGN KEY (material_id) REFERENCES content_material(id), |
| FOREIGN KEY (prompt_id) REFERENCES prompt_template(id) |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS publish_record ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| post_id INTEGER, |
| account_id INTEGER, |
| platform TEXT, |
| status TEXT, |
| publish_url TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| FOREIGN KEY (post_id) REFERENCES generated_post(id), |
| FOREIGN KEY (account_id) REFERENCES own_account(id) |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS interaction_record ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| publish_record_id INTEGER, |
| user_name TEXT, |
| interaction_type TEXT, |
| content TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| FOREIGN KEY (publish_record_id) REFERENCES publish_record(id) |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS lead ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| interaction_id INTEGER, |
| contact_info TEXT, |
| status TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| FOREIGN KEY (interaction_id) REFERENCES interaction_record(id) |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS bd_followup ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| lead_id INTEGER, |
| followup_content TEXT, |
| followup_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| FOREIGN KEY (lead_id) REFERENCES lead(id) |
| ) |
| ''') |
| |
| |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS system_error_log ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| module_name TEXT, |
| error_message TEXT, |
| stack_trace TEXT, |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| |
| conn.commit() |
| conn.close() |
| print(f"Database initialized successfully with 14 tables at {DB_PATH}") |
|
|
| if __name__ == "__main__": |
| init_db() |
|
|