org.springframework.boot
diff --git a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/AppApiApplication.java b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/AppApiApplication.java
index 8bbd283..856172b 100644
--- a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/AppApiApplication.java
+++ b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/AppApiApplication.java
@@ -30,6 +30,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
@Tag(name = "客户端-收藏", description = "收藏切换与列表"),
@Tag(name = "客户端-点赞与举报", description = "点赞与举报提报"),
@Tag(name = "客户端-个人中心", description = "资料、设备、数据导出与注销"),
+ @Tag(name = "客户端-创作者", description = "创作者入驻申请、我的作品与数据看板(C 端账号)"),
+ @Tag(name = "客户端-启动配置与公告", description = "启动配置(白名单键)与系统公告,均匿名可访问"),
@Tag(name = "客户端-观看进度", description = "观看进度上报与续看位置"),
}
)
diff --git a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/controller/AppConfigController.java b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/controller/AppConfigController.java
new file mode 100644
index 0000000..ecb6d06
--- /dev/null
+++ b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/controller/AppConfigController.java
@@ -0,0 +1,53 @@
+// Author: fruit.com.cn
+
+package com.fruitshorts.app.controller;
+
+import com.fruitshorts.app.service.AppConfigService;
+import com.fruitshorts.app.service.AppNoticeService;
+import com.fruitshorts.app.vo.AppNoticeVO;
+import com.fruitshorts.common.pojo.PageResult;
+import com.fruitshorts.common.pojo.Result;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 启动配置与系统公告:**两个匿名接口**(客户端登录前就要拿到)。
+ *
+ * 放在一起是因为它们同属"进入 App 前的公共数据",且都不依赖登录态。
+ */
+@Tag(name = "客户端-启动配置与公告")
+@RestController
+@RequestMapping("/app")
+@RequiredArgsConstructor
+public class AppConfigController {
+
+ private final AppConfigService appConfigService;
+ private final AppNoticeService appNoticeService;
+
+ /**
+ * 启动配置:协议版本 / 最低版本 / 功能开关。
+ * **只下发白名单键**,库里缺键用契约默认值兜底。
+ */
+ @Operation(summary = "启动配置(匿名,只下发白名单键)")
+ @GetMapping("/config")
+ public Result