Restore 0.1.5 version from stash

This commit is contained in:
liaibo
2025-12-08 19:56:24 +08:00
parent de189e938d
commit 8db3f4e32d
8578 changed files with 2703426 additions and 217 deletions
+48
View File
@@ -22,10 +22,12 @@ const rootDir = path.resolve(__dirname, "..");
const frontendDir = path.join(rootDir, "wolai-frontend");
const backendDir = path.join(rootDir, "wolai-backend");
const mineruDir = path.join(rootDir, "services", "mineru");
const searxngDir = path.join(rootDir, "services", "searxng-docker");
const baseEnv = { ...process.env };
const frontendEnv = { ...baseEnv };
const backendEnv = { ...baseEnv };
const mineruEnv = { ...baseEnv };
const searxngEnv = { ...baseEnv };
function loadEnvFile(filePath, targetEnv, { overrideSupabase = false } = {}) {
if (!fs.existsSync(filePath)) {
@@ -53,6 +55,7 @@ loadEnvFile(path.join(backendDir, ".env"), backendEnv, { overrideSupabase: true
loadEnvFile(path.join(rootDir, ".env.local"), backendEnv);
loadEnvFile(path.join(rootDir, ".env.local"), frontendEnv);
loadEnvFile(path.join(rootDir, ".env.local"), mineruEnv);
loadEnvFile(path.join(searxngDir, ".env"), searxngEnv);
function resolvePythonBin() {
const suffixes =
@@ -83,6 +86,9 @@ const skipCelery =
(process.env.SKIP_CELERY || "").toLowerCase() === "true";
const celeryCmdFromEnv = process.env.CELERY_CMD;
const redisUrl = process.env.REDIS_URL || "redis://localhost:6379/0";
const skipSearxng =
(process.env.SKIP_SEARXNG || "").toLowerCase() === "1" ||
(process.env.SKIP_SEARXNG || "").toLowerCase() === "true";
const tasks = [
{
@@ -208,6 +214,46 @@ function shutdown(code) {
process.on("SIGINT", () => shutdown(0));
process.on("SIGTERM", () => shutdown(0));
async function startSearxng() {
if (skipSearxng) {
logPrefix("searxng", "已设置 SKIP_SEARXNG,跳过 SearxNG 启动。");
return;
}
if (!fs.existsSync(searxngDir)) {
logPrefix("searxng", "未找到 services/searxng-docker 目录,跳过启动。");
return;
}
const envFile = path.join(searxngDir, ".env");
if (!fs.existsSync(envFile) && fs.existsSync(path.join(searxngDir, ".env.example"))) {
// 若未自定义 .env,则复制示例,避免 docker compose 缺变量
fs.copyFileSync(path.join(searxngDir, ".env.example"), envFile);
logPrefix("searxng", "未找到 .env,已从 .env.example 复制生成。请按需修改。");
}
return new Promise((resolve) => {
const cmd = "docker";
const args = ["compose", "up", "-d"];
logPrefix("searxng", `启动命令:${cmd} ${args.join(" ")}`);
const child = spawn(cmd, args, {
cwd: searxngDir,
env: searxngEnv,
stdio: "inherit",
shell: true,
});
child.on("exit", (code) => {
if (code === 0) {
logPrefix("searxng", "已启动或已在运行 (docker compose up -d)。");
} else {
logPrefix("searxng", `启动失败(退出码 ${code}),请检查 Docker 是否可用。`);
}
resolve();
});
child.on("error", (err) => {
logPrefix("searxng", `启动失败:${err.message}`);
resolve();
});
});
}
async function checkRedisReachable(urlString, timeoutMs = 2000) {
try {
const url = new URL(urlString);
@@ -239,6 +285,8 @@ async function checkRedisReachable(urlString, timeoutMs = 2000) {
}
async function main() {
await startSearxng();
let celeryScheduled = false;
if (!skipCelery) {
const celeryTask = {