Add admin vision lab and LLM vision verification

这个提交包含在:
cryptocommuniums-afk
2026-03-15 00:41:09 +08:00
父节点 20e183d2da
当前提交 ad83ce9c68
修改 18 个文件,包含 915 行新增16 行删除

查看文件

@@ -9,6 +9,12 @@ const parseBoolean = (value: string | undefined, fallback: boolean) => {
return value === "1" || value.toLowerCase() === "true";
};
const parseList = (value: string | undefined) =>
(value ?? "")
.split(",")
.map((item) => item.trim())
.filter(Boolean);
export const ENV = {
appId: process.env.VITE_APP_ID ?? "",
appPublicBaseUrl: process.env.APP_PUBLIC_BASE_URL ?? "",
@@ -16,6 +22,7 @@ export const ENV = {
databaseUrl: process.env.DATABASE_URL ?? "",
oAuthServerUrl: process.env.OAUTH_SERVER_URL ?? "",
ownerOpenId: process.env.OWNER_OPEN_ID ?? "",
adminUsernames: parseList(process.env.ADMIN_USERNAMES),
isProduction: process.env.NODE_ENV === "production",
forgeApiUrl: process.env.BUILT_IN_FORGE_API_URL ?? "",
forgeApiKey: process.env.BUILT_IN_FORGE_API_KEY ?? "",

查看文件

@@ -9,6 +9,7 @@ import { appRouter } from "../routers";
import { createContext } from "./context";
import { registerMediaProxy } from "./mediaProxy";
import { serveStatic } from "./static";
import { seedTutorials, seedVisionReferenceImages } from "../db";
function isPortAvailable(port: number): Promise<boolean> {
return new Promise(resolve => {
@@ -30,6 +31,9 @@ async function findAvailablePort(startPort: number = 3000): Promise<number> {
}
async function startServer() {
await seedTutorials();
await seedVisionReferenceImages();
const app = express();
const server = createServer(app);
registerMediaProxy(app);