feat(aigc): M-c批② 后端三处加行——白名单+idle/tycoon、资源Map两行、getTemplateList 2→4条(批①Map化纯验证波)

零生产签名/零pom/零Validator/零测试重写;鉴权波PlayerApi行一字不动;四模板全收口

HJ-MC-TPL-EXEC-002 §6.3/§6.4

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
zizi 2026-06-10 16:46:25 +00:00
parent f82d480dfd
commit 91d651e6a2
3 changed files with 27 additions and 6 deletions

View File

@ -27,10 +27,10 @@ public final class AigcTemplateConstants {
/**
* 玩法模板白名单唯一同源
* M-c = clicker + merge 两模板 idle/tycoon 在此加列表项
* M-c = clicker + merge 两模板HJ-MC-TPL-EXEC-002 §6.3 idle/tycoon四模板全收口
* 取值须与 PromptResourceLoader 资源 Map 的键contracts/templates/&lt;id&gt;.schema.json 一一对应
*/
public static final List<String> SUPPORTED_TEMPLATE_IDS = List.of("clicker", "merge");
public static final List<String> SUPPORTED_TEMPLATE_IDS = List.of("clicker", "merge", "idle", "tycoon");
private AigcTemplateConstants() {
// 纯常量持有类禁止实例化

View File

@ -25,8 +25,9 @@ import java.util.regex.Pattern;
*
* 单模板 多模板HJ-MC-TPL-EXEC-001 §6.2 templateId 为键缓存每模板一份
* {@code (promptVersion, promptBody, schemaText)}{@link TemplateResource}资源映射 = {@link #TEMPLATE_RESOURCES}
* clicker clicker-designer.md + clicker.schema.jsonmerge merge-designer.md + merge.schema.json
* idle/tycoon 在此映射加行即开新模板兑现加文件即开模板承诺
* clicker clicker-designer.md + clicker.schema.jsonmerge merge-designer.md + merge.schema.json
* HJ-MC-TPL-EXEC-002 §6.3已扩 idle/tycoonidle-designer.md+idle.schema.json / tycoon-designer.md+tycoon.schema.json
* 在此映射加行即开新模板兑现加文件即开模板承诺四模板全收口
* ready 全局语义§6.2 拍板{@link #isReady()} 保留全局语义 = 所有模板均就绪任一模板资源缺失/形态
* 非法 整体自禁用{@link #getNotReadyReason()} 含模板名 + 缺失路径沿现有自禁用范式不暴露半成品
*
@ -67,6 +68,14 @@ public class PromptResourceLoader {
m.put("merge", new String[]{
"wanxiang-contracts/prompts/04-config/merge-designer.md",
"wanxiang-contracts/templates/merge.schema.json"});
// HJ-MC-TPL-EXEC-002 §6.3 idle/tycoon资源路径按 clicker/merge 现有范式
// 04-config/<t>-designer.md + templates/<t>.schema.jsonpom 通配已自动复制进 classpath pom 改动
m.put("idle", new String[]{
"wanxiang-contracts/prompts/04-config/idle-designer.md",
"wanxiang-contracts/templates/idle.schema.json"});
m.put("tycoon", new String[]{
"wanxiang-contracts/prompts/04-config/tycoon-designer.md",
"wanxiang-contracts/templates/tycoon.schema.json"});
TEMPLATE_RESOURCES = Collections.unmodifiableMap(m);
}

View File

@ -56,7 +56,7 @@ public class AigcTaskServiceImpl implements AigcTaskService {
@Override
public List<TemplateRespVO> getTemplateList() {
// T-AGC-03 模板注册表的 MVP 最小形态HJ-AGENT-LOOP-EXEC-002 §8.4 T6 agent 裁决 #1 纳入
// 返回硬编码 2 clicker+mergeHJ-MC-TPL-EXEC-001 §6.5 merge idle/tycoon
// 返回硬编码 4 clicker+merge+idle+tycoonM-c 模板波两批全收口HJ-MC-TPL-EXEC-002 §6.4 idle/tycoon
// 使 Create canSubmit 依赖的模板列表非空真实用户 UI 链路活
// 注册表选型DB / Nacos 配置 / Dify 落地后替换
TemplateRespVO clicker = new TemplateRespVO();
@ -70,7 +70,19 @@ public class AigcTaskServiceImpl implements AigcTaskService {
merge.setName("合成升级");
merge.setDescription("拖拽两个同级物件合成更高一级,合成到目标等级即通关");
merge.setExamplePrompt("做一个把多肉植物合成升级的小游戏");
return List.of(clicker, merge);
// HJ-MC-TPL-EXEC-002 §6.4 idle放置挂机点击+挂机产出资源含离线收益
TemplateRespVO idle = new TemplateRespVO();
idle.setTemplateId("idle");
idle.setName("放置挂机");
idle.setDescription("点击和挂机自动产出资源,攒够目标即通关,离开再回来还能领离线收益");
idle.setExamplePrompt("做一个挂机种树攒果实的小游戏");
// HJ-MC-TPL-EXEC-002 §6.4 tycoon模拟经营进货卖货赚差价
TemplateRespVO tycoon = new TemplateRespVO();
tycoon.setTemplateId("tycoon");
tycoon.setName("模拟经营");
tycoon.setDescription("进货卖货赚差价,金币攒到目标就通关");
tycoon.setExamplePrompt("做一个开奶茶店进货卖货赚钱的小游戏");
return List.of(clicker, merge, idle, tycoon);
}
@Override