🎬 RetroToon Studio - Pipeline IA de recomposition de dessins animés ✨ Fonctionnalités: - Import vidéo avec 3 modes (Rapide/Qualité/Personnalisé) - Extraction frames robuste avec tolérance aux erreurs réseau - Détection de plans par histogramme chi-squared - Workspace NLE avec 6 modes de viewport - Timeline avec séquences, marqueurs et audio synchronisé - Loupe duale (zoom 2-8×, grille pixel) - Assistant IA en langage naturel - Segmentation par calques (SAM 2 architecture) - Administration des moteurs IA 🧠 Intelligence Artificielle: - Support multi-fournisseur LLM (Gemini 2.5 Flash + Built-in) - Configuration dynamique depuis l'admin panel - Fallback automatique entre fournisseurs - Analyse de frames par vision multimodale 🐛 Corrections: - Fix projects.get retournant undefined (tRPC interdit) - Fix frames.getByIndex même problème - Fix flux d'extraction interrompu par erreurs réseau isolées - Les frames sont maintenant enregistrées même si l'extraction est partielle 📦 Stack: React 19 + tRPC 11 + Tailwind 4 + Drizzle ORM + MySQL
26 lines
881 B
TypeScript
26 lines
881 B
TypeScript
import { describe, it, expect } from "vitest";
|
|
|
|
describe("Gemini API Key validation", () => {
|
|
it("should have GEMINI_API_KEY set in environment", () => {
|
|
const key = process.env.GEMINI_API_KEY;
|
|
expect(key).toBeDefined();
|
|
expect(key!.length).toBeGreaterThan(10);
|
|
expect(key).toMatch(/^AIza/); // Google API keys start with AIza
|
|
});
|
|
|
|
it("should be able to reach Gemini API with the key", async () => {
|
|
const key = process.env.GEMINI_API_KEY;
|
|
if (!key) throw new Error("GEMINI_API_KEY not set");
|
|
|
|
// Lightweight call to list models endpoint
|
|
const resp = await fetch(
|
|
`https://generativelanguage.googleapis.com/v1beta/models?key=${key}`,
|
|
{ method: "GET" }
|
|
);
|
|
|
|
expect(resp.status).toBe(200);
|
|
const data = await resp.json();
|
|
expect(data.models).toBeDefined();
|
|
expect(data.models.length).toBeGreaterThan(0);
|
|
});
|
|
});
|