Initial WallMuse project
This commit is contained in:
30
scripts/health-check.sh
Executable file
30
scripts/health-check.sh
Executable file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
echo "WallMuse health check"
|
||||
echo "Workspace: $ROOT_DIR"
|
||||
|
||||
if command -v docker >/dev/null 2>&1; then
|
||||
docker compose -f infra/docker-compose.yml --env-file .env ps
|
||||
else
|
||||
echo "docker is not installed"
|
||||
fi
|
||||
|
||||
check_tcp() {
|
||||
local name="$1"
|
||||
local host="$2"
|
||||
local port="$3"
|
||||
if timeout 2 bash -c "</dev/tcp/$host/$port" 2>/dev/null; then
|
||||
echo "ok: $name $host:$port"
|
||||
else
|
||||
echo "warn: $name $host:$port is not reachable"
|
||||
fi
|
||||
}
|
||||
|
||||
check_tcp postgres 127.0.0.1 5432
|
||||
check_tcp redis 127.0.0.1 6379
|
||||
check_tcp minio 127.0.0.1 9000
|
||||
check_tcp minio-console 127.0.0.1 9001
|
||||
19
scripts/run-mock-generation.ts
Normal file
19
scripts/run-mock-generation.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { JsonWallMuseDb } from "../packages/db/src/json-store.js";
|
||||
import type { GenerationWorkerJobData } from "../packages/db/src/json-store.js";
|
||||
import { GenerationProcessor } from "../apps/worker-generation/src/processor.js";
|
||||
const db = JsonWallMuseDb.fromEnv();
|
||||
const processor = new GenerationProcessor(db);
|
||||
const jobData: GenerationWorkerJobData = { groupId: crypto.randomUUID(), taskId: crypto.randomUUID(), userId: "user_mock", mode: "text_to_image", prompt: "futuristic city at sunrise, clean wallpaper composition", negativePrompt: "text, logo, watermark", resolution: "2k", providerId: "00000000-0000-4000-8000-000000000001", providerSlug: "mock", modelId: "00000000-0000-4000-8000-000000000101", modelSlug: "mock-wallpaper-v1", seed: 42 };
|
||||
await db.seedQueuedGeneration(jobData);
|
||||
console.log(`queued group=${jobData.groupId} task=${jobData.taskId}`);
|
||||
await processor.process({ data: jobData, updateProgress: async (progress: number) => console.log(`progress=${progress}`) } as never);
|
||||
const state = await db.read();
|
||||
const group = state.generationGroups.find((item) => item.id === jobData.groupId);
|
||||
const assets = group?.assets ?? [];
|
||||
const logs = state.providerCallLogs.filter((item) => item.groupId === jobData.groupId);
|
||||
console.log(`final status=${group?.status}`);
|
||||
console.log(`assets=${assets.map((asset) => `${asset.kind}:${asset.status}`).join(",")}`);
|
||||
console.log(`provider_call_logs=${logs.length}`);
|
||||
if (group?.status !== "succeeded") throw new Error(`Expected succeeded, received ${group?.status ?? "missing"}`);
|
||||
if (!["master", "landscape", "portrait"].every((kind) => assets.some((asset) => asset.kind === kind && asset.status === "active"))) throw new Error("Expected active master, landscape and portrait assets");
|
||||
if (logs.length < 3 || !logs.every((log) => log.status === "succeeded")) throw new Error("Expected succeeded provider_call_logs for each generated asset");
|
||||
Reference in New Issue
Block a user