diff --git a/src/feature/work/Work.tsx b/src/feature/work/Work.tsx
index 56939d1..d9b08f0 100644
--- a/src/feature/work/Work.tsx
+++ b/src/feature/work/Work.tsx
@@ -100,8 +100,6 @@
         }
     }, [work_id, dispatch]);
 
-    // ==================== EditWork 集成功能 ====================
-
     // 更新作品信息
     const handleUpdateArtwork = useCallback(async (updates: Partial<ArtworkData>): Promise<void> => {
         if (!work_id || !currentArtwork) return;
@@ -157,17 +155,6 @@
         }
     }, [work_id, dispatch, comments.current, comments.pageSize]);
 
-    // 兼容旧的编辑处理器
-    const handleEditArtwork = useCallback((): void => {
-        if (isAuthor) {
-            setShowEditControls(true);
-            message.info('请使用上方的编辑控件来修改作品信息');
-        } else {
-            message.warning('您没有编辑此作品的权限');
-        }
-    }, [isAuthor]);
-
-    // ==================== 渲染逻辑 ====================
 
     // 加载状态
     if (loading.artwork) {
@@ -275,7 +262,6 @@
                                 currentPage={safeComments.current}
                                 pageSize={safeComments.pageSize}
                                 isAuthor={isAuthor}
-                                onEditArtwork={handleEditArtwork}
                             />
                         </Flex>
                     </div>
diff --git a/src/feature/work/WorkComponents.tsx b/src/feature/work/WorkComponents.tsx
index 64ef37a..79f976a 100644
--- a/src/feature/work/WorkComponents.tsx
+++ b/src/feature/work/WorkComponents.tsx
@@ -1,6 +1,6 @@
 import React, { useState } from 'react';
 import { Card, Typography, Tag, Flex, Table, Collapse, List, Spin, Alert, Button, Input, Form, message } from 'antd';
-import { EditOutlined, SendOutlined } from '@ant-design/icons';
+import { SendOutlined } from '@ant-design/icons';
 import ReactMarkdown from 'react-markdown';
 import type { ColumnsType } from 'antd/es/table';
 import type { PaginationConfig } from 'antd/es/pagination';
@@ -59,7 +59,7 @@
     description: string;
     isAuthor?: boolean;
     onEdit?: () => void;
-}> = ({ name, author, category, description, isAuthor = false, onEdit }) => (
+}> = ({ name, author, category, description }) => (
     <Card style={{ marginBottom: 20 }}>
         <Flex justify="space-between" align="flex-start">
             <div style={{ flex: 1 }}>
@@ -74,11 +74,6 @@
                     <ReactMarkdown>{description}</ReactMarkdown>
                 </div>
             </div>
-            {isAuthor && (
-                <Button type="primary" icon={<EditOutlined />} onClick={onEdit} style={{ marginLeft: 16 }}>
-                    编辑作品
-                </Button>
-            )}
         </Flex>
     </Card>
 );
diff --git a/src/feature/work/WorkPage.css b/src/feature/work/WorkPage.css
deleted file mode 100644
index 14b815a..0000000
--- a/src/feature/work/WorkPage.css
+++ /dev/null
@@ -1,155 +0,0 @@
-/* 作品页面容器 */
-.work-page-container {
-  max-width: 1200px;
-  margin: 0 auto;
-  padding: 20px;
-}
-
-/* 返回按钮 */
-.back-button {
-  margin-bottom: 20px;
-}
-
-/* 作品头部 */
-.work-header {
-  margin-bottom: 20px;
-}
-
-.work-header .ant-typography {
-  margin-bottom: 8px;
-}
-
-.work-meta {
-  margin: 16px 0;
-}
-
-.like-button {
-  margin-top: 10px;
-}
-
-/* 内容区域 */
-.work-content {
-  padding: 20px;
-  background: #f9f9f9;
-  border-radius: 4px;
-}
-
-/* Bug反馈区域 */
-.bug-report-section {
-  margin-top: 20px;
-}
-
-.bug-item {
-  width: 100%;
-  padding: 15px;
-  border: 1px solid #f0f0f0;
-  border-radius: 4px;
-  margin-bottom: 10px;
-}
-
-.bug-header {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 8px;
-}
-
-.bug-content {
-  margin: 10px 0;
-}
-
-/* 讨论区 */
-.discussion-section {
-  margin-top: 20px;
-}
-
-.discussion-container {
-  display: flex;
-  gap: 20px;
-}
-
-.discussion-list {
-  width: 300px;
-  border-right: 1px solid #f0f0f0;
-  padding-right: 20px;
-}
-
-.discussion-detail {
-  flex: 1;
-}
-
-.discussion-item {
-  padding: 15px;
-  cursor: pointer;
-  border-radius: 4px;
-  margin-bottom: 10px;
-  transition: all 0.3s;
-}
-
-.discussion-item:hover {
-  background: #f5f5f5;
-}
-
-.discussion-item.active {
-  background: #e6f7ff;
-  border-left: 3px solid #1890ff;
-}
-
-.discussion-detail-content {
-  padding: 20px;
-  background: #f9f9f9;
-  border-radius: 4px;
-  margin-bottom: 20px;
-}
-
-.discussion-title {
-  font-size: 18px;
-  display: block;
-  margin-bottom: 10px;
-}
-
-.discussion-meta {
-  display: flex;
-  align-items: center;
-  gap: 10px;
-  margin-bottom: 15px;
-}
-
-.discussion-body {
-  margin-bottom: 20px;
-}
-
-.comment-item {
-  padding: 15px 0;
-  border-bottom: 1px solid #f0f0f0;
-}
-
-.comment-header {
-  display: flex;
-  align-items: center;
-  gap: 10px;
-  margin-bottom: 10px;
-}
-
-.comment-actions {
-  margin-top: 10px;
-}
-
-.new-discussion-btn {
-  margin-bottom: 20px;
-}
-
-/* 响应式调整 */
-@media (max-width: 768px) {
-  .discussion-container {
-    flex-direction: column;
-  }
-  
-  .discussion-list {
-    width: 100%;
-    border-right: none;
-    padding-right: 0;
-    border-bottom: 1px solid #f0f0f0;
-    padding-bottom: 20px;
-    margin-bottom: 20px;
-  }
-}
\ No newline at end of file
diff --git a/src/feature/work/WorkPage.tsx b/src/feature/work/WorkPage.tsx
deleted file mode 100644
index 3a108a7..0000000
--- a/src/feature/work/WorkPage.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-import React, { useState, useEffect } from 'react';
-import { useParams, useNavigate } from 'react-router';
-import { Button, Tabs, message, Spin, Tag, Typography, Space, Divider } from 'antd';
-import { ArrowLeftOutlined, LikeOutlined, BugOutlined, CommentOutlined } from '@ant-design/icons';
-import WorkAPI from '../../api/workApi';
-import BugReportSection from '../../components/BugReportSection';
-import DiscussionSection from '../../components/DiscussionSection';
-import type { Work } from '../../api/otherType';
-
-const { Title, Text, Paragraph } = Typography;
-const { TabPane } = Tabs;
-
-const WorkPage: React.FC = () => {
-  const { id } = useParams<{ id: string }>();
-  const navigate = useNavigate();
-  const [work, setWork] = useState<Work | null>(null);
-  const [loading, setLoading] = useState(true);
-  const [activeTab, setActiveTab] = useState('details');
-
-  // 加载作品数据
-  useEffect(() => {
-    const loadWork = async () => {
-      try {
-        const workData = await WorkAPI.getWorkById(Number(id));
-        setWork(workData);
-      } catch (error) {
-        message.error('加载作品失败');
-        navigate('/');
-      } finally {
-        setLoading(false);
-      }
-    };
-
-    loadWork();
-  }, [id, navigate]);
-
-  // 点赞处理
-  const handleLike = async () => {
-    try {
-      await WorkAPI.likeWork(Number(id));
-      setWork(prev => prev ? { ...prev, likes: prev.likes + 1 } : null);
-      message.success('点赞成功');
-    } catch (error) {
-      message.error('点赞失败');
-    }
-  };
-
-  if (loading) {
-    return <Spin size="large" className="center-spinner" />;
-  }
-
-  if (!work) {
-    return <div>作品不存在</div>;
-  }
-
-  return (
-    <div className="work-page-container">
-      <Button 
-        type="text" 
-        icon={<ArrowLeftOutlined />} 
-        onClick={() => navigate(-1)}
-        className="back-button"
-      >
-        返回
-      </Button>
-
-      <div className="work-header">
-        <Title level={2}>{work.title}</Title>
-        <Text type="secondary">作者: {work.author}</Text>
-        
-        <div className="work-meta">
-          <Space size="middle">
-            <Tag color="blue">{work.categoryName}</Tag>
-            <Text>浏览: {work.views}</Text>
-            <Text>点赞: {work.likes}</Text>
-            <Text>上传时间: {new Date(work.createTime).toLocaleDateString()}</Text>
-          </Space>
-        </div>
-
-        <Button 
-          type="primary" 
-          icon={<LikeOutlined />} 
-          onClick={handleLike}
-          className="like-button"
-        >
-          点赞
-        </Button>
-      </div>
-
-      <Divider />
-
-      <Tabs activeKey={activeTab} onChange={setActiveTab}>
-        <TabPane tab="作品详情" key="details">
-          <div className="work-content">
-            <Title level={4}>作品描述</Title>
-            <Paragraph>{work.description}</Paragraph>
-            
-            <Title level={4}>作品内容</Title>
-            <div className="content-container">
-              {work.content}
-            </div>
-          </div>
-        </TabPane>
-
-        <TabPane 
-          tab={
-            <span>
-              <BugOutlined /> Bug反馈
-            </span>
-          } 
-          key="bugs"
-        >
-          <BugReportSection workId={work.id} />
-        </TabPane>
-
-        <TabPane 
-          tab={
-            <span>
-              <CommentOutlined /> 交流区
-            </span>
-          } 
-          key="discussions"
-        >
-          <DiscussionSection workId={work.id} />
-        </TabPane>
-      </Tabs>
-    </div>
-  );
-};
-
-export default WorkPage;
\ No newline at end of file
diff --git a/src/feature/work/mockData.ts b/src/feature/work/mockData.ts
index 8470e61..9caaed7 100644
--- a/src/feature/work/mockData.ts
+++ b/src/feature/work/mockData.ts
@@ -127,8 +127,8 @@
 
 // 作品数据集合
 export const mockArtworks: Record<string, ArtworkData> = {
-    '12345': {
-        artworkId: '12345',
+    '1': {
+        artworkId: '1',
         artworkCover: 'https://picsum.photos/300/400?random=1',
         author: '视觉设计师张三',
         authorId: 'author_zhangsan_001',
@@ -189,31 +189,16 @@
             { username: '创意总监', userId: 'user_director_104' },
         ],
         usersSeedingHistory: [
-            {
-                username: '资深下载者', uploadTotal: '156.8GB',
-                userId: ''
-            },
-            {
-                username: '设计素材库', uploadTotal: '89.2GB',
-                userId: ''
-            },
-            {
-                username: '创意工作室', uploadTotal: '67.5GB',
-                userId: ''
-            },
-            {
-                username: '学院资源组', uploadTotal: '45.3GB',
-                userId: ''
-            },
-            {
-                username: '独立设计师', uploadTotal: '23.7GB',
-                userId: ''
-            },
+            { username: '资深下载者', uploadTotal: '156.8GB', userId: 'hist_user_001' },
+            { username: '设计素材库', uploadTotal: '89.2GB', userId: 'hist_user_002' },
+            { username: '创意工作室', uploadTotal: '67.5GB', userId: 'hist_user_003' },
+            { username: '学院资源组', uploadTotal: '45.3GB', userId: 'hist_user_004' },
+            { username: '独立设计师', uploadTotal: '23.7GB', userId: 'hist_user_005' },
         ],
     },
     
-    '23456': {
-        artworkId: '23456',
+    '2': {
+        artworkId: '2',
         artworkCover: 'https://picsum.photos/300/400?random=2',
         author: 'UI设计师李四',
         authorId: 'author_lisi_002',
@@ -256,26 +241,17 @@
             { username: '产品经理小王', userId: 'user_pm_wang_202' },
         ],
         usersSeedingHistory: [
-            {
-                username: 'UI设计公司', uploadTotal: '78.9GB',
-                userId: ''
-            },
-            {
-                username: '设计师联盟', uploadTotal: '45.6GB',
-                userId: ''
-            },
-            {
-                username: '学习小组', uploadTotal: '23.4GB',
-                userId: ''
-            },
+            { username: 'UI设计公司', uploadTotal: '78.9GB', userId: 'hist_ui_001' },
+            { username: '设计师联盟', uploadTotal: '45.6GB', userId: 'hist_ui_002' },
+            { username: '学习小组', uploadTotal: '23.4GB', userId: 'hist_ui_003' },
         ],
     },
 
-    '67890': {
-        artworkId: '67890',
+    '3': {
+        artworkId: '3',
         artworkCover: 'https://picsum.photos/300/400?random=6',
         author: '刘松林',
-        authorId: '2', // 用户ID为2
+        authorId: '2',
         artworkName: 'React组件库开发指南',
         artworkCategory: '前端开发',
         comments: [],
@@ -313,33 +289,176 @@
             { username: 'React爱好者', userId: 'user_react_fan_602' },
         ],
         usersSeedingHistory: [
+            { username: '大厂前端团队', uploadTotal: '567.8GB', userId: 'hist_dev_001' },
+            { username: '开源社区', uploadTotal: '234.5GB', userId: 'hist_dev_002' },
+            { username: '技术培训机构', uploadTotal: '189.7GB', userId: 'hist_dev_003' },
+        ],
+    },
+
+    '4': {
+        artworkId: '4',
+        artworkCover: 'https://picsum.photos/300/400?random=7',
+        author: '3D艺术家王五',
+        authorId: 'author_wangwu_004',
+        artworkName: '机械战士3D模型',
+        artworkCategory: '3D建模',
+        comments: [],
+        artworkDescription: `# 机械战士3D模型
+
+一个高精度的科幻机械战士3D模型，包含完整的材质贴图和动画骨骼系统。
+
+## 模型特点
+
+### 🤖 设计风格
+- 未来科幻风格
+- 硬表面建模技术
+- PBR材质工作流
+- 模块化装备系统
+
+### 📐 技术规格
+- **面数**: 25,000 三角面
+- **贴图分辨率**: 4K PBR贴图组
+- **骨骼系统**: 完整人形骨骼
+- **动画**: 10个基础动作
+
+适用于游戏开发、影视制作和3D打印。`,
+        versionList: [
             {
-                username: '大厂前端团队', uploadTotal: '567.8GB',
-                userId: ''
+                version: '1.0',
+                seedFile: 'magnet:?xt=urn:btih:mech_warrior_v1_0&dn=机械战士v1.0.zip',
+                versionDescription: `## 基础版本 v1.0
+
+### 核心内容
+- 🎯 **高精度3D模型** (.fbx, .obj)
+- 🎨 **4K PBR贴图组**
+- 🦴 **完整骨骼系统**
+- 🎬 **基础动画文件**`,
             },
+        ],
+        usersSeedingCurrently: [
+            { username: '游戏开发者小陈', userId: 'user_gamedev_301' },
+            { username: '3D建模师', userId: 'user_3dmodeler_302' },
+        ],
+        usersSeedingHistory: [
+            { username: '游戏工作室', uploadTotal: '234.5GB', userId: 'hist_3d_001' },
+            { username: '影视特效团队', uploadTotal: '178.3GB', userId: 'hist_3d_002' },
+            { username: '独立开发者', uploadTotal: '98.7GB', userId: 'hist_3d_003' },
+        ],
+    },
+
+    '5': {
+        artworkId: '5',
+        artworkCover: 'https://picsum.photos/300/400?random=8',
+        author: '摄影师赵六',
+        authorId: 'author_zhaoliu_005',
+        artworkName: '城市夜景摄影集',
+        artworkCategory: '摄影作品',
+        comments: [],
+        artworkDescription: `# 城市夜景摄影集
+
+一组精美的城市夜景摄影作品，捕捉了都市夜晚的璀璨光影。
+
+## 作品特色
+
+### 📸 拍摄技法
+- 长曝光技术
+- HDR合成处理
+- 光轨艺术表现
+- 城市建筑几何美学
+
+### 🎨 后期处理
+- **RAW格式**: 无损原始文件
+- **精修版本**: Lightroom + Photoshop
+- **色彩分级**: 电影级调色
+- **分辨率**: 6000x4000像素
+
+包含20张高分辨率摄影作品，适合商业使用和艺术收藏。`,
+        versionList: [
             {
-                username: '开源社区', uploadTotal: '234.5GB',
-                userId: ''
+                version: '1.0',
+                seedFile: 'magnet:?xt=urn:btih:night_city_photos_v1_0&dn=城市夜景v1.0.zip',
+                versionDescription: `## 完整版本 v1.0
+
+### 包含内容
+- 📷 **RAW原始文件** (20张)
+- 🎨 **精修JPG版本** (高分辨率)
+- 📋 **拍摄参数记录**
+- 📍 **拍摄地点信息**`,
             },
+        ],
+        usersSeedingCurrently: [
+            { username: '摄影爱好者小林', userId: 'user_photo_401' },
+            { username: '设计师小美', userId: 'user_designer_402' },
+        ],
+        usersSeedingHistory: [
+            { username: '摄影工作室', uploadTotal: '445.8GB', userId: 'hist_photo_001' },
+            { username: '商业摄影师', uploadTotal: '367.2GB', userId: 'hist_photo_002' },
+            { username: '摄影学院', uploadTotal: '289.1GB', userId: 'hist_photo_003' },
+        ],
+    },
+
+    '6': {
+        artworkId: '6',
+        artworkCover: 'https://picsum.photos/300/400?random=9',
+        author: '插画师孙七',
+        authorId: 'author_sunqi_006',
+        artworkName: '奇幻世界插画系列',
+        artworkCategory: '插画艺术',
+        comments: [],
+        artworkDescription: `# 奇幻世界插画系列
+
+一套充满想象力的奇幻题材插画作品，包含角色设计、场景概念图和完整插图。
+
+## 创作风格
+
+### 🎨 艺术特色
+- 欧美奇幻风格
+- 数字绘画技法
+- 丰富色彩层次
+- 细腻光影表现
+
+### 📚 作品内容
+- **角色设计**: 15个原创角色
+- **场景概念**: 8个奇幻场景
+- **完整插图**: 12张精美插画
+- **线稿资源**: 黑白线稿版本
+
+适合游戏美术、小说封面、卡牌设计等多种用途。`,
+        versionList: [
             {
-                username: '技术培训机构', uploadTotal: '189.7GB',
-                userId: ''
+                version: '1.0',
+                seedFile: 'magnet:?xt=urn:btih:fantasy_art_v1_0&dn=奇幻插画v1.0.zip',
+                versionDescription: `## 标准版本 v1.0
+
+### 核心内容
+- 🎨 **高分辨率插画** (35张)
+- ✏️ **线稿资源包**
+- 🎯 **PSD分层文件**
+- 📖 **创作过程记录**`,
             },
         ],
+        usersSeedingCurrently: [
+            { username: '插画学习者', userId: 'user_illustrator_501' },
+            { username: '游戏美术师', userId: 'user_gameart_502' },
+        ],
+        usersSeedingHistory: [
+            { username: '插画师联盟', uploadTotal: '378.9GB', userId: 'hist_art_001' },
+            { username: '游戏美术团队', uploadTotal: '256.4GB', userId: 'hist_art_002' },
+            { username: '艺术学院', uploadTotal: '189.6GB', userId: 'hist_art_003' },
+        ],
     },
 };
 
 // 获取指定作品的评论数据
 export const getCommentsForArtwork = (artworkId: string): Comment[] => {
-    // 为不同作品生成不同的评论
     const commentVariations: Record<string, Comment[]> = {
-        '12345': baseComments,
-        '23456': baseComments.slice(0, 5).map(comment => ({
+        '1': baseComments,
+        '2': baseComments.slice(0, 5).map(comment => ({
             ...comment,
             id: `ui_${comment.id}`,
             content: comment.content.replace('作品', 'UI套件').replace('设计', '界面设计'),
         })),
-        '67890': [
+        '3': [
             {
                 id: 'dev_comment_1',
                 content: '这个组件库的设计思路很棒！TypeScript类型定义特别完善。',
@@ -366,6 +485,21 @@
                 child: [],
             },
         ],
+        '4': baseComments.slice(0, 4).map(comment => ({
+            ...comment,
+            id: `3d_${comment.id}`,
+            content: comment.content.replace('作品', '3D模型').replace('设计', '建模'),
+        })),
+        '5': baseComments.slice(0, 6).map(comment => ({
+            ...comment,
+            id: `photo_${comment.id}`,
+            content: comment.content.replace('作品', '摄影作品').replace('设计思路', '拍摄技法'),
+        })),
+        '6': baseComments.slice(0, 5).map(comment => ({
+            ...comment,
+            id: `art_${comment.id}`,
+            content: comment.content.replace('作品', '插画').replace('设计', '绘画'),
+        })),
     };
     
     return commentVariations[artworkId] || baseComments;
