diff --git a/src/main/java/edu/bjtu/groupone/backend/api/CategoryController.java b/src/main/java/edu/bjtu/groupone/backend/api/CategoryController.java
index 80617de..fc892f7 100644
--- a/src/main/java/edu/bjtu/groupone/backend/api/CategoryController.java
+++ b/src/main/java/edu/bjtu/groupone/backend/api/CategoryController.java
@@ -1,9 +1,14 @@
 package edu.bjtu.groupone.backend.api;
 
 import edu.bjtu.groupone.backend.domain.dto.CategoryDTO;
+import edu.bjtu.groupone.backend.domain.dto.CategoryCreateRequest;
 import edu.bjtu.groupone.backend.domain.entity.Category;
 import edu.bjtu.groupone.backend.service.CategoryService;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -24,15 +29,34 @@
     public ResponseEntity<List<CategoryDTO>> getCategories() {
         return ResponseEntity.ok(categoryService.getCategoryTree());
     }
-    // 创建分区
+
     @PostMapping
-    @Operation(summary = "创建新分区")
-    public ResponseEntity<String> createCategory(@RequestBody Category category) {
-        categoryService.addCategory(category);
-        return ResponseEntity.ok("分区创建成功");
+    @Operation(
+        summary = "创建新分区",
+        description = "创建一个新的分区，返回创建的分区ID",
+        responses = {
+            @ApiResponse(
+                responseCode = "200",
+                description = "创建成功",
+                content = @Content(schema = @Schema(implementation = Long.class))
+            ),
+            @ApiResponse(responseCode = "400", description = "请求参数错误")
+        }
+    )
+    public ResponseEntity<Long> createCategory(
+        @Parameter(description = "分区信息", required = true)
+        @RequestBody CategoryCreateRequest request
+    ) {
+        Category category = new Category();
+        category.setName(request.getName());
+        if (request.getParentId() != null) {
+            Category parent = new Category();
+            parent.setId(request.getParentId());
+            category.setParent(parent);
+        }
+        return ResponseEntity.ok(categoryService.addCategory(category));
     }
 
-    // 删除分区
     @DeleteMapping("/{id}")
     @Operation(summary = "删除分区")
     public ResponseEntity<String> deleteCategory(@PathVariable Long id) {
@@ -40,7 +64,6 @@
         return ResponseEntity.ok("分区删除成功");
     }
 
-    // 更新分区
     @PutMapping("/{id}")
     @Operation(summary = "更新分区信息")
     public ResponseEntity<String> updateCategory(@PathVariable Long id, @RequestBody Category category) {
@@ -49,7 +72,6 @@
         return ResponseEntity.ok("分区更新成功");
     }
 
-    // 获取单个分区
     @GetMapping("/{id}")
     @Operation(summary = "获取分区详情")
     public ResponseEntity<Category> getCategory(@PathVariable Long id) {
diff --git a/src/main/java/edu/bjtu/groupone/backend/api/WorkController.java b/src/main/java/edu/bjtu/groupone/backend/api/WorkController.java
index 28cd43d..b181916 100644
--- a/src/main/java/edu/bjtu/groupone/backend/api/WorkController.java
+++ b/src/main/java/edu/bjtu/groupone/backend/api/WorkController.java
@@ -6,7 +6,9 @@
 import edu.bjtu.groupone.backend.domain.entity.Work;
 import edu.bjtu.groupone.backend.domain.entity.Version;
 import edu.bjtu.groupone.backend.domain.entity.Comment;
+import edu.bjtu.groupone.backend.domain.entity.Category;
 import edu.bjtu.groupone.backend.service.WorkService;
+import edu.bjtu.groupone.backend.utils.AliOSSUtils;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -18,7 +20,9 @@
 import org.springframework.data.domain.Page;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 
 @RestController
@@ -29,6 +33,9 @@
     @Autowired
     private WorkService workService;
 
+    @Autowired
+    private AliOSSUtils aliOSSUtils;
+
     @GetMapping
     @Operation(summary = "获取作品列表", description = "可按分区分页查询作品")
     public ResponseEntity<Page<WorkResponse>> getWorks(
@@ -62,8 +69,26 @@
 
     @PostMapping
     @Operation(summary = "创建新作品")
-    public ResponseEntity<Integer> createWork(@RequestBody Work work) {
-        return ResponseEntity.ok(workService.createWork(work));
+    public ResponseEntity<Integer> createWork(
+            @RequestParam("cover") MultipartFile cover,
+            @RequestParam("title") String title,
+            @RequestParam("author") String author,
+            @RequestParam("categoryId") Long categoryId,
+            @RequestParam("description") String description) {
+        try {
+            String coverUrl = aliOSSUtils.upload(cover);
+            Work work = new Work();
+            work.setTitle(title);
+            work.setAuthor(author);
+            work.setDescription(description);
+            work.setCover(coverUrl);
+            Category category = new Category();
+            category.setId(categoryId);
+            work.setCategory(category);
+            return ResponseEntity.ok(workService.createWork(work));
+        } catch (IOException e) {
+            return ResponseEntity.badRequest().build();
+        }
     }
 
     @PutMapping("/{id}")
diff --git a/src/main/java/edu/bjtu/groupone/backend/domain/dto/CategoryCreateRequest.java b/src/main/java/edu/bjtu/groupone/backend/domain/dto/CategoryCreateRequest.java
new file mode 100644
index 0000000..ce14551
--- /dev/null
+++ b/src/main/java/edu/bjtu/groupone/backend/domain/dto/CategoryCreateRequest.java
@@ -0,0 +1,15 @@
+package edu.bjtu.groupone.backend.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "创建分区的请求DTO")
+public class CategoryCreateRequest {
+    
+    @Schema(description = "分区名称", example = "文学艺术", required = true)
+    private String name;
+    
+    @Schema(description = "父分区ID，如果是一级分区则为null", example = "1")
+    private Long parentId;
+} 
\ No newline at end of file
diff --git a/src/main/java/edu/bjtu/groupone/backend/domain/entity/Category.java b/src/main/java/edu/bjtu/groupone/backend/domain/entity/Category.java
index c6383c0..1d2b089 100644
--- a/src/main/java/edu/bjtu/groupone/backend/domain/entity/Category.java
+++ b/src/main/java/edu/bjtu/groupone/backend/domain/entity/Category.java
@@ -6,22 +6,29 @@
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.v3.oas.annotations.media.Schema;
 import java.util.ArrayList;
 import java.util.List;
 
 @Entity
 @Table(name = "categories")
 @Data
-@NoArgsConstructor  // 添加无参构造器注解
+@NoArgsConstructor
 @AllArgsConstructor
 @Builder
 @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@Schema(description = "分区实体")
 public class Category {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Schema(description = "分区ID", example = "1")
     private Long id;
 
     @Column(nullable = false, length = 50)
+    @Schema(description = "分区名称", example = "文学艺术", required = true)
     private String name;
 
     @ManyToOne(fetch = FetchType.LAZY)
@@ -29,7 +36,8 @@
             name = "parent_id",
             foreignKey = @ForeignKey(name = "fk_category_parent")
     )
-    @JsonIgnoreProperties("children")
+    @JsonIgnoreProperties({"children", "parent"})
+    @Schema(description = "父分区")
     private Category parent;
 
     @OneToMany(
@@ -38,6 +46,7 @@
             orphanRemoval = true
     )
     @Builder.Default
+    @JsonIgnore
     private List<Category> children = new ArrayList<>();
 
     // 修复后的构造器确保 children 被初始化
@@ -48,6 +57,12 @@
         this.children = new ArrayList<>();  // 关键修复：初始化 children
     }
 
+    public Category(String name, Category parent) {
+        this.name = name;
+        this.parent = parent;
+        this.children = new ArrayList<>();
+    }
+
     public void addChild(Category child) {
         children.add(child);
         child.setParent(this);
diff --git a/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java b/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
index 7ee8ebb..d827ed5 100644
--- a/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
+++ b/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
@@ -35,7 +35,8 @@
                 url.startsWith("/swagger-ui/") ||
                 url.startsWith("/v3/api-docs/") ||
                 url.startsWith("/favicon.ico") ||
-                url.startsWith("/static/")) {
+                url.startsWith("/static/") ||
+                url.startsWith("/api/category")) {  // 放行分区相关接口
             return true;
         }
         // 从请求头读取 token
diff --git a/src/main/java/edu/bjtu/groupone/backend/mapper/CategoryMybatisMapper.java b/src/main/java/edu/bjtu/groupone/backend/mapper/CategoryMybatisMapper.java
index d29b298..4955c49 100644
--- a/src/main/java/edu/bjtu/groupone/backend/mapper/CategoryMybatisMapper.java
+++ b/src/main/java/edu/bjtu/groupone/backend/mapper/CategoryMybatisMapper.java
@@ -12,7 +12,7 @@
     List<Category> findByParentId(Long parentId);
     List<Category> findAll();
     // 新增
-    @Insert("INSERT INTO categories(name, parent_id) VALUES(#{name}, #{parent.id})")
+    @Insert("INSERT INTO categories(name, parent_id) VALUES(#{name}, #{parent.id,jdbcType=BIGINT})")
     @Options(useGeneratedKeys = true, keyProperty = "id")
     void insert(Category category);
 
@@ -21,7 +21,7 @@
     void deleteById(Long id);
 
     // 更新
-    @Update("UPDATE categories SET name=#{name}, parent_id=#{parent.id} WHERE id=#{id}")
+    @Update("UPDATE categories SET name=#{name}, parent_id=#{parent.id,jdbcType=BIGINT} WHERE id=#{id}")
     void update(Category category);
 
     // 查询
diff --git a/src/main/java/edu/bjtu/groupone/backend/service/CategoryService.java b/src/main/java/edu/bjtu/groupone/backend/service/CategoryService.java
index db78bda..b054d05 100644
--- a/src/main/java/edu/bjtu/groupone/backend/service/CategoryService.java
+++ b/src/main/java/edu/bjtu/groupone/backend/service/CategoryService.java
@@ -39,8 +39,9 @@
         }
     }
 
-    public void addCategory(Category category) {
+    public Long addCategory(Category category) {
         categoryMybatisMapper.insert(category);
+        return category.getId();
     }
 
     public void deleteCategory(Long id) {
