Ryuiso 1 месяц назад
Родитель
Сommit
c77472d7f2
70 измененных файлов с 258 добавлено и 224 удалено
  1. 18 1
      jk-rag-platform/.claude/settings.local.json
  2. 13 0
      jk-rag-platform/index.html
  3. 1 1
      jk-rag-platform/src/components/404/index.tsx
  4. 5 5
      jk-rag-platform/src/components/404/style.scss
  5. 1 1
      jk-rag-platform/src/components/chat/welcome.tsx
  6. 31 30
      jk-rag-platform/src/components/common/AppCard/index.scss
  7. 1 1
      jk-rag-platform/src/components/common/AppCard/index.tsx
  8. 7 7
      jk-rag-platform/src/components/common/FilterBar/index.scss
  9. 1 1
      jk-rag-platform/src/components/common/FilterBar/index.tsx
  10. 1 1
      jk-rag-platform/src/components/common/FilterDrawer/index.tsx
  11. 2 2
      jk-rag-platform/src/components/common/GuideTips/index.scss
  12. 1 1
      jk-rag-platform/src/components/common/GuideTips/index.tsx
  13. 27 25
      jk-rag-platform/src/components/common/HeroBanner/index.scss
  14. 1 1
      jk-rag-platform/src/components/common/HeroBanner/index.tsx
  15. 1 1
      jk-rag-platform/src/components/common/StatsGrid/index.scss
  16. 1 1
      jk-rag-platform/src/components/common/StatsGrid/index.tsx
  17. 1 1
      jk-rag-platform/src/pages/appCenter/appPlazaList/index.tsx
  18. 1 1
      jk-rag-platform/src/pages/appCenter/appPlazaList/style.scss
  19. 1 1
      jk-rag-platform/src/pages/appCenter/categoryApps/index.tsx
  20. 1 1
      jk-rag-platform/src/pages/appCenter/categoryApps/style.scss
  21. 2 2
      jk-rag-platform/src/pages/appCenter/mobile/MobileH5.tsx
  22. 1 1
      jk-rag-platform/src/pages/appCenter/mobile/components/AppPlaza.tsx
  23. 1 1
      jk-rag-platform/src/pages/appCenter/mobile/components/MobileHeader.tsx
  24. 1 1
      jk-rag-platform/src/pages/deepseek/dataExport/index.tsx
  25. 1 1
      jk-rag-platform/src/pages/home/index.tsx
  26. 4 4
      jk-rag-platform/src/pages/home/style.scss
  27. 1 1
      jk-rag-platform/src/pages/knowledgeLib/detail/components/MdModal.tsx
  28. 1 1
      jk-rag-platform/src/pages/knowledgeLib/detail/components/prevewSlice.tsx
  29. 1 1
      jk-rag-platform/src/pages/knowledgeLib/detail/drawerIndex.tsx
  30. 1 1
      jk-rag-platform/src/pages/knowledgeLib/detail/index.tsx
  31. 2 2
      jk-rag-platform/src/pages/knowledgeLib/list/KnowledgeDrawer.scss
  32. 1 1
      jk-rag-platform/src/pages/knowledgeLib/list/KnowledgeDrawer.tsx
  33. 1 1
      jk-rag-platform/src/pages/knowledgeLib/list/index.tsx
  34. 3 3
      jk-rag-platform/src/pages/knowledgeLib/list/style.scss
  35. 1 1
      jk-rag-platform/src/pages/knowledgeLib/revisionTool/components/reviseDrawer.scss
  36. 1 1
      jk-rag-platform/src/pages/knowledgeLib/revisionTool/components/reviseDrawer.tsx
  37. 1 1
      jk-rag-platform/src/pages/layout/components/Header.tsx
  38. 1 1
      jk-rag-platform/src/pages/layout/components/Sidebar.tsx
  39. 64 64
      jk-rag-platform/src/pages/layout/components/header.scss
  40. 4 4
      jk-rag-platform/src/pages/layout/components/sidebar.scss
  41. 1 1
      jk-rag-platform/src/pages/layout/index.tsx
  42. 1 1
      jk-rag-platform/src/pages/layout/style.scss
  43. 1 1
      jk-rag-platform/src/pages/login/index.tsx
  44. 2 2
      jk-rag-platform/src/pages/login/style.scss
  45. 1 1
      jk-rag-platform/src/pages/otherApps/index.tsx
  46. 1 1
      jk-rag-platform/src/pages/otherApps/otherAppList/style.scss
  47. 1 1
      jk-rag-platform/src/pages/otherApps/style.scss
  48. 5 5
      jk-rag-platform/src/pages/questionAnswer/form/DrawerForm.scss
  49. 1 1
      jk-rag-platform/src/pages/questionAnswer/form/Step1Basic.tsx
  50. 1 1
      jk-rag-platform/src/pages/questionAnswer/form/Step1Drawer.tsx
  51. 1 1
      jk-rag-platform/src/pages/questionAnswer/form/Step2Config.tsx
  52. 6 6
      jk-rag-platform/src/pages/questionAnswer/form/VipSelector.scss
  53. 1 1
      jk-rag-platform/src/pages/questionAnswer/form/VipSelector.tsx
  54. 1 1
      jk-rag-platform/src/pages/questionAnswer/form/index.tsx
  55. 4 4
      jk-rag-platform/src/pages/questionAnswer/form/style.scss
  56. 1 1
      jk-rag-platform/src/pages/questionAnswer/info/index.tsx
  57. 4 4
      jk-rag-platform/src/pages/questionAnswer/info/style.scss
  58. 1 1
      jk-rag-platform/src/pages/questionAnswer/list/index.tsx
  59. 1 1
      jk-rag-platform/src/pages/questionAnswer/list/style.scss
  60. 1 1
      jk-rag-platform/src/pages/system/apiKey/index.tsx
  61. 1 1
      jk-rag-platform/src/pages/system/audit/components/PreviewModal.tsx
  62. 1 1
      jk-rag-platform/src/pages/system/audit/components/auditHistory.tsx
  63. 1 1
      jk-rag-platform/src/pages/system/audit/index.tsx
  64. 1 1
      jk-rag-platform/src/pages/system/contentManagement/index.tsx
  65. 1 1
      jk-rag-platform/src/pages/system/usageStatistics/index.tsx
  66. 1 1
      jk-rag-platform/src/pages/universalChat/components/ChatInterface.tsx
  67. 1 1
      jk-rag-platform/src/pages/universalChat/components/Sidebar.tsx
  68. 1 1
      jk-rag-platform/src/pages/universalChat/index.tsx
  69. 1 1
      jk-rag-platform/src/pages/universalChat/styles/index.scss
  70. 4 3
      jk-rag-platform/src/styles/global.scss

+ 18 - 1
jk-rag-platform/.claude/settings.local.json

@@ -56,7 +56,24 @@
       "Bash(sed -i '' 's/@screen-md/$screen-md/g; s/@spacing-10/$spacing-10/g' global.scss)",
       "Bash(sed -i '' 's/@primary-light/$primary-light/g; s/@primary-dark/$primary-dark/g' global.scss)",
       "Bash(git commit:*)",
-      "Bash(git add:*)"
+      "Bash(git add:*)",
+      "Bash(npm run:*)",
+      "Bash(curl -s http://localhost:3100/)",
+      "Bash(curl -s http://localhost:3100/src/pages/layout/style.scss)",
+      "Bash(npm list:*)",
+      "Bash(pkill -f \"vite --mode development\")",
+      "Bash(curl -s \"http://localhost:3100/src/main.tsx\")",
+      "Bash(find . -name *.scss -exec sed -i \"s/@import ''''~@\\\\/styles\\\\/variables.scss'''';/@import ''''..\\\\/..\\\\/styles\\\\/variables.scss'''';/g\" {})",
+      "Bash(2)",
+      "Bash(find . -path ./node_modules -prune -o -name *.scss -print)",
+      "Bash(xargs sed:*)",
+      "Bash(while read:*)",
+      "Bash(do echo:*)",
+      "Read(//Users/misasagi/Git/xiaozhi-v2/jk-rag-platform/**)",
+      "Bash(done)",
+      "Bash(grep:*)",
+      "Bash(curl -s http://localhost:3100)",
+      "Bash(npx sass:*)"
     ]
   }
 }

+ 13 - 0
jk-rag-platform/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+  <meta charset="UTF-8" />
+  <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>建科小智 - RAG 应用管理平台</title>
+</head>
+<body>
+  <div id="root"></div>
+  <script type="module" src="/src/main.tsx"></script>
+</body>
+</html>

+ 1 - 1
jk-rag-platform/src/components/404/index.tsx

@@ -1,6 +1,6 @@
 import * as React from 'react';
 import notFoundSrc from '@/assets/public/notFound.png';
-import './style.less';
+import './style.scss';
 
 const NotFound: React.FC = () => {
     return (

+ 5 - 5
jk-rag-platform/src/components/404/style.scss

@@ -1,8 +1,8 @@
 .notFound {
     width: 100%;
     height: 100%;
-    padding-bottom: 30px;
-    background: #FFFFFF;
+    padding-bottom: $spacing-7;
+    background: $bg-secondary;
     display: flex;
     flex-direction: column;
     justify-content: center;
@@ -15,9 +15,9 @@
     }
 
     &-text {
-        font-size: 16px;
-        font-weight: bold;
+        font-size: $font-lg;
+        font-weight: $font-bold;
         color: $primary-color;
-        margin-bottom: 20px;
+        margin-bottom: $spacing-5;
     }
 }

+ 1 - 1
jk-rag-platform/src/components/chat/welcome.tsx

@@ -1,5 +1,5 @@
 import { useEffect, useState } from 'react';
-import './welcome.less';
+import './welcome.scss';
 import avatarSrc from '@/assets/public/logo.png';
 import logoSrc from '@/assets/public/logo.png';
 import { nanoid } from "nanoid";

+ 31 - 30
jk-rag-platform/src/components/common/AppCard/index.scss

@@ -1,11 +1,11 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== AppCard 应用卡片样式 =====
 // 使用全局变量,符合设计规范 v3.0
 
 .app-card {
-    background: #FFFFFF;
+    background: $bg-secondary;
     border: 1px solid $border-base;
     border-radius: $radius-xl;
     padding: $spacing-4;
@@ -20,7 +20,7 @@
     &:hover {
         transform: translateY(-$spacing-1);
         box-shadow: $shadow-lg;
-        border-color: fade($primary-color, 30%);
+        border-color: rgba(0, 93, 128, 0.3);
 
         .card-actions {
             opacity: 1;
@@ -43,15 +43,15 @@
     position: absolute;
     top: $spacing-3;
     right: $spacing-3;
-    padding: 2px 6px;
-    background: linear-gradient(135deg, #F97316 0%, #EA580C 100%);
-    color: #FFFFFF;
+    padding: $spacing-1 $spacing-2;
+    background: linear-gradient(135deg, $warning-color 0%, darken($warning-color, 10%) 100%);
+    color: $bg-secondary;
     border-radius: $radius-full;
-    font-size: 9px;
+    font-size: $font-xs;
     font-weight: $font-weight-bold;
     text-transform: uppercase;
     letter-spacing: 0.05em;
-    box-shadow: 0 2px 8px rgba(249, 115, 22, 0.3);
+    box-shadow: 0 2px 8px rgba($warning-color, 0.3);
     z-index: 5;
 }
 
@@ -61,7 +61,7 @@
     top: $spacing-4;
     left: $spacing-4;
     padding: 2px 6px;
-    color: #FFFFFF;
+    color: $bg-secondary;
     border-radius: $radius-full;
     font-size: 9px;
     font-weight: $font-weight-semibold;
@@ -78,7 +78,7 @@
 }
 
 // 创建者信息区域 - 三行文字与图标高度一致(56px)
-// 计算:$font-xs + $font-base + $font-sm = 9px + 13px + 12px = 34px 文字 
+// 计算:$font-xs + $font-base + $font-sm = 9px + 13px + 12px = 34px 文字
 //      + $spacing-1 × 2 = 8px 间距 + 行高余量 ≈ 56px
 .card-creator {
     display: flex;
@@ -92,6 +92,7 @@
         gap: $spacing-1;  // 行间距 4px
         line-height: $line-height-tight;
 
+        
         .card-creator-label {
             font-size: $font-xs;  // 9px
             color: $text-hint;
@@ -126,8 +127,8 @@
 
 // 图标容器
 .card-icon-wrapper {
-    width: 56px;
-    height: 56px;
+    width: $card-icon-size;
+    height: $card-icon-size;
     border-radius: $radius-xl;
     display: flex;
     align-items: center;
@@ -169,8 +170,8 @@
     z-index: 15;
 
     .card-action-btn {
-        width: 36px;
-        height: 36px;
+        width: $card-btn-size;
+        height: $card-btn-size;
         border-radius: $radius-lg;
         background: $bg-tertiary;
         border: none;
@@ -321,7 +322,7 @@
     font-size: $font-xs;
     font-weight: $font-weight-semibold;
     padding: 2px 8px;
-    border-radius: @radius-sm;
+    border-radius: $radius-sm;
     background: $bg-tertiary;
 }
 
@@ -388,8 +389,8 @@
         border-radius: $radius-lg;
         font-size: $font-md;
         font-weight: $font-weight-semibold;
-        color: #FFFFFF;
-        box-shadow: 0 4px 12px fade($primary-color, 30%);
+        color: $bg-secondary;
+        box-shadow: 0 4px 12px rgba(0, 93, 128, 0.3);
         transition: $transition-base;
         display: inline-flex;
         align-items: center;
@@ -397,13 +398,13 @@
 
         &:hover {
             background: linear-gradient(135deg, $primary-dark 0%, $primary-color 100%);
-            box-shadow: 0 6px 16px fade($primary-color, 40%);
+            box-shadow: 0 6px 16px rgba(0, 93, 128, 0.4);
             transform: translateY(-$spacing-1);
         }
 
         &:active {
             transform: translateY(0);
-            box-shadow: 0 2px 8px fade($primary-color, 20%);
+            box-shadow: 0 2px 8px rgba(0, 93, 128, 0.2);
         }
 
         .iconify {
@@ -423,10 +424,10 @@
     .mobile-app-card {
         min-height: auto;
         padding: 0;
-        border-radius: var(--h5-radius-lg, 16px);
+        border-radius: var(--h5-radius-lg, $radius-xl);
         overflow: hidden;
-        background: var(--h5-bg-secondary, #FFFFFF);
-        border: 1px solid var(--h5-border, #E8E4DF);
+        background: var(--h5-bg-secondary, $bg-secondary);
+        border: 1px solid var(--h5-border, $border-base);
 
         // 隐藏所有复杂元素
         .card-creator,
@@ -448,7 +449,7 @@
             width: 100%;
             height: auto;
             aspect-ratio: 1;  // 正方形
-            border-radius: 0;
+            border-radius: $radius-xl;
             padding: 0;
             margin: 0;
 
@@ -462,17 +463,17 @@
 
         // 头部区域
         .card-header {
-            padding: var(--h5-spacing-md, 12px);
+            padding: var(--h5-spacing-md, $spacing-3);
             margin: 0;
-            gap: var(--h5-spacing-sm, 8px);
+            gap: var(--h5-spacing-sm, $spacing-2);
         }
 
         // 卡片标题
         .card-title {
-            padding: 0 var(--h5-spacing-md, 12px) var(--h5-spacing-md, 12px);
-            font-size: var(--h5-font-base, 15px);
-            font-weight: var(--h5-font-weight-medium, 500);
-            color: var(--h5-text-primary, #1A1A1A);
+            padding: 0 var(--h5-spacing-md, $spacing-3) var(--h5-spacing-md, $spacing-3);
+            font-size: var(--h5-font-base, $font-lg);
+            font-weight: var(--h5-font-weight-medium, $font-weight-medium);
+            color: var(--h5-text-primary, $text-primary);
             margin: 0;
             overflow: hidden;
             text-overflow: ellipsis;
@@ -488,7 +489,7 @@
 
         // 点击反馈
         &:active {
-            background: var(--h5-bg-tertiary, #F5F0EB);
+            background: var(--h5-bg-tertiary, $bg-tertiary);
         }
     }
 }

+ 1 - 1
jk-rag-platform/src/components/common/AppCard/index.tsx

@@ -1,6 +1,6 @@
 import * as React from 'react';
 import { Dropdown, MenuProps, Button } from 'antd';
-import './index.less';
+import './index.scss';
 
 export interface AppCardProps {
     // 基本信息

+ 7 - 7
jk-rag-platform/src/components/common/FilterBar/index.scss

@@ -2,7 +2,7 @@
 // 使用全局变量,符合设计规范 v3.6
 // 注意:全局 .filter-bar 已移除 border-bottom,此处定义组件特定样式
 
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 .filter-bar {
     display: flex;
@@ -43,7 +43,7 @@
     .search-wrapper {
         display: flex;
         align-items: center;
-        width: 300px;
+        width: $spacing-10 * 7.5;  // 300px
         height: 36px;  // 36px - 与 Tab 高度统一
         background: $bg-secondary;
         border: 1px solid $border-base;
@@ -82,26 +82,26 @@
             border: none;
             border-left: 1px solid transparent;
             color: $text-secondary;
-            font-size: 15px;
+            font-size: $font-lg;
             cursor: pointer;
             transition: all 0.2s $easing-default;
             flex-shrink: 0;
             
             &:hover:not(:disabled) {
                 color: $primary-color;
-                background: fade($primary-color, 5%);
+                background: rgba(0, 93, 128, 0.05);
             }
-            
+
             &:disabled {
                 cursor: not-allowed;
                 opacity: 0.6;
             }
         }
-        
+
         // 聚焦状态
         &.focused {
             border-color: $primary-color;
-            box-shadow: 0 0 0 2px fade($primary-color, 20%);
+            box-shadow: 0 0 0 2px rgba(0, 93, 128, 0.2);
             
             .search-button {
                 color: $primary-color;

+ 1 - 1
jk-rag-platform/src/components/common/FilterBar/index.tsx

@@ -1,7 +1,7 @@
 import React, { useState } from 'react';
 import { Tabs, Input, Spin } from 'antd';
 import { SearchOutlined } from '@ant-design/icons';
-import './index.less';
+import './index.scss';
 import { FilterBarProps } from './types';
 
 /**

+ 1 - 1
jk-rag-platform/src/components/common/FilterDrawer/index.tsx

@@ -1,6 +1,6 @@
 import * as React from 'react';
 import { Drawer, Tag, Checkbox, Space, Button } from 'antd';
-import './index.less';
+import './index.scss';
 
 export interface FilterDrawerProps {
     open: boolean;

+ 2 - 2
jk-rag-platform/src/components/common/GuideTips/index.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // GuideTips 引导提示组件 - 遵循全局样式规则
 .guide-tips-wrapper {
@@ -69,7 +69,7 @@
 
     // 全局卡片样式优化
     .guide-tips-card {
-        background: #FFFFFF;
+        background: $bg-secondary;
         border-radius: $radius-lg;
         box-shadow: $shadow-sm;
         border: 1px solid $border-light;

+ 1 - 1
jk-rag-platform/src/components/common/GuideTips/index.tsx

@@ -1,7 +1,7 @@
 import * as React from 'react';
 import { Card, Row, Col } from 'antd';
 import { BulbOutlined } from '@ant-design/icons';
-import './index.less';
+import './index.scss';
 
 interface TipsStep {
     title: string;

+ 27 - 25
jk-rag-platform/src/components/common/HeroBanner/index.scss

@@ -1,11 +1,13 @@
+@import '@/styles/variables.scss';
+
 .hero-banner {
     position: relative;
     width: 100%;
     height: 150px;
-    border-radius: 24px;
+    border-radius: $radius-2xl;
     overflow: hidden;
-    margin-bottom: 40px;
-    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
+    margin-bottom: $spacing-10;
+    box-shadow: $shadow-xl;
 }
 
 .hero-banner-image {
@@ -17,17 +19,17 @@
 .hero-banner-overlay {
     position: absolute;
     inset: 0;
-    background: linear-gradient(to right, #0F172A, rgba(15, 23, 42, 0.4), transparent);
+    background: linear-gradient(to right, rgba(15, 23, 42, 0.9), rgba(15, 23, 42, 0.4), transparent);
     display: flex;
     align-items: center;
-    padding: 0 24px;
+    padding: 0 $spacing-6;
 }
 
 .hero-banner-content {
     max-width: 800px;
     display: flex;
     align-items: center;
-    gap: 20px;
+    gap: $spacing-5;
 }
 
 .hero-banner-text {
@@ -38,17 +40,17 @@
 .hero-banner-badge {
     display: inline-flex;
     align-items: center;
-    gap: 4px;
-    background: rgba(59, 130, 246, 0.2);
-    border: 1px solid rgba(96, 165, 250, 0.3);
-    padding: 2px 8px;
-    border-radius: 9999px;
+    gap: $spacing-1;
+    background: rgba($primary-color, 0.2);
+    border: 1px solid rgba($primary-light, 0.3);
+    padding: $spacing-1 $spacing-2;
+    border-radius: $radius-full;
     backdrop-filter: blur(4px);
-    margin-bottom: 8px;
+    margin-bottom: $spacing-2;
 
     .iconify {
-        font-size: 12px;
-        color: #60A5FA;
+        font-size: $font-xs;
+        color: $primary-light;
     }
 
     span:last-child {
@@ -60,15 +62,15 @@
 }
 
 .hero-banner-title {
-    font-size: 18px;
-    font-weight: 700;
-    color: #FFFFFF;
-    margin-bottom: 6px;
+    font-size: $font-2xl;
+    font-weight: $font-weight-bold;
+    color: $bg-secondary;
+    margin-bottom: $spacing-1;
     font-style: italic;
 }
 
 .hero-banner-description {
-    font-size: 12px;
+    font-size: $font-sm;
     color: #CBD5E1;
     line-height: 1.4;
     display: flex;
@@ -102,7 +104,7 @@
 
     &.primary {
         background: $primary-color;
-        color: #FFFFFF;
+        color: $bg-secondary;
 
         &:hover {
             background: $primary-light;
@@ -110,15 +112,15 @@
     }
 
     &.secondary {
-        background: #FFFFFF;
-        border: 1px solid #E5E7EB;
-        color: #1F2937;
+        background: $bg-secondary;
+        border: 1px solid $border-base;
+        color: $text-primary;
         backdrop-filter: blur(4px);
         font-weight: 600;
 
         &:hover {
-            background: #F9FAFB;
-            border-color: #D1D5DB;
+            background: $bg-primary;
+            border-color: $border-dark;
         }
     }
 }

+ 1 - 1
jk-rag-platform/src/components/common/HeroBanner/index.tsx

@@ -1,5 +1,5 @@
 import * as React from 'react';
-import './index.less';
+import './index.scss';
 
 const HeroBanner: React.FC = () => {
     return (

+ 1 - 1
jk-rag-platform/src/components/common/StatsGrid/index.scss

@@ -1,7 +1,7 @@
 // StatsGrid 统计卡片网格 - 紧凑布局 v3.9
 // 遵循全局样式规范,使用全局变量
 
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 .stats-grid {
     display: grid;

+ 1 - 1
jk-rag-platform/src/components/common/StatsGrid/index.tsx

@@ -1,5 +1,5 @@
 import * as React from 'react';
-import './index.less';
+import './index.scss';
 
 interface StatCardProps {
     icon: string;

+ 1 - 1
jk-rag-platform/src/pages/appCenter/appPlazaList/index.tsx

@@ -2,7 +2,7 @@ import * as React from 'react';
 import { Pagination } from 'antd';
 import { AppCard, FilterDrawer, HeroBanner, StatsGrid } from '@/components/common';
 import { useAppStore, type FilterState } from './store';
-import './style.less';
+import './style.scss';
 // 导入全局 Mock 数据
 import { getAppsByPageType, getPageConfig, processAppData, mockCurrentUser } from '@/mock';
 import { message } from 'antd';

+ 1 - 1
jk-rag-platform/src/pages/appCenter/appPlazaList/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // 应用广场列表页面样式
 // 说明:

+ 1 - 1
jk-rag-platform/src/pages/appCenter/categoryApps/index.tsx

@@ -3,7 +3,7 @@ import { Pagination, message } from 'antd';
 import { useLocation } from 'react-router-dom';
 import { AppCard, FilterDrawer } from '@/components/common';
 import { useCategoryAppStore, type FilterState } from './store';
-import './style.less';
+import './style.scss';
 // 导入全局 Mock 数据
 import { getAppsByPageType, getPageConfig, processAppData, mockCurrentUser } from '@/mock';
 

+ 1 - 1
jk-rag-platform/src/pages/appCenter/categoryApps/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // 分类应用列表页面样式
 // 说明:

+ 2 - 2
jk-rag-platform/src/pages/appCenter/mobile/MobileH5.tsx

@@ -2,8 +2,8 @@ import React, { useState } from 'react';
 import { SideBar } from '@/pages/universalChat/components/Sidebar';
 import { ChatInterface } from '@/pages/universalChat/components/ChatInterface';
 import AppPlaza from './components/AppPlaza';
-import './styles/mobile.less';
-import './MobileH5.less';
+import './styles/mobile.scss';
+import './MobileH5.scss';
 
 /**
  * H5 移动端整合页面

+ 1 - 1
jk-rag-platform/src/pages/appCenter/mobile/components/AppPlaza.tsx

@@ -2,7 +2,7 @@ import React, { useState } from 'react';
 import { message } from 'antd';
 import { AppCard } from '@/components/common';
 import { getAppsByPageType } from '@/mock';
-import './AppPlaza.less';
+import './AppPlaza.scss';
 
 /**
  * 应用广场(AppPlaza)- H5 移动端

+ 1 - 1
jk-rag-platform/src/pages/appCenter/mobile/components/MobileHeader.tsx

@@ -1,5 +1,5 @@
 import React from 'react';
-import './MobileHeader.less';
+import './MobileHeader.scss';
 
 /**
  * H5 移动端 Header 组件

+ 1 - 1
jk-rag-platform/src/pages/deepseek/dataExport/index.tsx

@@ -5,7 +5,7 @@ import Search from './components/Search';
 import dayjs from 'dayjs';
 import store from './store';
 import { Record } from './types';
-import './style.less';
+import './style.scss';
 
 const DataExport: React.FC = () => {
     const {

+ 1 - 1
jk-rag-platform/src/pages/home/index.tsx

@@ -7,7 +7,7 @@ import RagApplicationsTable from './components/RagApplicationsTable'
 import RagApplicationsModel from './components/RagApplicationsModel'
 import RagKnowledgModel from './components/RagKnowledgModel'
 import { apis } from '@/apis';
-import './style.less'
+import './style.scss'
 const App: React.FC = () => {
 
     const {

+ 4 - 4
jk-rag-platform/src/pages/home/style.scss

@@ -1,12 +1,12 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // Home 首页样式
 // 说明:使用全局变量,避免硬编码
 
 // 卡片背景渐变 - 使用企业蓝色系
 .card-bg-primary {
-    background: linear-gradient(135deg, 
-        fade($primary-color, 5%) 0%, 
-        fade($primary-color, 1%) 100%);
+    background: linear-gradient(135deg,
+        rgba(0, 93, 128, 0.05) 0%,
+        rgba(0, 93, 128, 0.01) 100%);
 }

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/detail/components/MdModal.tsx

@@ -28,7 +28,7 @@ import MarkdownIt from 'markdown-it';
 
 import { apis } from '@/apis';
 import config, { getHeaders } from '@/apis/config';
-import './style.less'
+import './style.scss'
 import { Document, Page, pdfjs } from 'react-pdf';
 import workerSrc from '@/assets/pdf.worker.min.js?url';
 import 'react-pdf/dist/Page/TextLayer.css';

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/detail/components/prevewSlice.tsx

@@ -6,7 +6,7 @@ import type { DrawerProps, RadioChangeEvent } from 'antd';
 import { SnippetsOutlined } from '@ant-design/icons';
 import MarkdownIt from 'markdown-it';
 import { fetchReviseToolAllList, fetchReviseToolSliceList, apis } from '@/apis';
-import '../../revisionTool/components/reviseDrawer.less'
+import '../../revisionTool/components/reviseDrawer.scss'
 import { Document, Page, pdfjs } from 'react-pdf';
 
 interface ReviseDrawerProps {

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/detail/drawerIndex.tsx

@@ -24,7 +24,7 @@ import dayjs from 'dayjs';
 import axios from 'axios';
 import LocalStorage from '@/LocalStorage';
 import store from './store';
-import './style.less';
+import './style.scss';
 
 const { Dragger } = Upload;
 interface Props{

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/detail/index.tsx

@@ -33,7 +33,7 @@ import dayjs from 'dayjs';
 import axios from 'axios';
 import LocalStorage from '@/LocalStorage';
 import store from './store';
-import './style.less';
+import './style.scss';
 import { apis } from '@/apis';
 import { useLayoutStore } from '@/pages/layout/store';
 const { Dragger } = Upload;

+ 2 - 2
jk-rag-platform/src/pages/knowledgeLib/list/KnowledgeDrawer.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== 知识库 Drawer 样式 =====
 // 说明:只定义页面特定的样式,不覆盖 Ant Design 和全局样式
@@ -26,7 +26,7 @@
                 width: 48px;
                 height: 48px;
                 border-radius: $radius-lg;
-                background: fade($primary-color, 10%);
+                background: rgba(0, 93, 128, 0.1);
                 display: flex;
                 align-items: center;
                 justify-content: center;

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/list/KnowledgeDrawer.tsx

@@ -1,6 +1,6 @@
 import * as React from 'react';
 import { Drawer, Form, Input, Select, Button, Space, Divider, message, Radio } from 'antd';
-import './KnowledgeDrawer.less';
+import './KnowledgeDrawer.scss';
 
 interface KnowledgeDrawerProps {
     open: boolean;

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/list/index.tsx

@@ -6,7 +6,7 @@ import { GuideTips, FilterBar } from '@/components/common';
 import InfoModal from './components/InfoModal';
 import { useKnowledgeLibListStore } from './store';
 import { Record } from './types';
-import './style.less';
+import './style.scss';
 import LocalStorage from '@/LocalStorage';
 import dayjs from 'dayjs';
 // 导入 GuideTips 配置

+ 3 - 3
jk-rag-platform/src/pages/knowledgeLib/list/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // 知识库列表页面样式
 // 说明:优先使用全局样式,本文件只定义必要的表格优化样式
@@ -51,7 +51,7 @@
 
     // 悬停效果
     &:hover {
-        background: fade($primary-color, 10%);
+        background: $bg-active;
         color: $primary-color;
 
         .iconify {
@@ -62,7 +62,7 @@
     // 危险操作(删除)
     &[danger] {
         &:hover {
-            background: fade($error-color, 10%);
+            background: rgba(220, 38, 38, 0.1);
             color: $error-color;
         }
     }

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/revisionTool/components/reviseDrawer.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== 修订工具 Drawer 样式 =====
 // 说明:只定义页面特定的样式

+ 1 - 1
jk-rag-platform/src/pages/knowledgeLib/revisionTool/components/reviseDrawer.tsx

@@ -5,7 +5,7 @@ import type { DrawerProps, RadioChangeEvent } from 'antd';
 import { SnippetsOutlined, ExceptionOutlined, DeleteOutlined,QuestionCircleOutlined } from '@ant-design/icons';
 import MarkdownIt from 'markdown-it';
 import { fetchReviseToolAllList, fetchReviseToolSliceList, apis, submitReviseSliceApi } from '@/apis';
-import './reviseDrawer.less'
+import './reviseDrawer.scss'
 import LocalStorage from '@/LocalStorage';
 
 import RevisionHistory from './revisionHistory';

+ 1 - 1
jk-rag-platform/src/pages/layout/components/Header.tsx

@@ -4,7 +4,7 @@ import { useNavigate } from 'react-router-dom';
 import { MenuFoldOutlined, MenuUnfoldOutlined, MessageOutlined } from '@ant-design/icons';
 import LocalStorage from '@/LocalStorage';
 import { useLayoutStore } from '../store';
-import './header.less';
+import './header.scss';
 import jkLogo from '@/assets/public/jkLogo.svg';       // 桌面端 Logo(长方形)
 import jkLogoSm from '@/assets/public/jkLogo-sm.svg';  // H5/Pad 端 Logo(方形)
 

+ 1 - 1
jk-rag-platform/src/pages/layout/components/Sidebar.tsx

@@ -1,7 +1,7 @@
 import * as React from 'react';
 import { useNavigate, useLocation } from 'react-router-dom';
 import { useLayoutStore } from '../store';
-import './sidebar.less';
+import './sidebar.scss';
 
 interface NavItem {
     key: string;

+ 64 - 64
jk-rag-platform/src/pages/layout/components/header.scss

@@ -1,17 +1,17 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 .header {
     width: 100%;
     height: $header-height;
     padding: 0 $spacing-6;
-    background: rgba(255, 255, 255, 0.8);
+    background: rgba($bg-secondary, 0.8);
     backdrop-filter: blur(12px);
     -webkit-backdrop-filter: blur(12px);
     display: flex;
     justify-content: space-between;
     align-items: center;
-    border-bottom: 1px solid rgba(229, 231, 235, 0.5);
+    border-bottom: 1px solid rgba($border-base, 0.5);
     box-shadow: $shadow-sm;
     position: fixed;
     top: 0;
@@ -20,7 +20,7 @@
     transition: $transition-base;
 
     &.scrolled {
-        background: rgba(255, 255, 255, 1);
+        background: $bg-secondary;
         box-shadow: $shadow-md;
     }
 
@@ -58,7 +58,7 @@
     &-logo-wrapper {
         display: flex;
         align-items: center;
-        gap: $spacing-4;
+        gap: $spacing-5;
         flex-shrink: 0;
     }
 
@@ -77,7 +77,7 @@
         }
 
         .logo-image {
-            height: 36px;  // 固定高度 36px
+            height: $spacing-9;  // 固定高度
             width: auto;   // 宽度自适应
             object-fit: contain;
             flex-shrink: 0;
@@ -86,7 +86,7 @@
         // Logo 图形与文字之间的竖线间隔
         .logo-divider {
             width: 1px;
-            height: 28px;
+            height: $font-xl;
             background: $border-base;  // 浅灰色
             flex-shrink: 0;
         }
@@ -105,7 +105,7 @@
             }
 
             .logo-subtitle {
-                font-size: $font-xs;
+                font-size: 10px;  // 副标题字体减小
                 font-weight: $font-weight-semibold;
                 color: $primary-light;
                 text-transform: uppercase;
@@ -121,7 +121,7 @@
             min-width: 180px;  // 平板端最小宽度减小
             
             .logo-image {
-                height: 36px;  // 保持 36px 高度
+                height: $font-xl;  // 平板端保持
             }
         }
         
@@ -137,7 +137,7 @@
             min-width: 140px;  // 移动端最小宽度更小
             
             .logo-image {
-                height: 32px;  // 移动端稍微减小
+                height: $spacing-8;  // 移动端稍微减小
             }
             
             .logo-title {
@@ -154,7 +154,7 @@
     &-right {
         display: flex;
         align-items: center;
-        gap: 16px;
+        gap: $spacing-5;
         margin-left: auto;
     }
 
@@ -170,7 +170,7 @@
     //         top: 50%;
     //         transform: translateY(-50%);
     //         font-size: 20px;
-    //         color: #9CA3AF;
+    //         color: $text-hint;
     //         pointer-events: none;
     //     }
 
@@ -178,11 +178,11 @@
     //         width: 100%;
     //         height: 40px;
     //         padding: 0 16px 0 48px;
-    //         background: rgba(243, 244, 246, 0.8);
+    //         background: rgba($bg-tertiary, 0.8);
     //         border: 1px solid transparent;
     //         border-radius: 8px;
     //         font-size: 14px;
-    //         color: #1F2937;
+    //         color: $text-primary;
     //         outline: none;
     //         transition: all 0.2s ease;
 
@@ -197,7 +197,7 @@
     //         }
 
     //         &:hover {
-    //             background: rgba(243, 244, 246, 1);
+    //             background: $bg-secondary;
     //         }
     //     }
     // }
@@ -206,25 +206,25 @@
     .security-status {
         display: flex;
         align-items: center;
-        gap: 6px;
-        padding: 6px 12px;
-        background: rgba(243, 244, 246, 0.8);
-        border-radius: 9999px;
+        gap: $spacing-1;
+        padding: $spacing-2 $spacing-3;
+        background: rgba($bg-tertiary, 0.8);
+        border-radius: $radius-full;
         font-size: 12px;
-        color: #6B7280;
+        color: $text-hint;
         font-weight: 500;
         cursor: default;
         transition: all 0.2s ease;
 
         &:hover {
-            background: rgba(243, 244, 246, 1);
+            background: rgba($bg-tertiary, 1);
         }
 
         .status-dot {
             width: 8px;
             height: 8px;
             border-radius: 50%;
-            background: #10B981;
+            background: $success-color;
             animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
         }
     }
@@ -233,14 +233,14 @@
     .quick-access-btn {
         display: flex;
         align-items: center;
-        gap: 6px;
-        padding: 8px 16px;
-        background: linear-gradient(135deg, #00A0CA 0%, #005D80 100%);  // 企业 Logo 蓝色渐变
+        gap: $spacing-1;
+        padding: $spacing-2 $spacing-3;
+        background: linear-gradient(135deg, $primary-light 0%, $primary-color 100%);  // 企业 Logo 蓝色渐变
         border: none;
         border-radius: 9999px;
         font-size: 13px;
         font-weight: 600;
-        color: #FFFFFF;
+        color: $bg-secondary;
         cursor: pointer;
         transition: all 0.2s ease;
         box-shadow: 0 2px 8px rgba(0, 160, 202, 0.3);
@@ -261,13 +261,13 @@
 
     // 通知按钮
     .notification-btn {
-        width: 40px;
-        height: 40px;
-        border-radius: 8px;
+        width: $card-btn-size;
+        height: $card-btn-size;
+        border-radius: $radius-lg;
         display: flex;
         align-items: center;
         justify-content: center;
-        color: #6B7280;
+        color: $text-hint;
         background: transparent;
         border: none;
         cursor: pointer;
@@ -275,7 +275,7 @@
         position: relative;
 
         &:hover {
-            background: rgba(243, 244, 246, 0.8);
+            background: $bg-tertiary;
             color: $primary-color;
         }
 
@@ -289,9 +289,9 @@
             right: 8px;
             width: 10px;
             height: 10px;
-            background: #EF4444;
+            background: $error-color;
             border-radius: 50%;
-            border: 2px solid #FFFFFF;
+            border: 2px solid $bg-secondary;
             animation: bounce 1s infinite;
         }
     }
@@ -304,8 +304,8 @@
     .user-section {
         display: flex;
         align-items: center;
-        gap: 10px;
-        padding: 6px 12px;
+        gap: $spacing-2;
+        padding: $spacing-2 $spacing-3;
         border-radius: 8px;
         cursor: pointer;
         transition: all 0.2s ease;
@@ -313,14 +313,14 @@
         border: none;
 
         &:hover {
-            background: rgba(243, 244, 246, 0.8);
+            background: $bg-tertiary;
         }
 
         .user-avatar {
             width: 36px;
             height: 36px;
             border-radius: 50%;
-            background: #E5E7EB;
+            background: $bg-secondary;
             border: 2px solid transparent;
             overflow: hidden;
             transition: all 0.2s ease;
@@ -339,14 +339,14 @@
         .user-info {
             display: flex;
             flex-direction: column;
-            gap: 2px;
+            gap: $spacing-1;
             text-align: left;
             min-width: 80px;
 
             .user-name {
-                font-size: 14px;
-                font-weight: 600;
-                color: #374151;
+                font-size: $font-md;
+                font-weight: $font-semibold;
+                color: $text-primary;
                 transition: color 0.2s ease;
                 white-space: nowrap;
             }
@@ -356,15 +356,15 @@
             }
 
             .user-dept {
-                font-size: 12px;
-                color: #9CA3AF;
+                font-size: $font-xs;
+                color: $text-hint;
                 white-space: nowrap;
             }
         }
 
         .user-dropdown-icon {
-            font-size: 18px;
-            color: #9CA3AF;
+            font-size: $icon-md;
+            color: $text-hint;
             transition: color 0.2s ease;
         }
     }
@@ -376,7 +376,7 @@
         min-width: 200px;
         background: $bg-secondary;
         border-radius: $radius-xl;  // 12px
-        box-shadow: @shadow-xl;
+        box-shadow: $shadow-xl;
         border: 1px solid $border-base;
         padding: $spacing-2;
         z-index: $z-index-dropdown;
@@ -388,35 +388,35 @@
             margin-bottom: $spacing-2;
 
             .user-dropdown-name {
-                font-size: 14px;
-                font-weight: 600;
-                color: #1F2937;
+                font-size: $font-md;
+                font-weight: $font-weight-semibold;
+                color: $text-primary;
                 margin-bottom: 4px;
             }
 
             .user-dropdown-dept {
-                font-size: 12px;
-                color: #6B7280;
+                font-size: $font-xs;
+                color: $text-hint;
             }
         }
 
         .user-dropdown-item {
             display: flex;
             align-items: center;
-            gap: 10px;
-            padding: 10px 12px;
-            border-radius: 8px;
+            gap: $spacing-2;
+            padding: $spacing-2 $spacing-3;
+            border-radius: $radius-md;
             width: 100%;
             background: transparent;
             border: none;
             cursor: pointer;
             transition: all 0.2s ease;
             text-align: left;
-            font-size: 14px;
-            color: #374151;
+            font-size: $font-md;
+            color: $text-primary;
 
             &:hover {
-                background: #F3F4F6;
+                background: $bg-tertiary;
                 color: $primary-color;
 
                 .iconify {
@@ -425,32 +425,32 @@
             }
 
             &.danger {
-                color: #EF4444;
+                color: $error-color;
 
                 &:hover {
-                    background: #FEF2F2;
+                    background: rgba($error-color, 0.1);
                 }
 
                 .iconify {
-                    color: #EF4444;
+                    color: $error-color;
                 }
             }
 
             &.divider {
                 height: 1px;
-                background: #E5E7EB;
+                background: $border-base;
                 margin: 8px 0;
                 padding: 0;
                 cursor: default;
 
                 &:hover {
-                    background: #E5E7EB;
+                    background: $border-base;
                 }
             }
 
             .iconify {
-                font-size: 18px;
-                color: #6B7280;
+                font-size: $icon-md;
+                color: $text-hint;
                 transition: color 0.2s ease;
             }
         }

+ 4 - 4
jk-rag-platform/src/pages/layout/components/sidebar.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== Sidebar 侧边栏样式 =====
 
@@ -136,9 +136,9 @@
 .promo-section {
     margin-top: $spacing-12;
     padding: $spacing-4;
-    border-radius: @radius-2xl;
+    border-radius: $radius-2xl;
     background: linear-gradient(135deg, $primary-color 0%, $primary-dark 100%);
-    color: #FFFFFF;
+    color: $bg-secondary;
     position: relative;
     overflow: hidden;
 
@@ -182,7 +182,7 @@
         bottom: -$spacing-4;
         font-size: 72px;
         opacity: 0.1;
-        color: #FFFFFF;
+        color: $bg-secondary;
     }
 }
 

+ 1 - 1
jk-rag-platform/src/pages/layout/index.tsx

@@ -7,7 +7,7 @@ import Sidebar from './components/Sidebar';
 import EntryModal from './components/EntryModal';
 import { useLayoutStore } from './store';
 import LocalStorage from '@/LocalStorage';
-import './style.less';
+import './style.scss';
 import loginStore from '../login/store';
 const { Content } = Layout;
 

+ 1 - 1
jk-rag-platform/src/pages/layout/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== 应用布局 =====
 .app-layout {

+ 1 - 1
jk-rag-platform/src/pages/login/index.tsx

@@ -7,7 +7,7 @@ import { useNavigate, useSearchParams, useLocation } from 'react-router-dom';
 
 import { regex } from '@/utils';
 import { useLoginStore } from './store';
-import './style.less';
+import './style.scss';
 import logoSrc from '@/assets/public/dllogo.svg';
 import LocalStorage from '@/LocalStorage';
 

+ 2 - 2
jk-rag-platform/src/pages/login/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 .login {
     width: 100%;
@@ -38,7 +38,7 @@
                     font-size: $font-2xl;
                     color: $primary-color;
                     border-bottom: 2px solid $primary-color;
-                    background: linear-gradient(to bottom, #FFFFFF 50%, #D3DCF6 50%);
+                    background: linear-gradient(to bottom, $bg-secondary 50%, #D3DCF6 50%);
                 }
             }
         }

+ 1 - 1
jk-rag-platform/src/pages/otherApps/index.tsx

@@ -1,6 +1,6 @@
 import * as React from 'react';
 import { AppCard } from '@/components/common';
-import './style.less';
+import './style.scss';
 
 const OtherAppsList: React.FC = () => {
     const apps = [

+ 1 - 1
jk-rag-platform/src/pages/otherApps/otherAppList/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // 其他应用列表页面样式
 // 说明:使用全局样式类,本文件只保留必要的页面特定样式

+ 1 - 1
jk-rag-platform/src/pages/otherApps/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // 其他应用列表页面样式
 // 说明:

+ 5 - 5
jk-rag-platform/src/pages/questionAnswer/form/DrawerForm.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== Drawer 表单样式 =====
 
@@ -109,7 +109,7 @@
         justify-content: space-between;
         gap: $spacing-3;
         min-height: 46px;
-        background: #fff;
+        background: $bg-secondary;
 
         .tags-list {
             flex: 1;
@@ -175,7 +175,7 @@
                         color: $success-color;
 
                         &:hover {
-                            color: darken($success-color, 10%);
+                            color: rgba(4, 120, 87, 0.9);
                             transform: scale(1.1);
                         }
                     }
@@ -184,7 +184,7 @@
                         color: $error-color;
 
                         &:hover {
-                            color: darken($error-color, 10%);
+                            color: rgba(185, 28, 28, 0.9);
                             transform: scale(1.1);
                         }
                     }
@@ -231,7 +231,7 @@
             .ant-input:focus,
             .ant-input-affix-wrapper:focus-within {
                 border-color: $primary-color;
-                box-shadow: 0 0 0 2px fade($primary-color, 10%);
+                box-shadow: 0 0 0 2px rgba(0, 93, 128, 0.1);
             }
         }
     }

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/form/Step1Basic.tsx

@@ -4,7 +4,7 @@ import { PlusCircleOutlined, MinusCircleOutlined, CloseCircleOutlined, LinkOutli
 import * as AllIcons from '@ant-design/icons';
 import IconPicker from './IconPicker';
 import VipSelector from './VipSelector';
-import './style.less';
+import './style.scss';
 
 interface Step1BasicProps {
     form: any;

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/form/Step1Drawer.tsx

@@ -4,7 +4,7 @@ import { PlusCircleOutlined, MinusCircleOutlined, CloseCircleOutlined, LinkOutli
 import * as AllIcons from '@ant-design/icons';
 import IconPicker from './IconPicker';
 import VipSelector from './VipSelector';
-import './DrawerForm.less';
+import './DrawerForm.scss';
 
 interface Step1DrawerProps {
     open: boolean;

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/form/Step2Config.tsx

@@ -6,7 +6,7 @@ import {
 import { ArrowLeftOutlined, InfoCircleOutlined, LinkOutlined } from '@ant-design/icons';
 import type { RadioChangeEvent } from 'antd';
 import { Splitter } from 'antd';
-import './style.less';
+import './style.scss';
 
 interface KnowledgeItem {
     index_type_id: number;

+ 6 - 6
jk-rag-platform/src/pages/questionAnswer/form/VipSelector.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== VIP 用户选择器样式 =====
 
@@ -50,13 +50,13 @@
             transition: all 0.2s ease;
 
             &:hover {
-                background: fade($primary-color, 5%);
-                border-radius: @radius-sm;
+                background: rgba(0, 93, 128, 0.05);
+                border-radius: $radius-sm;
             }
         }
 
         .ant-tree-node-selected {
-            background: fade($primary-color, 10%) !important;
+            background: rgba(0, 93, 128, 0.1) !important;
             color: $primary-color;
             font-weight: $font-weight-medium;
         }
@@ -101,7 +101,7 @@
         .dept-filter-tag {
             margin-left: $spacing-2;
             padding: 2px 8px;
-            background: fade($primary-color, 10%);
+            background: rgba(0, 93, 128, 0.1);
             color: $primary-color;
             border-radius: $radius-full;
             font-size: $font-xs;
@@ -128,7 +128,7 @@
         }
 
         .ant-table-tbody > tr:hover {
-            background: fade($primary-color, 5%);
+            background: rgba(0, 93, 128, 0.05);
         }
 
         .ant-table-selection-column {

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/form/VipSelector.tsx

@@ -2,7 +2,7 @@ import * as React from 'react';
 import { Modal, Table, Input, Select, Space, message, Tree, Divider, Button } from 'antd';
 import type { TableColumnsType } from 'antd';
 import type { DataNode } from 'antd/es/tree';
-import './VipSelector.less';
+import './VipSelector.scss';
 
 interface VipUser {
     userId: string;

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/form/index.tsx

@@ -7,7 +7,7 @@ import Step2Config from './Step2Config';
 import { useQuestionAnswerFormStore } from './store';
 import { apis } from '@/apis';
 import LocalStorage from '@/LocalStorage';
-import './style.less';
+import './style.scss';
 
 const QuestionAnswerForm: React.FC = () => {
     const navigate = useNavigate();

+ 4 - 4
jk-rag-platform/src/pages/questionAnswer/form/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== 创建/编辑表单组件样式 =====
 // 注意:
@@ -188,9 +188,9 @@
                 color: $primary-color;
                 font-weight: $font-weight-medium;
                 padding: 2px 6px;
-                border-radius: @radius-sm;
-                background: fade($primary-color, 10%);
-                font-family: @font-family-mono;
+                border-radius: $radius-sm;
+                background: rgba(0, 93, 128, 0.1);
+                font-family: $font-family-mono;
             }
         }
 

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/info/index.tsx

@@ -1,7 +1,7 @@
 import * as React from 'react';
 import { useLocation, useNavigate } from 'react-router-dom';
 import { LeftOutlined } from '@ant-design/icons';
-import './style.less';
+import './style.scss';
 import {
     Button, Input, Form, Divider, Splitter, Select, InputNumber, InputNumberProps,
     Radio, Switch, Row, Col, Slider, Space, RadioChangeEvent,

+ 4 - 4
jk-rag-platform/src/pages/questionAnswer/info/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== 创建应用页面样式 =====
 // 注意:
@@ -81,9 +81,9 @@
             color: $primary-color;
             font-weight: $font-weight-medium;
             padding: 2px 6px;
-            border-radius: @radius-sm;
-            background: fade($primary-color, 10%);
-            font-family: @font-family-mono;
+            border-radius: $radius-sm;
+            background: rgba(0, 93, 128, 0.1);
+            font-family: $font-family-mono;
         }
     }
 

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/list/index.tsx

@@ -3,7 +3,7 @@ import { useNavigate, useLocation } from 'react-router-dom';
 import { AppCard, GuideTips, FilterBar } from '@/components/common';
 import { Pagination, message, Form, Button, Input } from 'antd';
 import { PlusOutlined, SearchOutlined } from '@ant-design/icons';
-import './style.less';
+import './style.scss';
 // 导入全局 Mock 数据
 import { getAppsByPageType, getPageConfig, processAppData, mockCurrentUser } from '@/mock';
 // 导入 GuideTips 配置

+ 1 - 1
jk-rag-platform/src/pages/questionAnswer/list/style.scss

@@ -1,5 +1,5 @@
 // 导入全局样式变量
-@import '@/styles/variables.scss';';
+@import '@/styles/variables.scss';
 
 // ===== 我创建的应用列表页面样式 =====
 // 说明:

+ 1 - 1
jk-rag-platform/src/pages/system/apiKey/index.tsx

@@ -3,7 +3,7 @@ import { Table, TableColumnsType, Button, Space } from 'antd';
 import { DownloadOutlined, PlusOutlined } from '@ant-design/icons';
 import Search from './components/Search';
 import dayjs from 'dayjs';
-import './style.less';
+import './style.scss';
 
 interface Record {
     id: string;

+ 1 - 1
jk-rag-platform/src/pages/system/audit/components/PreviewModal.tsx

@@ -1,7 +1,7 @@
 import * as React from 'react';
 import { useLocation, useNavigate } from 'react-router-dom';
 
-import './style.less';
+import './style.scss';
 import {
     Button, Input, Form, Divider, Splitter, Select, InputNumber, InputNumberProps,
     Radio, Switch, Row, Col, Slider, Space, RadioChangeEvent,

+ 1 - 1
jk-rag-platform/src/pages/system/audit/components/auditHistory.tsx

@@ -5,7 +5,7 @@ import { StepForwardOutlined } from '@ant-design/icons';
 import dayjs from 'dayjs';
 import store from './auditHistoryStore';
 import { Record } from '../types';
-import '../style.less';
+import '../style.scss';
 import InfoModal from './InfoModal';
 import PreviewModal from './PreviewModal';
 import LocalStorage from '@/LocalStorage';

+ 1 - 1
jk-rag-platform/src/pages/system/audit/index.tsx

@@ -6,7 +6,7 @@ import dayjs from 'dayjs';
 import { GuideTips } from '@/components/common';
 import store from './store';
 import { Record } from './types';
-import './style.less';
+import './style.scss';
 import LocalStorage from '@/LocalStorage';
 import InfoModal from './components/InfoModal';
 import PreviewModal from './components/PreviewModal';

+ 1 - 1
jk-rag-platform/src/pages/system/contentManagement/index.tsx

@@ -5,7 +5,7 @@ import Search from './components/Search';
 import dayjs from 'dayjs';
 import store from './store';
 import { Record } from './types';
-import './style.less';
+import './style.scss';
 
 const ContentManagement: React.FC = () => {
     const {

+ 1 - 1
jk-rag-platform/src/pages/system/usageStatistics/index.tsx

@@ -5,7 +5,7 @@ import Search from './components/Search';
 import dayjs from 'dayjs';
 import store from './store';
 import { Record } from './types';
-import './style.less';
+import './style.scss';
 
 const UsageStatistics: React.FC = () => {
     const {

+ 1 - 1
jk-rag-platform/src/pages/universalChat/components/ChatInterface.tsx

@@ -12,7 +12,7 @@ import { Tooltip, message } from 'antd';
 import ReactMarkdown from 'react-markdown';
 import { useChatStore, Message } from '../store/chatStore';
 import { sendChatMessage } from '../api';
-import '../styles/index.less';
+import '../styles/index.scss';
 import aiIcon from '@/assets/public/aiIcon.png';
 
 export const ChatInterface: React.FC = () => {

+ 1 - 1
jk-rag-platform/src/pages/universalChat/components/Sidebar.tsx

@@ -12,7 +12,7 @@ import {
 import { Input, Modal, Form, message, Dropdown, MenuProps } from 'antd';
 import { useChatStore } from '../store/chatStore';
 import { mockFavorites, mockApps, MockApp } from '../mock';
-import '../styles/index.less';
+import '../styles/index.scss';
 
 interface SideBarProps {
     onNewChat: () => void;

+ 1 - 1
jk-rag-platform/src/pages/universalChat/index.tsx

@@ -2,7 +2,7 @@ import React, { useState } from 'react';
 import { SideBar } from './components/Sidebar';
 import { ChatInterface } from './components/ChatInterface';
 import { useChatStore } from './store/chatStore';
-import './styles/index.less';
+import './styles/index.scss';
 
 /**
  * Universal Chat Page - 智能问答

+ 1 - 1
jk-rag-platform/src/pages/universalChat/styles/index.scss

@@ -7,7 +7,7 @@
     --chat-bg-secondary: #ffffff;  // 白色背景,与主项目一致
     --chat-text-primary: #131212;   // 深灰近黑
     --chat-text-secondary: #5E5E66; // 默认文字色(加深)
-    --chat-text-muted: #9CA3AF;
+    --chat-text-muted: $text-hint;
     --chat-border-color: #F3F4F6;   // 浅边框
     --chat-hover-bg: #F3F4F6;       // 悬停背景 = 激活背景
     --chat-active-bg: #F3F4F6;      // 激活背景

+ 4 - 3
jk-rag-platform/src/styles/global.scss

@@ -1,3 +1,4 @@
+// Variables imported via main entry point with @/ alias
 @import './variables.scss';
 
 // ===== 隐藏式滚动条(全局) =====
@@ -266,7 +267,7 @@ ul li {
         &.active {
             background: $icon-bg-blue;
             color: $primary-color;
-            font-weight: @font-weight-semibold;
+            font-weight: $font-weight-semibold;
         }
     }
 }
@@ -274,7 +275,7 @@ ul li {
 .filter-btn {
     width: $search-height;
     height: $search-height;
-    border: 1px solid lighten($primary-color, 20%);
+    border: 1px solid rgba(0, 122, 153, 0.6);
     background: $icon-bg-blue;
     border-radius: $radius-xl;
     display: flex;
@@ -599,7 +600,7 @@ ul li {
     }
 }
 
-@media (max-width: @screen-sm) {
+@media (max-width: $screen-sm) {
     .sort-buttons {
         .sort-btn {
             padding: $spacing-1 $spacing-2;