Files
AIclinicalresearch/docs/08-项目管理/PKB精细化优化报告.md
HaHafeng dfc0fe0b9a feat(pkb): Integrate pgvector and create Dify replacement plan
Summary:
- Migrate PostgreSQL to pgvector/pgvector:pg15 Docker image
- Successfully install and verify pgvector 0.8.1 extension
- Create comprehensive Dify-to-pgvector migration plan
- Update PKB module documentation with pgvector status
- Update system documentation with pgvector integration

Key changes:
- docker-compose.yml: Switch to pgvector/pgvector:pg15 image
- Add EkbDocument and EkbChunk data model design
- Design R-C-R-G hybrid retrieval architecture
- Add clinical data JSONB fields (pico, studyDesign, regimen, safety, criteria, endpoints)
- Create detailed 10-day implementation roadmap

Documentation updates:
- PKB module status: pgvector RAG infrastructure ready
- System status: pgvector 0.8.1 integrated
- New: Dify replacement development plan (01-Dify替换为pgvector开发计划.md)
- New: Enterprise medical knowledge base solution V2

Tested: PostgreSQL with pgvector verified, frontend and backend functionality confirmed
2026-01-20 00:00:58 +08:00

14 KiB
Raw Blame History

PKB前端精细化优化报告

📋 优化概览

优化时间: 2026-01-06
优化依据: 与原型图的差距.md 文档
优化目标: 提升产品精致度100%还原设计稿
优化状态: 已完成


🎯 优化依据分析

根据差距文档主要问题集中在以下4个方面

1. 总体布局与间距

  • 页面边距过窄或不一致
  • 卡片/区块间距过小
  • 内容贴边,缺乏呼吸感

2. 字体与排版

  • 标题字重不足
  • 辅助文字颜色过深
  • 行高过密

3. 组件与视觉样式

  • 圆角不统一
  • 缺少轻微阴影
  • 边框颜色过深

4. 导航与顶部栏

  • 顶部栏高度不足
  • 标题未垂直居中

优化实施详情

1 字体与排版优化

标题字重加粗

// 修改前
<span className="font-bold text-slate-800">智能问答</span>

// 修改后
<span className="font-semibold text-slate-800 text-sm">智能问答</span>

改进点:

  • font-bold (700) → font-semibold (600):更协调
  • 统一字号为 text-sm (14px)

辅助文字颜色优化

// 修改前
<div className="text-xs text-gray-500 ml-6 mt-1">

// 修改后
<div className="text-xs text-slate-500 ml-6 leading-relaxed">

颜色层级:

  • 主标题:text-slate-800 (#1F2937)
  • 副标题:text-slate-700 (#334155)
  • 辅助文字:text-slate-500 (#64748B)
  • 次要信息:text-slate-400 (#94A3B8)

行高优化

// 添加 leading-relaxed (line-height: 1.625)
<p className="text-sm text-slate-500 mt-1.5 leading-relaxed">
  管理该知识库下的所有文件,查看 MinerU 解析状态
</p>

2 间距统一优化

全局容器间距

// 修改前
<div className="p-3 border-b border-gray-100 flex-shrink-0">

// 修改后
<div className="px-5 py-4 border-b border-gray-100 flex-shrink-0 bg-white">

标准间距规范:

场景 水平padding 垂直padding
工作模式选择器 px-5 (20px) py-4 (16px)
Alert提示框 px-6 (24px) py-5 (20px)
Chat内容区 px-6 (24px) py-4 (16px)
知识资产页 p-6 (24px) -

卡片间距优化

// Radio.Group间距
<Radio.Group className="w-full space-y-4">  {/* space-y-3 → space-y-4 */}

间距标准:

  • space-y-4: 16pxRadio选项间
  • mb-5: 20px页面区块间
  • mt-1.5: 6px标题与描述间

3 边框与圆角优化

边框颜色调淡

// 修改前
border-gray-200  // #E5E7EB

// 修改后
border-gray-100  // #F3F4F6

边框层级:

  • 主要分隔:border-gray-200
  • 轻微分隔:border-gray-100
  • Tab分隔border-gray-100

圆角统一

// 统一使用 rounded-lg (8px)
<div className="bg-white border border-gray-100 rounded-lg shadow-sm">

圆角规范:

组件 圆角值 Class
卡片/面板 8px rounded-lg
按钮 8px rounded-lg
输入框 12px rounded-xl
头像/图标容器 8px rounded-lg
状态徽章 6px rounded-md

4 阴影优化

添加轻微阴影

// 表格容器
<div className="bg-white border border-gray-100 rounded-lg shadow-sm">

// 按钮(主要操作)
<Button type="primary" size="large" className="shadow-md font-medium">

阴影层级:

shadow-sm:  0 1px 2px rgba(0, 0, 0, 0.05)   /* 轻微阴影 */
shadow:     0 1px 3px rgba(0, 0, 0, 0.1)    /* 标准阴影 */
shadow-md:  0 4px 6px rgba(0, 0, 0, 0.1)    /* 中等阴影 */

5 Tab导航优化

高度和间距精调

// 修改前
<div className="... px-6 flex items-center shadow-sm z-20 h-14 flex-shrink-0">
  <div className="flex space-x-8 h-full">

// 修改后
<div className="... px-6 flex items-center z-20 h-12 flex-shrink-0">
  <div className="flex space-x-6 h-full">  {/* space-x-8 → space-x-6 */}

Tab规范:

  • 高度:h-12 (48px)
  • Tab间距space-x-6 (24px)
  • 图标大小:w-4 h-4 (16px)
  • 字号:text-sm (14px)
  • 激活状态:font-semibold + border-blue-600

6 工作模式选择器优化

Collapse组件精细化

// 修改前
<Collapse className="mb-4 bg-white border border-gray-200 rounded-xl shadow-sm">
  <Collapse.Panel header={<div className="font-bold text-slate-800">📚 工作模式</div>}>

// 修改后
<Collapse className="bg-white border border-gray-100 rounded-lg shadow-sm" bordered={false}>
  <Collapse.Panel header={
    <div className="font-semibold text-slate-800 text-sm flex items-center">
      <span className="text-base mr-2">📚</span>
      工作模式
    </div>
  }>

改进点:

  • 边框颜色:border-gray-200border-gray-100
  • 圆角:rounded-xlrounded-lg
  • 标题字重:font-boldfont-semibold
  • 添加 bordered={false} 移除Ant Design默认边框

Radio选项优化

// 每个Radio选项的标题和描述间距
<div className="flex items-center mb-1.5">  {/* 添加mb-1.5 */}
  <Globe className="w-4 h-4 mr-2 text-blue-600" />
  <span className="font-semibold text-slate-800 text-sm">全文阅读模式</span>
</div>
<div className="text-xs text-slate-500 ml-6 leading-relaxed">
  加载全部 {kbInfo.fileCount} 篇文档,AI具备全知视角
</div>

7 Progress进度条优化

环形进度条精细调整

// 修改前
<Progress 
  type="circle" 
  percent={calculateTokenUsage()} 
  width={40}
  strokeColor="#3b82f6"
/>

// 修改后
<Progress 
  type="circle" 
  percent={calculateTokenUsage()} 
  width={42}           // 稍大一点
  strokeColor="#3b82f6"
  trailColor="#e5e7eb" // 轨道颜色
  strokeWidth={8}      // 线条宽度
/>

8 Alert提示框优化

结构和样式精细化

// 修改前
<Alert
  message="🌍 全文阅读模式:已加载 X 篇文档全文"
  description="AI将综合所有文献给您答案"
  type="info"
/>

// 修改后
<Alert
  message={
    <span className="font-semibold text-sm">
      🌍 全文阅读模式:已加载 {documents.length} 篇文档全文
    </span>
  }
  description={
    <span className="text-xs text-slate-600 leading-relaxed">
      AI将综合所有文献给您答案,适合文献综述、横向对比等场景
    </span>
  }
  type="info"
  className="border-blue-100 bg-blue-50/50"
/>

改进点:

  • 标题加粗:font-semibold
  • 描述文字:text-xs text-slate-600 leading-relaxed
  • 背景优化:bg-blue-50/50 (50%透明度)
  • 边框优化:border-blue-100

9 表格优化

状态徽章重构

// 修改前
<span className="... bg-green-50 text-green-700 border border-green-100">

// 修改后
<span className="inline-flex items-center px-2.5 py-1 rounded-md text-xs font-medium border bg-green-50 text-green-700 border-green-200">
  <CheckCircle2 className="w-3 h-3" />
  <span className="ml-1.5">解析完成</span>
</span>

改进点:

  • padding增加px-2 py-0.5px-2.5 py-1
  • 圆角:roundedrounded-md
  • 图标间距:mr-1ml-1.5
  • 边框颜色加深:border-green-100border-green-200

表格样式优化

<Table
  size="middle"  // 添加size
  className="pkb-document-table"  // 添加自定义class
  columns={[
    {
      title: '文件名',
      render: (text) => (
        <div className="flex items-center py-1">  {/* 添加py-1 */}
          <div className="w-9 h-9 bg-red-50 text-red-500 rounded-lg flex items-center justify-center mr-3 flex-shrink-0">
            <FileText className="w-5 h-5" />
          </div>
          <span className="font-semibold text-slate-700 text-sm">{text}</span>
        </div>
      ),
    },
  ]}
/>

自定义CSS:

/* workspace.css */
.pkb-document-table .ant-table-thead > tr > th {
  background-color: #f9fafb;  /* 表头背景 */
  color: #6b7280;             /* 表头文字 */
  font-weight: 600;           /* 字重 */
  padding: 14px 16px;         /* 内边距 */
  border-bottom: 1px solid #e5e7eb;
}

.pkb-document-table .ant-table-tbody > tr > td {
  padding: 16px;              /* 单元格padding */
  border-bottom: 1px solid #f3f4f6;
}

.pkb-document-table .ant-table-tbody > tr:hover > td {
  background-color: #f9fafb;  /* 悬停背景 */
}

🔟 背景颜色优化

多层次背景

// 外层容器:浅灰背景
<div className="h-full flex overflow-hidden bg-gray-50">

// Chat区域白色背景
<div className="flex-1 flex flex-col bg-white overflow-hidden">

// Alert区域灰色背景区分
<div className="flex-shrink-0 px-6 py-5 bg-gray-50 border-b border-gray-100">

背景层级:

  • 最外层:bg-gray-50 (#F9FAFB)
  • 内容区:bg-white (#FFFFFF)
  • 区块分隔:bg-gray-50 (#F9FAFB)
  • Alert背景bg-blue-50/50 (半透明)

📊 优化前后对比

视觉效果对比

项目 优化前 优化后 提升度
标题字重 font-bold (700) font-semibold (600) 更协调
辅助文字 text-gray-500 text-slate-500 + leading-relaxed 更清晰
边框颜色 border-gray-200 border-gray-100 更柔和
圆角大小 不统一 统一8px (rounded-lg) 更一致
间距标准 不规范 px-6 py-5 标准化 更舒适
阴影效果 无或过重 shadow-sm轻微阴影 更立体
Tab高度 56px (过高) 48px (精准) 更精致
状态徽章 简单 精致样式+图标 更专业

细节提升对比

字体层级

- 标题: font-bold
+ 标题: font-semibold

- 描述: text-xs text-gray-500
+ 描述: text-xs text-slate-500 leading-relaxed

间距层级

- padding: p-3 (12px)
+ padding: px-5 py-4 (20px/16px)

- margin: mb-3 (12px)
+ margin: mb-5 (20px)

颜色层级

- 边框: border-gray-200 (#E5E7EB)
+ 边框: border-gray-100 (#F3F4F6)

- 辅助文字: text-gray-500
+ 辅助文字: text-slate-500

📁 修改文件清单

修改文件5个

frontend-v2/src/modules/pkb/
├── pages/
│   └── WorkspacePage.tsx       (全面精细化优化)
├── components/Workspace/
│   ├── WorkModeSelector.tsx    (字体、间距、圆角优化)
│   ├── FullTextMode.tsx        (Alert样式优化)
│   └── DeepReadMode.tsx        (Alert样式优化)
└── styles/
    └── workspace.css           (新增自定义样式)

🎨 设计规范总结

颜色规范

const colors = {
  // 文字颜色
  primary: '#1F2937',    // text-slate-800 (主标题)
  secondary: '#334155',  // text-slate-700 (副标题)
  tertiary: '#64748B',   // text-slate-500 (辅助文字)
  quaternary: '#94A3B8', // text-slate-400 (次要信息)
  
  // 边框颜色
  border: '#F3F4F6',     // border-gray-100 (轻微分隔)
  borderStrong: '#E5E7EB', // border-gray-200 (明显分隔)
  
  // 背景颜色
  bgPrimary: '#FFFFFF',  // bg-white (主背景)
  bgSecondary: '#F9FAFB', // bg-gray-50 (次背景)
};

间距规范

const spacing = {
  // 水平padding
  px: {
    xs: 'px-3',  // 12px
    sm: 'px-4',  // 16px
    md: 'px-5',  // 20px
    lg: 'px-6',  // 24px
  },
  
  // 垂直padding
  py: {
    xs: 'py-2',  // 8px
    sm: 'py-3',  // 12px
    md: 'py-4',  // 16px
    lg: 'py-5',  // 20px
  },
  
  // 组件间距
  gap: {
    sm: 'space-y-3',  // 12px
    md: 'space-y-4',  // 16px
    lg: 'space-y-6',  // 24px
  },
};

圆角规范

const borderRadius = {
  sm: 'rounded-md',   // 6px (徽章)
  md: 'rounded-lg',   // 8px (卡片、按钮)
  lg: 'rounded-xl',   // 12px (输入框)
  full: 'rounded-full', // 9999px (头像)
};

阴影规范

const shadows = {
  sm: 'shadow-sm',   // 轻微阴影 (卡片)
  md: 'shadow',      // 标准阴影 (弹窗)
  lg: 'shadow-md',   // 中等阴影 (主按钮)
  xl: 'shadow-lg',   // 大阴影 (模态框)
};

字体规范

const typography = {
  // 字重
  weight: {
    medium: 'font-medium',    // 500 (次要标题)
    semibold: 'font-semibold', // 600 (主要标题)
    bold: 'font-bold',        // 700 (特殊强调)
  },
  
  // 字号
  size: {
    xs: 'text-xs',    // 12px (辅助说明)
    sm: 'text-sm',    // 14px (正文)
    base: 'text-base', // 16px (标题)
    lg: 'text-lg',    // 18px (大标题)
  },
  
  // 行高
  leading: {
    normal: 'leading-normal',   // 1.5
    relaxed: 'leading-relaxed', // 1.625
  },
};

验证清单

必须验证P0

  • Tab导航高度为48px
  • 字体使用font-semibold
  • 边框颜色为border-gray-100
  • 圆角统一为rounded-lg (8px)
  • 间距统一px-6 py-5等
  • 轻微阴影效果
  • 辅助文字颜色淡化

应该验证P1

  • 表格悬停效果流畅
  • 状态徽章样式精致
  • Alert背景半透明
  • Progress进度条流畅

可以优化P2

  • 动画过渡效果
  • 响应式布局优化
  • 深色模式支持

💡 设计原则总结

根据差距文档,我们遵循了以下设计原则:

1. 视觉层级清晰

  • 标题使用font-semibold突出重点
  • 辅助文字颜色淡化,拉开层级
  • 间距合理,呼吸感强

2. 细节精致

  • 圆角统一为8px
  • 轻微阴影增加立体感
  • 边框颜色淡化,更柔和

3. 间距舒适

  • 页面边距20-24px
  • 组件间距16-20px
  • 内容不贴边

4. 颜色协调

  • 主文字#1F2937
  • 辅助文字#64748B
  • 边框#F3F4F6

优化完成时间: 2026-01-06
优化人: AI Assistant
验证状态: 待用户刷新页面确认