GeneratedWebsitePage.java 2.2 KB
// website/entity/GeneratedWebsitePage.java
package com.aigeo.website.entity;

import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import java.time.LocalDateTime;

@Entity
@Table(name = "ai_generated_website_pages")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GeneratedWebsitePage {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "project_id", nullable = false)
    private Integer projectId;

    @Column(name = "task_id", nullable = false)
    private Integer taskId;

    @Column(name = "pageable_type", nullable = false)
    private String pageableType;

    @Column(name = "pageable_id", nullable = false)
    private Integer pageableId;

    @Column(name = "file_name", nullable = false)
    private String fileName;

    @Column(name = "html_content")
    private String htmlContent;

    @Column(name = "created_at")
    
    private LocalDateTime createdAt;

    /**
     * 获取文件扩展名
     */
    public String getFileExtension() {
        if (fileName == null) return null;
        int lastDotIndex = fileName.lastIndexOf('.');
        return lastDotIndex > 0 ? fileName.substring(lastDotIndex + 1) : null;
    }

    /**
     * 检查是否为HTML页面
     */
    public boolean isHtmlPage() {
        String ext = getFileExtension();
        return "html".equalsIgnoreCase(ext) || "htm".equalsIgnoreCase(ext);
    }

    /**
     * 获取HTML内容的大小(字节数)
     */
    public int getContentSize() {
        return htmlContent != null ? htmlContent.getBytes().length : 0;
    }

    /**
     * 检查是否为大型页面(内容超过100KB)
     */
    public boolean isLargePage() {
        return getContentSize() > 102400; // 100KB
    }

    /**
     * 获取页面的简要描述
     */
    public String getPageDescription() {
        return String.format("%s页面 - %s", pageableType, fileName);
    }
}