package tech.easyflow.admin.controller.skill.vo;

import tech.easyflow.skill.entity.Skill;

import java.math.BigInteger;

/**
 * Skill 草稿写入白名单，拒绝客户端覆盖租户、归属人、发布态、快照和 hash 等服务端字段。
 *
 * @param id Skill ID，创建时为空
 * @param categoryId 分类 ID
 * @param displayName 展示名称
 * @param skillContent SKILL.md 内容，仅创建时使用；已有草稿正文通过文件接口原子保存
 * @param visibilityScope 可见范围
 */
public record SkillDraftRequest(BigInteger id,
                                BigInteger categoryId,
                                String displayName,
                                String skillContent,
                                String visibilityScope) {

    /**
     * 转换为仅包含可写字段的业务实体。
     *
     * @return Skill 草稿实体
     */
    public Skill toEntity() {
        Skill skill = new Skill();
        skill.setId(id);
        skill.setCategoryId(categoryId);
        skill.setDisplayName(displayName);
        skill.setSkillContent(skillContent);
        skill.setVisibilityScope(visibilityScope);
        return skill;
    }

    /**
     * 转换为不包含 SKILL.md 正文的基础配置更新实体。
     *
     * @return Skill 基础配置实体
     */
    public Skill toUpdateEntity() {
        Skill skill = toEntity();
        skill.setSkillContent(null);
        return skill;
    }
}
