feat: 接口字段补 @Schema 中文说明 + 精简冗余字段 + 接入 Prometheus 监控

- 全部 VO 字段补 @Schema(description) 中文说明,在线文档字段可读
- AppEpisodeVO 精简 duration/isFree 冗余字段(保留 durationSec/locked)
- framework 引入 actuator + micrometer-registry-prometheus
- SecurityConfig 放行 /actuator/prometheus,双服务配置 management 暴露指标
- 新增 deploy/docker-compose.yml + prometheus.yml 监控部署配置
This commit is contained in:
Zhou Weidong committed 2026-10-17 02:24:25 +08:00
1 parent efe8af6c9b
commit 5f9483a86c
140 files changed
+1357 -19

No files matched your search

@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/** 开通创作者账号:用户名默认取 creator.code 小写,可用这个字段覆盖。 */
@@ -9,5 +10,6 @@ import lombok.Data;
public class CreatorAccountOpenReqVO {
/** 覆盖默认登录名;留空则用 creator.code 的小写形式 */
@Schema(description = "覆盖默认登录名(留空则用 creator.code 的小写形式)")
private String username;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
@@ -13,13 +14,19 @@ import lombok.Data;
@Data
public class CreatorAccountRespVO {
@Schema(description = "创作者 ID")
private Long creatorId;
@Schema(description = "管理员用户 ID")
private Long adminUserId;
@Schema(description = "用户名")
private String username;
/** 一次性明文初始密码;幂等命中时为 null */
@Schema(description = "一次性明文初始密码(幂等命中时为 null)")
private String password;
/** true = 这次真的新建了账号 */
@Schema(description = "是否本次新建账号")
private Boolean created;
/** 给运营看的一句话说明 */
@Schema(description = "给运营看的一句话说明")
private String message;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -10,5 +11,6 @@ import lombok.Data;
public class CreatorAttachReqVO {
@NotNull(message = "缺少媒资 ID")
@Schema(description = "媒资 ID")
private Long assetId;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/** 创作者入驻审核请求。 */
@@ -9,9 +10,12 @@ import lombok.Data;
public class CreatorAuditReqVO {
/** APPROVE / REJECT / FREEZE */
@Schema(description = "操作(APPROVE / REJECT / FREEZE)")
private String action;
/** 驳回原因码,REJECT 时必填 */
@Schema(description = "驳回原因码(REJECT 时必填)")
private String rejectCode;
/** 审核说明 / 驳回原因 */
@Schema(description = "审核说明 / 驳回原因")
private String reason;
}
@@ -3,6 +3,7 @@
package com.fruitshorts.creator.vo;
import com.fruitshorts.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,6 +16,8 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
public class CreatorCenterDramaQueryReqVO extends PageParam {
@Schema(description = "关键字")
private String keyword;
@Schema(description = "状态")
private String status;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@@ -12,30 +13,52 @@ import java.time.LocalDateTime;
@Data
public class CreatorCenterDramaVO {
@Schema(description = "ID")
private Long id;
@Schema(description = "编号")
private String code;
@Schema(description = "标题")
private String title;
@Schema(description = "副标题")
private String subtitle;
@Schema(description = "题材")
private String genre;
/** 简介(实体字段是 synopsis) */
@Schema(description = "简介")
private String description;
@Schema(description = "封面")
private String cover;
/** 整剧预告片 */
@Schema(description = "整剧预告片地址")
private String trailerUrl;
@Schema(description = "语言")
private String language;
@Schema(description = "状态")
private String status;
@Schema(description = "状态文本")
private String statusText;
@Schema(description = "集数")
private Integer episodes;
@Schema(description = "观看次数")
private Long views;
@Schema(description = "更新时间")
private LocalDateTime updatedAt;
/** 最近一次内容提交(没有提交过则为空) */
@Schema(description = "最近一次内容提交 ID")
private Long submissionId;
@Schema(description = "提交类型")
private String submissionType;
@Schema(description = "提交状态")
private String submissionStatus;
@Schema(description = "提交状态文本")
private String submissionStatusText;
@Schema(description = "审核说明")
private String reviewNote;
@Schema(description = "驳回原因码")
private String rejectCode;
@Schema(description = "提交时间")
private LocalDateTime submitAt;
@Schema(description = "审核时间")
private LocalDateTime reviewAt;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@@ -16,12 +17,18 @@ import java.time.LocalDateTime;
public class CreatorCenterNoticeVO {
/** 来源单据 id */
@Schema(description = "来源单据 ID")
private Long id;
/** CREATOR(入驻审核)/ SUBMISSION(内容提交审核) */
@Schema(description = "业务类型(CREATOR / SUBMISSION)")
private String bizType;
@Schema(description = "标题")
private String title;
@Schema(description = "内容")
private String content;
/** 通过 / 驳回 等结果文案 */
@Schema(description = "结果文案(通过 / 驳回 等)")
private String result;
@Schema(description = "时间")
private LocalDateTime time;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@@ -10,20 +11,32 @@ import java.time.LocalDateTime;
@Data
public class CreatorCenterProfileVO {
@Schema(description = "ID")
private Long id;
@Schema(description = "编号")
private String code;
@Schema(description = "名称")
private String name;
/** INDIVIDUAL / COMPANY */
@Schema(description = "类型(INDIVIDUAL / COMPANY)")
private String type;
/** pending / approved / rejected / frozen */
@Schema(description = "状态(pending / approved / rejected / frozen)")
private String status;
@Schema(description = "状态文本")
private String statusText;
/** 入驻审核意见(驳回时是原因) */
@Schema(description = "入驻审核意见(驳回时是原因)")
private String auditNote;
@Schema(description = "审核时间")
private LocalDateTime auditAt;
@Schema(description = "联系人姓名")
private String contactName;
@Schema(description = "联系人邮箱")
private String contactEmail;
@Schema(description = "国家/地区代码")
private String countryCode;
/** 我的作品数(只统计自己的) */
@Schema(description = "我的作品数")
private Long dramaTotal;
}
@@ -2,15 +2,21 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/** 代看目标下拉项:超管选择要看哪个创作者时用(只给 id / 名称 / 状态,不给联系方式)。 */
@Data
public class CreatorCenterTargetVO {
@Schema(description = "ID")
private Long id;
@Schema(description = "编号")
private String code;
@Schema(description = "名称")
private String name;
@Schema(description = "状态")
private String status;
@Schema(description = "状态文本")
private String statusText;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -15,14 +16,22 @@ import lombok.Data;
public class CreatorDramaEditReqVO {
@NotBlank(message = "请填写作品名称")
@Schema(description = "标题")
private String title;
@Schema(description = "副标题")
private String subtitle;
@Schema(description = "分类 ID")
private Long categoryId;
@Schema(description = "题材")
private String genre;
@Schema(description = "简介")
private String description;
@Schema(description = "封面")
private String cover;
/** 整剧预告片(复用 drama.trailer_url) */
@Schema(description = "整剧预告片地址")
private String trailerUrl;
@Schema(description = "语言")
private String language;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
@@ -14,11 +15,17 @@ import lombok.Data;
public class CreatorEpisodeReqVO {
/** 不传则自动取下一集 */
@Schema(description = "集号(不传则自动取下一集)")
private Integer epNo;
@Schema(description = "标题")
private String title;
@Schema(description = "时长(秒)")
private Integer durationSec;
@Schema(description = "封面")
private String cover;
/** 片源地址(批 3 接分片上传后会写这里) */
@Schema(description = "片源地址")
private String videoUrl;
@Schema(description = "排序")
private Integer sort;
}
@@ -3,6 +3,7 @@
package com.fruitshorts.creator.vo;
import com.fruitshorts.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -12,10 +13,14 @@ import lombok.EqualsAndHashCode;
public class CreatorQueryReqVO extends PageParam {
/** 名称 / 编号 / 联系人 / 联系方式 关键字 */
@Schema(description = "名称 / 编号 / 联系人 / 联系方式 关键字")
private String keyword;
/** pending / approved / rejected / frozen */
@Schema(description = "状态(pending / approved / rejected / frozen)")
private String status;
/** INDIVIDUAL / COMPANY */
@Schema(description = "类型(INDIVIDUAL / COMPANY)")
private String type;
@Schema(description = "国家/地区代码")
private String countryCode;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -14,16 +15,24 @@ import lombok.Data;
public class CreatorSaveReqVO {
@NotBlank(message = "请填写创作者名称")
@Schema(description = "名称")
private String name;
/** INDIVIDUAL / COMPANY,默认 INDIVIDUAL */
@Schema(description = "类型(INDIVIDUAL / COMPANY,默认 INDIVIDUAL)")
private String type;
/** 编号:不传则自动生成 CR+日期+序号;也是开账号时默认的登录名(小写) */
@Schema(description = "编号(不传则自动生成)")
private String code;
@Schema(description = "联系人姓名")
private String contactName;
@Schema(description = "联系人手机号")
private String contactMobile;
@Schema(description = "联系人邮箱")
private String contactEmail;
@Schema(description = "国家/地区代码")
private String countryCode;
/** 可选:绑定已有的 C 端账号 app_user.id */
@Schema(description = "绑定的 C 端账号 app_user.id(可选)")
private Long userId;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@@ -10,5 +11,6 @@ import lombok.Data;
public class CreatorSubmitReqVO {
@NotBlank(message = "请选择提交类型")
@Schema(description = "提交类型(CREATE / UPDATE / PUBLISH / OFFLINE)")
private String type;
}
@@ -2,6 +2,7 @@
package com.fruitshorts.creator.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/** 内容提交审核请求。 */
@@ -9,9 +10,12 @@ import lombok.Data;
public class SubmissionAuditReqVO {
/** APPROVE / REJECT / WITHDRAW */
@Schema(description = "操作(APPROVE / REJECT / WITHDRAW)")
private String action;
/** 驳回原因码,REJECT 时必填 */
@Schema(description = "驳回原因码(REJECT 时必填)")
private String rejectCode;
/** 审核说明 / 驳回原因 */
@Schema(description = "审核说明 / 驳回原因")
private String reason;
}
@@ -3,6 +3,7 @@
package com.fruitshorts.creator.vo;
import com.fruitshorts.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,10 +12,14 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
public class SubmissionQueryReqVO extends PageParam {
@Schema(description = "创作者 ID")
private Long creatorId;
@Schema(description = "短剧 ID")
private Long dramaId;
/** DRAFT / SUBMITTED / REVIEWING / APPROVED / REJECTED / WITHDRAWN */
@Schema(description = "状态(DRAFT / SUBMITTED / REVIEWING / APPROVED / REJECTED / WITHDRAWN)")
private String status;
/** CREATE / UPDATE / PUBLISH / OFFLINE */
@Schema(description = "类型(CREATE / UPDATE / PUBLISH / OFFLINE)")
private String type;
}