package vip.mate.skill.template; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import vip.mate.common.result.R; import vip.mate.skill.model.SkillEntity; import vip.mate.workspace.core.annotation.RequireWorkspaceRole; import java.util.List; import java.util.Map; /** * RFC-091 — REST entry point for the wizard UI. * *

Three operations: *

*/ @Tag(name = "Skill Template Wizard") @RestController @RequestMapping("/api/v1/skill-templates") @RequiredArgsConstructor public class SkillTemplateController { private final SkillTemplateRegistry registry; private final SkillTemplateService templateService; @Operation(summary = "List skill templates (RFC-091)") @GetMapping @RequireWorkspaceRole("member") public R> list() { return R.ok(registry.all()); } @Operation(summary = "Get a single skill template") @GetMapping("/{id}") @RequireWorkspaceRole("member") public R get(@PathVariable String id) { SkillTemplate t = registry.find(id); if (t == null) return R.fail("Template not found: " + id); return R.ok(t); } @Operation(summary = "Instantiate a template into a skill") @PostMapping("/{id}/instantiate") @RequireWorkspaceRole("admin") public R instantiate( @PathVariable String id, @RequestBody Map values) { return R.ok(templateService.instantiate(id, values)); } }