dev add monitoring basic
Test Workflow / test (push) Successful in 4s

This commit is contained in:
vladp
2026-02-27 17:57:55 +07:00
parent 76aa04e174
commit c09a3a3a18
21 changed files with 815 additions and 7 deletions
@@ -0,0 +1,60 @@
package ru.soune.nocopy.entity.monitoring;
import jakarta.persistence.*;
import lombok.*;
import ru.soune.nocopy.entity.file.FileEntity;
import java.time.LocalDateTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "file_monitoring")
public class FileMonitoringEntity {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private String id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "file_id", nullable = false)
private FileEntity file;
@Column(name = "user_id", nullable = false)
private Long userId;
@Enumerated(EnumType.STRING)
@Column(name = "monitoring_type", nullable = false)
private MonitoringType monitoringType;
@Column(name = "next_run", nullable = false)
private LocalDateTime nextRun;
@Column(name = "last_run")
private LocalDateTime lastRun;
@Column(name = "last_run_status")
private String lastRunStatus;
@Column(name = "is_active", nullable = false)
private boolean isActive = true;
@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;
@Column(name = "updated_at")
private LocalDateTime updatedAt;
@PrePersist
public void prePersist() {
this.createdAt = LocalDateTime.now();
this.updatedAt = LocalDateTime.now();
}
@PreUpdate
public void preUpdate() {
this.updatedAt = LocalDateTime.now();
}
}
@@ -0,0 +1,76 @@
package ru.soune.nocopy.entity.monitoring;
import jakarta.persistence.*;
import lombok.*;
import ru.soune.nocopy.entity.file.FileEntity;
import java.time.LocalDateTime;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "found_violations",
indexes = {
@Index(name = "idx_file_id", columnList = "file_id"),
@Index(name = "idx_found_at", columnList = "found_at")
})
public class FoundViolationEntity {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private String id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "file_id", nullable = false)
private FileEntity file;
@Column(name = "user_id", nullable = false)
private Long userId;
@Column(name = "file_id_copy", nullable = false)
private String fileId;
@Column(name = "file_name_copy")
private String fileName;
@Column(name = "found_url", nullable = false, length = 2048)
private String foundUrl;
@Column(name = "page_url", length = 2048)
private String pageUrl;
@Column(name = "page_title")
private String pageTitle;
@Column(name = "host")
private String host;
@Column(name = "image_width")
private Integer imageWidth;
@Column(name = "image_height")
private Integer imageHeight;
@Enumerated(EnumType.STRING)
@Column(name = "search_engine", nullable = false)
private SearchEngine searchEngine;
@Column(name = "search_session_id")
private String searchSessionId;
@Column(name = "found_at", nullable = false)
private LocalDateTime foundAt;
@Column(name = "is_new", nullable = false)
private boolean isNew = true;
@Column(name = "is_notified", nullable = false)
private boolean isNotified = false;
@PrePersist
public void prePersist() {
this.foundAt = LocalDateTime.now();
}
}
@@ -0,0 +1,6 @@
package ru.soune.nocopy.entity.monitoring;
public enum MonitoringType {
MONITORING_DAILY, MONITORING_WEEKLY, MONITORING_MONTHLY, NONE
}
@@ -0,0 +1,8 @@
package ru.soune.nocopy.entity.monitoring;
public enum SearchEngine {
YANDEX,
GOOGLE,
BOTH
}
@@ -2,5 +2,6 @@ package ru.soune.nocopy.entity.tarif;
public enum TariffType {
START, BASIC, PRO, ENTERPRISE, DEMO, BUISNES, CORPORAT, STUDIO, FREE, TOKEN_100, TOKEN_500, TOKEN_1000, TOKEN_5000;
START, BASIC, PRO, ENTERPRISE, DEMO, BUISNES, CORPORAT, STUDIO, FREE, TOKEN_100, TOKEN_500, TOKEN_1000, TOKEN_5000,
MONITORING_DAILY, MONITORING_WEEKLY, MONITORING_MONTHLY;
}