Parcourir la source

逐步修复 bug——修复权重问题

yemeishu il y a 1 mois
Parent
commit
c0517bd785

+ 3 - 5
app/Filament/Pages/KnowledgePointDetail.php

@@ -140,14 +140,12 @@ class KnowledgePointDetail extends Page
         $nodeBuckets = [
             'prerequisite' => $this->extractNodeList($point, [
                 'prerequisite_kps',
-                'parent_nodes',
-                'parent_details',
-                'parents',
+                'child_nodes',
+                'children',
             ]),
             'post' => $this->extractNodeList($point, [
                 'post_kps',
-                'child_nodes',
-                'children',
+                'parent_nodes'
             ]),
             'related' => $this->extractNodeList($point, [
                 'related_kps',

+ 2 - 9
app/Services/KnowledgeServiceApi.php

@@ -123,25 +123,18 @@ class KnowledgeServiceApi
             return $data;
         }
 
-        // 获取父节点详细信息,并构建可点击的父节点列表
+        $data['child_nodes'] = $this->findChildNodes($kpCode);
+
         $data['parent_nodes'] = [];
-        $data['parent_details'] = [];
         if (!empty($data['parents']) && is_array($data['parents'])) {
             foreach ($data['parents'] as $parentCode) {
                 $parentDetail = $this->getKnowledgePointDetail($parentCode);
                 if ($parentDetail) {
                     $data['parent_nodes'][] = $parentDetail;
-                    $data['parent_details'][] = [
-                        'kp_code' => $parentDetail['kp_code'] ?? $parentCode,
-                        'cn_name' => $parentDetail['cn_name'] ?? $parentCode,
-                    ];
                 }
             }
         }
 
-        // 获取子节点(通过反向查询)
-        $data['child_nodes'] = $this->findChildNodes($kpCode);
-
         return $data;
     }
 

+ 18 - 18
resources/views/filament/pages/knowledge-point-detail.blade.php

@@ -92,11 +92,11 @@
                                     <p class="text-xs text-green-700/80 dark:text-green-200/70 mt-1">这些知识点是进入当前节点的基础</p>
                                 </div>
                                 <span class="text-xs font-semibold bg-white text-green-700 px-2 py-1 rounded-full shadow-sm">
-                                    {{ count($parentNodes) }} 个
+                                    {{ count($childNodes) }} 个
                                 </span>
                             </div>
                             <div class="space-y-3">
-                                @forelse($parentNodes as $parent)
+                                @forelse($childNodes as $parent)
                                     <div class="rounded-xl border border-green-100 bg-white px-4 py-3 shadow-sm dark:border-green-700/60 dark:bg-gray-900/60">
                                         <div class="flex items-start justify-between gap-3">
                                             <div>
@@ -142,11 +142,11 @@
                                     <p class="text-xs text-amber-700/80 dark:text-amber-200/70 mt-1">掌握当前节点后可继续学习的内容</p>
                                 </div>
                                 <span class="text-xs font-semibold bg-white text-amber-700 px-2 py-1 rounded-full shadow-sm">
-                                    {{ count($childNodes) }} 个
+                                    {{ count($parentNodes) }} 个
                                 </span>
                             </div>
                             <div class="space-y-3">
-                                @forelse($childNodes as $child)
+                                @forelse($parentNodes as $child)
                                     <div class="rounded-xl border border-amber-100 bg-white px-4 py-3 shadow-sm dark:border-amber-700/60 dark:bg-gray-900/60">
                                         <div class="flex items-start justify-between gap-3">
                                             <div>
@@ -189,22 +189,22 @@
 
                 <!-- 关联知识点展示 -->
                 <div class="grid gap-6 lg:grid-cols-3">
-                    @if(!empty($point['prerequisite_kps']))
-                        <div class="rounded-xl border border-green-200 bg-green-50/50 px-6 py-6 shadow-sm dark:border-green-800 dark:bg-green-900/20">
+                    @if(!empty($point['post_kps']))
+                        <div class="rounded-xl border border-yellow-200 bg-yellow-50/50 px-6 py-6 shadow-sm dark:border-yellow-800 dark:bg-yellow-900/20">
                             <div class="flex items-center justify-between mb-4">
-                                <h3 class="text-lg font-semibold text-green-800 dark:text-green-200">前置必修</h3>
-                                <span class="bg-green-200 text-green-800 px-2 py-1 rounded-full text-xs font-medium">{{ count($point['prerequisite_kps']) }} 项</span>
+                                <h3 class="text-lg font-semibold text-yellow-800 dark:text-yellow-200">可进阶</h3>
+                                <span class="bg-yellow-200 text-yellow-800 px-2 py-1 rounded-full text-xs font-medium">{{ count($point['post_kps']) }} 项</span>
                             </div>
                             <div class="space-y-3">
-                                @foreach($point['prerequisite_kps'] as $item)
-                                    <div class="rounded-lg border border-green-200 bg-white p-4 dark:border-green-700 dark:bg-green-900/40">
+                                @foreach($point['post_kps'] as $item)
+                                    <div class="rounded-lg border border-yellow-200 bg-white p-4 dark:border-yellow-700 dark:bg-yellow-900/40">
                                         <div class="flex justify-between items-start mb-2">
                                             <div>
                                                 <h4 class="font-semibold text-gray-900 dark:text-gray-100">{{ $item['cn_name'] ?? '' }}</h4>
                                                 <p class="text-xs text-gray-500">{{ $item['kp_code'] ?? '' }}</p>
                                             </div>
                                             @if(isset($item['distance']))
-                                                <span class="text-xs bg-green-100 text-green-700 px-2 py-1 rounded">距 {{ $item['distance'] }} 层</span>
+                                                <span class="text-xs bg-yellow-100 text-yellow-700 px-2 py-1 rounded">距 {{ $item['distance'] }} 层</span>
                                             @endif
                                         </div>
                                         @if(!empty($item['skills']))
@@ -247,22 +247,22 @@
                         </div>
                     @endif
 
-                    @if(!empty($point['post_kps']))
-                        <div class="rounded-xl border border-yellow-200 bg-yellow-50/50 px-6 py-6 shadow-sm dark:border-yellow-800 dark:bg-yellow-900/20">
+                    @if(!empty($point['prerequisite_kps']))
+                        <div class="rounded-xl border border-green-200 bg-green-50/50 px-6 py-6 shadow-sm dark:border-green-800 dark:bg-green-900/20">
                             <div class="flex items-center justify-between mb-4">
-                                <h3 class="text-lg font-semibold text-yellow-800 dark:text-yellow-200">可进阶</h3>
-                                <span class="bg-yellow-200 text-yellow-800 px-2 py-1 rounded-full text-xs font-medium">{{ count($point['post_kps']) }} 项</span>
+                                <h3 class="text-lg font-semibold text-green-800 dark:text-green-200">前置必修</h3>
+                                <span class="bg-green-200 text-green-800 px-2 py-1 rounded-full text-xs font-medium">{{ count($point['prerequisite_kps']) }} 项</span>
                             </div>
                             <div class="space-y-3">
-                                @foreach($point['post_kps'] as $item)
-                                    <div class="rounded-lg border border-yellow-200 bg-white p-4 dark:border-yellow-700 dark:bg-yellow-900/40">
+                                @foreach($point['prerequisite_kps'] as $item)
+                                    <div class="rounded-lg border border-green-200 bg-white p-4 dark:border-green-700 dark:bg-green-900/40">
                                         <div class="flex justify-between items-start mb-2">
                                             <div>
                                                 <h4 class="font-semibold text-gray-900 dark:text-gray-100">{{ $item['cn_name'] ?? '' }}</h4>
                                                 <p class="text-xs text-gray-500">{{ $item['kp_code'] ?? '' }}</p>
                                             </div>
                                             @if(isset($item['distance']))
-                                                <span class="text-xs bg-yellow-100 text-yellow-700 px-2 py-1 rounded">距 {{ $item['distance'] }} 层</span>
+                                                <span class="text-xs bg-green-100 text-green-700 px-2 py-1 rounded">距 {{ $item['distance'] }} 层</span>
                                             @endif
                                         </div>
                                         @if(!empty($item['skills']))

+ 5 - 6
resources/views/filament/pages/knowledge-points.blade.php

@@ -167,7 +167,7 @@
                                 </p>
                             </div>
                             <div>
-                                <h4 class="text-sm font-semibold text-gray-600 dark:text-gray-300">先修关系</h4>
+                                <h4 class="text-sm font-semibold text-gray-600 dark:text-gray-300">可进阶</h4>
                                 <div class="mt-2 rounded-xl border border-gray-200 px-4 py-4 dark:border-gray-700">
                                     @if(!empty($selectedPoint['parent_details']))
                                         <ol class="relative border-l border-dashed border-primary-200 dark:border-primary-400/50 pl-4">
@@ -178,7 +178,7 @@
                                                        class="text-sm font-medium text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 hover:underline cursor-pointer">
                                                         {{ $parent['cn_name'] }}
                                                     </a>
-                                                    <p class="text-xs text-gray-500">触发该节点之前需掌握</p>
+                                                    <p class="text-xs text-gray-500">该节点之后可进阶</p>
                                                 </li>
                                             @endforeach
                                         </ol>
@@ -191,7 +191,7 @@
                                                        class="text-sm font-medium text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 hover:underline cursor-pointer">
                                                         {{ $parent }}
                                                     </a>
-                                                    <p class="text-xs text-gray-500">触发该节点之前需掌握</p>
+                                                    <p class="text-xs text-gray-500">该节点之后可进阶</p>
                                                 </li>
                                             @endforeach
                                         </ol>
@@ -219,14 +219,13 @@
                                         <div class="flex items-start justify-between">
                                             <div>
                                                 <p class="text-sm font-semibold text-gray-900 dark:text-gray-100">{{ $skill['skill_name'] ?? '未命名技能' }}</p>
-                                                <p class="text-xs text-gray-500">{{ $skill['skill_type'] ?? '类型未知' }}</p>
                                             </div>
                                             <span class="inline-flex items-center gap-1 rounded-full bg-primary-50 px-2.5 py-0.5 text-xs font-medium text-primary-700 dark:bg-primary-500/10 dark:text-primary-300">
-                                                难度 {{ $skill['difficulty'] ?? '-' }}
+                                                权重 {{ $skill['weight'] ?? '-' }}
                                             </span>
                                         </div>
                                         <p class="mt-3 text-sm leading-relaxed text-gray-600 dark:text-gray-300">
-                                            {{ $skill['description'] ?? '暂无描述' }}
+                                            {{ $skill['skill_code'] ?? '暂无描述' }}
                                         </p>
                                         @if(!empty($skill['examples']))
                                             <div class="mt-3 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-500 dark:bg-gray-800/50 dark:text-gray-300">