feat(plugin): AI 审美批改 - 增加结构化视觉分析与精准标注 (#387)
* feat(portrait-clearance): 肖像排查 - 增加画布插件与本机检测链路 * fix(web): 插件中心 - 修复应用插件筛选与自动定位 * feat(plugin): AI审美批改 - 完成分析报告与问题标注闭环
This commit is contained in:
35
web/src/lib/plugins/builtin/ai-art-critique.ts
Normal file
35
web/src/lib/plugins/builtin/ai-art-critique.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { registerPlugin } from "@/lib/plugins/plugin-registry";
|
||||
import type { PluginManifest, RegisteredPlugin } from "@/lib/plugins/plugin-types";
|
||||
|
||||
import { ART_CRITIQUE_NODE_TYPE, ART_CRITIQUE_PLUGIN_ID } from "@/lib/art-critique/contracts";
|
||||
|
||||
const manifest: PluginManifest = {
|
||||
apiVersion: "yingce.plugin/v1",
|
||||
id: ART_CRITIQUE_PLUGIN_ID,
|
||||
name: "AI 审美批改",
|
||||
version: "0.1.0",
|
||||
description: "分析图片的构图、色彩、光线和比例问题,输出结构化批改报告与可视化标注。",
|
||||
author: "影策团队",
|
||||
surfaces: ["node", "fullscreen"],
|
||||
permissions: ["canvas.read", "canvas.write", "media.read", "ai.text"],
|
||||
trusted: true,
|
||||
runtime: { backend: "trusted-backend", web: "declarative" },
|
||||
contributes: {
|
||||
canvasNodes: [
|
||||
{
|
||||
id: ART_CRITIQUE_NODE_TYPE,
|
||||
label: "AI 审美批改",
|
||||
defaultTitle: "AI 审美批改",
|
||||
defaultSize: { width: 560, height: 420 },
|
||||
schema: { type: "object", properties: { artCritique: { type: "object" } } },
|
||||
renderer: "declarative",
|
||||
acceptsInputKind: "image",
|
||||
showOutputConnection: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
export const artCritiquePlugin: RegisteredPlugin = { manifest };
|
||||
|
||||
registerPlugin(artCritiquePlugin);
|
||||
@@ -2,3 +2,4 @@ import "./eagle";
|
||||
import "./prompt-optimizer";
|
||||
import "./workflows";
|
||||
import "./portrait-clearance";
|
||||
import "./ai-art-critique";
|
||||
|
||||
@@ -74,6 +74,10 @@ export type PluginCanvasNodeContribution = {
|
||||
defaultSize: { width: number; height: number };
|
||||
schema: Record<string, unknown>;
|
||||
renderer: "declarative" | "sandbox";
|
||||
/** Optional input contract for nodes that consume one media kind. */
|
||||
acceptsInputKind?: "image" | "video" | "audio" | "text";
|
||||
/** Analysis/sink nodes can hide the right-side output connection. */
|
||||
showOutputConnection?: boolean;
|
||||
};
|
||||
export type PluginTransformContribution = {
|
||||
id: string;
|
||||
|
||||
Reference in New Issue
Block a user