diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..fdabd23
--- /dev/null
+++ b/.dockerignore
Binary files differ
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..acaf499
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,26 @@
+# 使用多阶段构建确保正确复制文件
+#FROM docker.mirrors.tencent.com/library/maven:3.8.6-jdk-17 AS builder
+FROM openjdk:17 AS builder
+#FROM maven:3.8.6-eclipse-temurin-17 AS builder
+WORKDIR /app
+COPY . .
+#RUN mvn clean package -DskipTests
+
+
+# 使用阿里云镜像源
+#FROM docker.mirrors.tencent.com/library/eclipse-temurin:17-jdk-alpine
+#FROM eclipse-temurin:17-jdk-alpine
+FROM openjdk:17
+WORKDIR /app
+
+# 1. 复制应用JAR
+COPY --from=builder /app/target/PT-houduan-*.jar app.jar
+
+# 2. 复制所有依赖
+COPY --from=builder /app/target/lib/* /app/lib/
+COPY --from=builder /app/lib/* /app/lib/
+
+# 3. 设置类路径和调试参数
+ENV JAVA_OPTS="-Dloader.path=/app/lib -Ddebug"
+EXPOSE 8080
+ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
\ No newline at end of file
diff --git a/cheat_db.sql b/cheat_db.sql
new file mode 100644
index 0000000..0741e54
--- /dev/null
+++ b/cheat_db.sql
@@ -0,0 +1,37 @@
+# CREATE TABLE cheating_records (
+#                                   id BIGINT AUTO_INCREMENT PRIMARY KEY,
+#                                   info_hash VARCHAR(40),
+#                                   user_id BIGINT,
+#                                   ip VARCHAR(45) NOT NULL,
+#                                   port INT NOT NULL,
+#                                   reason TEXT NOT NULL,
+#                                   detected_at DATETIME NOT NULL,
+#                                   INDEX idx_detected_at (detected_at)
+# );
+
+CREATE TABLE traffic_anomaly (
+                                 id INT PRIMARY KEY AUTO_INCREMENT,
+                                 info_hash VARCHAR(40) NOT NULL COMMENT '种子哈希',
+                                 ip VARCHAR(45) NOT NULL COMMENT 'Peer IP',
+                                 port INT NOT NULL COMMENT 'Peer 端口',
+                                 upload_delta BIGINT NOT NULL COMMENT '本次上传增量（字节）',
+                                 download_delta BIGINT NOT NULL COMMENT '本次下载增量（字节）',
+                                 occur_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '异常发生时间'
+);
+CREATE TABLE client_anomaly (
+                                id INT PRIMARY KEY AUTO_INCREMENT,
+                                info_hash VARCHAR(40) NOT NULL COMMENT '种子哈希',
+                                ip VARCHAR(45) NOT NULL COMMENT 'Peer IP',
+                                port INT NOT NULL COMMENT 'Peer 端口',
+                                peer_id VARCHAR(60) NOT NULL COMMENT '原始peer_id',
+                                client_type VARCHAR(50) NOT NULL COMMENT '客户端类型（可疑/黑名单）',
+                                occur_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '检测时间'
+);
+-- 存储文件级流量异常记录
+CREATE TABLE IF NOT EXISTS file_traffic_anomaly (
+                                                    id INT PRIMARY KEY AUTO_INCREMENT,
+                                                    info_hash VARCHAR(40) NOT NULL COMMENT '种子哈希',
+                                                    total_upload BIGINT NOT NULL COMMENT '总上传量（字节）',
+                                                    total_download BIGINT NOT NULL COMMENT '总下载量（字节）',
+                                                    create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间'
+);
\ No newline at end of file
diff --git a/src/main/java/com/pt5/pthouduan/CorsConfig.java b/src/main/java/com/pt5/pthouduan/CorsConfig.java
new file mode 100644
index 0000000..11dc1bf
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/CorsConfig.java
@@ -0,0 +1,24 @@
+package com.pt5.pthouduan; // 你可以根据你的包名调整
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsConfig {
+
+    @Bean
+    public WebMvcConfigurer corsConfigurer() {
+        return new WebMvcConfigurer() {
+            @Override
+            public void addCorsMappings(CorsRegistry registry) {
+                registry.addMapping("/**") // 允许所有接口
+                        .allowedOrigins("http://localhost:3005","http://localhost:5173") // 允许访问的前端地址
+                        .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
+                        .allowedHeaders("*")
+                        .allowCredentials(true);
+            }
+        };
+    }
+}
