schema.sql 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. -- Users table
  2. CREATE TABLE IF NOT EXISTS users (
  3. id INTEGER PRIMARY KEY AUTOINCREMENT,
  4. username TEXT NOT NULL UNIQUE,
  5. email TEXT UNIQUE,
  6. password_hash TEXT NOT NULL,
  7. role TEXT NOT NULL DEFAULT 'user',
  8. created_at DATETIME DEFAULT CURRENT_TIMESTAMP
  9. );
  10. -- God Logs table
  11. CREATE TABLE IF NOT EXISTS god_logs (
  12. id INTEGER PRIMARY KEY AUTOINCREMENT,
  13. god_user_id INTEGER NOT NULL,
  14. action TEXT NOT NULL,
  15. details TEXT,
  16. timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
  17. FOREIGN KEY (god_user_id) REFERENCES users(id) ON DELETE CASCADE
  18. );
  19. -- Personas table
  20. CREATE TABLE IF NOT EXISTS personas (
  21. id INTEGER PRIMARY KEY AUTOINCREMENT,
  22. owner_id INTEGER NOT NULL,
  23. name TEXT NOT NULL,
  24. title TEXT,
  25. bio TEXT,
  26. theories TEXT, -- JSON string
  27. stance TEXT,
  28. system_prompt TEXT,
  29. is_public BOOLEAN DEFAULT 0,
  30. created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  31. FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE
  32. );
  33. -- Moderators table
  34. CREATE TABLE IF NOT EXISTS moderators (
  35. id INTEGER PRIMARY KEY AUTOINCREMENT,
  36. name TEXT NOT NULL,
  37. title TEXT DEFAULT '主持人',
  38. bio TEXT,
  39. system_prompt TEXT,
  40. greeting_template TEXT,
  41. closing_template TEXT,
  42. summary_template TEXT,
  43. creator_id INTEGER NOT NULL,
  44. created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  45. FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE CASCADE
  46. );
  47. -- Forums table
  48. CREATE TABLE IF NOT EXISTS forums (
  49. id INTEGER PRIMARY KEY AUTOINCREMENT,
  50. topic TEXT NOT NULL,
  51. creator_id INTEGER NOT NULL,
  52. moderator_id INTEGER,
  53. status TEXT DEFAULT 'active',
  54. summary_history TEXT DEFAULT '[]',
  55. ablation_flags TEXT DEFAULT '{}',
  56. start_time DATETIME,
  57. end_time DATETIME,
  58. duration_minutes INTEGER DEFAULT 30,
  59. FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE CASCADE,
  60. FOREIGN KEY (moderator_id) REFERENCES moderators(id)
  61. );
  62. -- Forum Participants table
  63. CREATE TABLE IF NOT EXISTS forum_participants (
  64. forum_id INTEGER NOT NULL,
  65. persona_id INTEGER NOT NULL,
  66. thoughts_history TEXT DEFAULT '[]',
  67. PRIMARY KEY (forum_id, persona_id),
  68. FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE,
  69. FOREIGN KEY (persona_id) REFERENCES personas(id) ON DELETE CASCADE
  70. );
  71. -- Messages table
  72. CREATE TABLE IF NOT EXISTS messages (
  73. id INTEGER PRIMARY KEY AUTOINCREMENT,
  74. forum_id INTEGER NOT NULL,
  75. persona_id INTEGER,
  76. moderator_id INTEGER,
  77. speaker_name TEXT NOT NULL,
  78. content TEXT NOT NULL,
  79. turn_count INTEGER DEFAULT 0,
  80. thought TEXT,
  81. timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
  82. FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE,
  83. FOREIGN KEY (persona_id) REFERENCES personas(id),
  84. FOREIGN KEY (moderator_id) REFERENCES moderators(id)
  85. );
  86. -- Observations table
  87. CREATE TABLE IF NOT EXISTS observations (
  88. id INTEGER PRIMARY KEY AUTOINCREMENT,
  89. user_id INTEGER NOT NULL,
  90. forum_id INTEGER NOT NULL,
  91. joined_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  92. left_at DATETIME,
  93. FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
  94. FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE
  95. );
  96. -- System Logs table
  97. CREATE TABLE IF NOT EXISTS system_logs (
  98. id INTEGER PRIMARY KEY AUTOINCREMENT,
  99. forum_id INTEGER NOT NULL,
  100. level TEXT DEFAULT 'info',
  101. source TEXT,
  102. content TEXT NOT NULL,
  103. timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
  104. FOREIGN KEY (forum_id) REFERENCES forums(id) ON DELETE CASCADE
  105. );