feat(遊戲化): 新增大廳、附身、時間流、後日談進度等遊戲化系統功能

新增角色大廳(lobby)邀約與通話、附身(possession)、時鐘(clock)抽象、
時間流與睡眠負債、後日談進度、行為選擇與旁觀反應等模組,並補齊對應冒煙
測試(R~V)與單元測試;同步調整 web/mobile 對應頁面與元件。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-20 09:10:26 +08:00
co-authored by Claude Sonnet 5
parent 127a59dafd
commit 1bea06e3cd
195 changed files with 17219 additions and 738 deletions
+9 -1
View File
@@ -1,9 +1,17 @@
import { PrismaClient } from "../generated/client.js";
import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
export function createPrismaClient(): InstanceType<typeof PrismaClient> {
export interface CreatePrismaClientOptions {
// T33:供測試量測查詢次數用(驗證批次查詢不隨資料量線性成長),一般呼叫端不需要帶這個選項。
logQueries?: boolean;
}
export function createPrismaClient(options: CreatePrismaClientOptions = {}): InstanceType<typeof PrismaClient> {
const url = process.env.DATABASE_URL ?? "file:./prisma/dev.db";
const adapter = new PrismaBetterSqlite3({ url });
if (options.logQueries) {
return new PrismaClient({ adapter, log: [{ emit: "event", level: "query" }] });
}
return new PrismaClient({ adapter });
}