|
|
@@ -546,33 +546,66 @@ function NoteNode({ id, data, sourcePosition, targetPosition }) {
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- {/* 评估信息区域 */}
|
|
|
- {(data.is_knowledge !== undefined && data.is_knowledge !== null || data.post_relevance_score !== undefined && data.post_relevance_score !== null) && (
|
|
|
+ {/* 评估信息区域 (V2) */}
|
|
|
+ {(data.knowledge_score !== undefined || data.post_relevance_score !== undefined || data.is_knowledge !== undefined) && (
|
|
|
<div style={{
|
|
|
marginBottom: '10px',
|
|
|
paddingBottom: '8px',
|
|
|
borderBottom: '1px solid #fce7f3',
|
|
|
}}>
|
|
|
- {/* 知识判定标签 */}
|
|
|
- {(data.is_knowledge !== undefined && data.is_knowledge !== null) && (
|
|
|
+ {/* 知识评估 (V2) */}
|
|
|
+ {(data.knowledge_score !== undefined || data.is_knowledge !== undefined) && (
|
|
|
<div style={{ marginBottom: '8px' }}>
|
|
|
- <span style={{
|
|
|
- display: 'inline-block',
|
|
|
- padding: '3px 10px',
|
|
|
- borderRadius: '12px',
|
|
|
- fontSize: '11px',
|
|
|
- fontWeight: '600',
|
|
|
- background: data.is_knowledge ? '#dcfce7' : '#fee2e2',
|
|
|
- color: data.is_knowledge ? '#166534' : '#991b1b',
|
|
|
- }}>
|
|
|
- {data.is_knowledge ? '✓ 知识内容' : '✗ 非知识'}
|
|
|
- </span>
|
|
|
- {data.knowledge_reason && (
|
|
|
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px', marginBottom: '4px' }}>
|
|
|
+ {/* 星级评分 */}
|
|
|
+ {data.knowledge_level && (
|
|
|
+ <span style={{ fontSize: '12px', lineHeight: '1' }}>
|
|
|
+ {'⭐'.repeat(data.knowledge_level)}
|
|
|
+ </span>
|
|
|
+ )}
|
|
|
+ {/* 综合得分 */}
|
|
|
+ {data.knowledge_score != null && (
|
|
|
+ <span style={{
|
|
|
+ fontSize: '11px',
|
|
|
+ fontWeight: '700',
|
|
|
+ color: data.knowledge_score >= 70 ? '#166534' : data.knowledge_score >= 40 ? '#854d0e' : '#991b1b',
|
|
|
+ }}>
|
|
|
+ 知识: {data.knowledge_score.toFixed(0)}分
|
|
|
+ </span>
|
|
|
+ )}
|
|
|
+ {/* 兼容旧版: 知识判定标签 */}
|
|
|
+ {!data.knowledge_score && data.is_knowledge !== undefined && (
|
|
|
+ <span style={{
|
|
|
+ display: 'inline-block',
|
|
|
+ padding: '3px 10px',
|
|
|
+ borderRadius: '12px',
|
|
|
+ fontSize: '11px',
|
|
|
+ fontWeight: '600',
|
|
|
+ background: data.is_knowledge ? '#dcfce7' : '#fee2e2',
|
|
|
+ color: data.is_knowledge ? '#166534' : '#991b1b',
|
|
|
+ }}>
|
|
|
+ {data.is_knowledge ? '✓ 知识' : '✗ 非知识'}
|
|
|
+ </span>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ {/* 知识评估总结 */}
|
|
|
+ {data.knowledge_evaluation?.summary && (
|
|
|
<div style={{
|
|
|
+ fontSize: '10px',
|
|
|
+ color: '#9f1239',
|
|
|
+ lineHeight: '1.4',
|
|
|
marginTop: '4px',
|
|
|
+ }}>
|
|
|
+ {data.knowledge_evaluation.summary}
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ {/* 兼容旧版: 知识理由 */}
|
|
|
+ {!data.knowledge_evaluation?.summary && data.knowledge_reason && (
|
|
|
+ <div style={{
|
|
|
fontSize: '10px',
|
|
|
color: '#9f1239',
|
|
|
lineHeight: '1.4',
|
|
|
+ marginTop: '4px',
|
|
|
}}>
|
|
|
{data.knowledge_reason}
|
|
|
</div>
|
|
|
@@ -580,8 +613,8 @@ function NoteNode({ id, data, sourcePosition, targetPosition }) {
|
|
|
</div>
|
|
|
)}
|
|
|
|
|
|
- {/* 相关性得分 */}
|
|
|
- {(data.post_relevance_score !== undefined && data.post_relevance_score !== null) && (
|
|
|
+ {/* 相关性评估 (V2) */}
|
|
|
+ {data.post_relevance_score != null && (
|
|
|
<div>
|
|
|
<div style={{
|
|
|
display: 'flex',
|
|
|
@@ -589,14 +622,33 @@ function NoteNode({ id, data, sourcePosition, targetPosition }) {
|
|
|
gap: '6px',
|
|
|
marginBottom: '4px',
|
|
|
}}>
|
|
|
+ {/* V2: 0-100分制 (统一显示分数) */}
|
|
|
<span style={{
|
|
|
fontSize: '11px',
|
|
|
fontWeight: '600',
|
|
|
color: '#9f1239',
|
|
|
}}>
|
|
|
- 相关性: {(data.post_relevance_score * 100).toFixed(0)}%
|
|
|
+ 相关性: {data.post_relevance_score.toFixed(0)}分
|
|
|
</span>
|
|
|
- {data.relevance_level && (
|
|
|
+ {/* V2结论标签 */}
|
|
|
+ {data.relevance_conclusion && (
|
|
|
+ <span style={{
|
|
|
+ padding: '2px 8px',
|
|
|
+ borderRadius: '10px',
|
|
|
+ fontSize: '10px',
|
|
|
+ fontWeight: '600',
|
|
|
+ background:
|
|
|
+ data.relevance_conclusion.includes('高度') ? '#dcfce7' :
|
|
|
+ data.relevance_conclusion.includes('中度') ? '#fef3c7' : '#fee2e2',
|
|
|
+ color:
|
|
|
+ data.relevance_conclusion.includes('高度') ? '#166534' :
|
|
|
+ data.relevance_conclusion.includes('中度') ? '#854d0e' : '#991b1b',
|
|
|
+ }}>
|
|
|
+ {data.relevance_conclusion}
|
|
|
+ </span>
|
|
|
+ )}
|
|
|
+ {/* V1兼容: 显示旧的相关性等级 */}
|
|
|
+ {!data.relevance_conclusion && data.relevance_level && (
|
|
|
<span style={{
|
|
|
padding: '2px 8px',
|
|
|
borderRadius: '10px',
|
|
|
@@ -613,7 +665,30 @@ function NoteNode({ id, data, sourcePosition, targetPosition }) {
|
|
|
</span>
|
|
|
)}
|
|
|
</div>
|
|
|
- {data.relevance_reason && (
|
|
|
+ {/* 相关性评估总结 (V2) */}
|
|
|
+ {data.relevance_evaluation?.summary && (
|
|
|
+ <div style={{
|
|
|
+ fontSize: '10px',
|
|
|
+ color: '#9f1239',
|
|
|
+ lineHeight: '1.4',
|
|
|
+ }}>
|
|
|
+ {data.relevance_evaluation.summary}
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ {/* 目的性和品类得分 (V2) */}
|
|
|
+ {data.relevance_evaluation?.purpose_score != null && data.relevance_evaluation?.category_score != null && (
|
|
|
+ <div style={{
|
|
|
+ fontSize: '9px',
|
|
|
+ color: '#9f1239',
|
|
|
+ marginTop: '3px',
|
|
|
+ opacity: 0.8,
|
|
|
+ }}>
|
|
|
+ 目的性:{data.relevance_evaluation.purpose_score.toFixed(0)}分(70%) |
|
|
|
+ 品类:{data.relevance_evaluation.category_score.toFixed(0)}分(30%)
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ {/* 兼容旧版: 相关性理由 */}
|
|
|
+ {!data.relevance_evaluation?.summary && data.relevance_reason && (
|
|
|
<div style={{
|
|
|
fontSize: '10px',
|
|
|
color: '#9f1239',
|
|
|
@@ -794,19 +869,7 @@ function NoteNode({ id, data, sourcePosition, targetPosition }) {
|
|
|
{data.matchLevel}
|
|
|
</span>
|
|
|
)}
|
|
|
- {data.score && (
|
|
|
- <span style={{
|
|
|
- display: 'inline-block',
|
|
|
- padding: '2px 8px',
|
|
|
- borderRadius: '12px',
|
|
|
- background: '#fff7ed',
|
|
|
- color: '#c2410c',
|
|
|
- fontSize: '10px',
|
|
|
- fontWeight: '500',
|
|
|
- }}>
|
|
|
- Score: {data.score}
|
|
|
- </span>
|
|
|
- )}
|
|
|
+ {/* Score标签已隐藏 - V2不再需要 */}
|
|
|
</div>
|
|
|
)}
|
|
|
|
|
|
@@ -1167,7 +1230,22 @@ function TreeNode({ node, level, children, isCollapsed, onToggle, isSelected, on
|
|
|
// 计算字体颜色:根据分数提升幅度判断
|
|
|
let fontColor = '#374151'; // 默认颜色
|
|
|
if (node.type === 'note') {
|
|
|
- fontColor = node.data.matchLevel === 'unsatisfied' ? '#ef4444' : '#374151';
|
|
|
+ // V2评估:基于知识得分和相关性得分判断颜色
|
|
|
+ const knowledgeScore = node.data.knowledge_score;
|
|
|
+ const relevanceScore = node.data.post_relevance_score;
|
|
|
+
|
|
|
+ if (knowledgeScore != null && relevanceScore != null) {
|
|
|
+ if (knowledgeScore <= 40) {
|
|
|
+ fontColor = '#ef4444'; // 红色 - 知识得分低
|
|
|
+ } else if (knowledgeScore > 40 && relevanceScore > 40) {
|
|
|
+ fontColor = '#22c55e'; // 绿色 - 知识和相关性都高
|
|
|
+ } else {
|
|
|
+ fontColor = '#eab308'; // 黄色 - 知识得分高但相关性低
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // V1兼容:如果没有V2评估数据,使用matchLevel判断
|
|
|
+ fontColor = node.data.matchLevel === 'unsatisfied' ? '#ef4444' : '#374151';
|
|
|
+ }
|
|
|
} else if (node.data.seed_score !== undefined) {
|
|
|
const parentScore = parseFloat(node.data.seed_score);
|
|
|
const gain = score - parentScore;
|
|
|
@@ -1544,12 +1622,19 @@ function transformData(data) {
|
|
|
evaluationReason: node.evaluationReason || node.evaluation_reason || '',
|
|
|
interact_info: node.interact_info || {},
|
|
|
nodeType: nodeType,
|
|
|
- // 🆕 添加评估字段
|
|
|
+ // 🆕 评估字段 (V2)
|
|
|
+ // 知识评估
|
|
|
is_knowledge: node.is_knowledge !== undefined ? node.is_knowledge : null,
|
|
|
knowledge_reason: node.knowledge_reason || '',
|
|
|
+ knowledge_score: node.knowledge_score !== undefined ? node.knowledge_score : null,
|
|
|
+ knowledge_level: node.knowledge_level !== undefined ? node.knowledge_level : null,
|
|
|
+ knowledge_evaluation: node.knowledge_evaluation || null,
|
|
|
+ // 相关性评估
|
|
|
post_relevance_score: node.post_relevance_score !== undefined ? node.post_relevance_score : null,
|
|
|
relevance_level: node.relevance_level || '',
|
|
|
- relevance_reason: node.relevance_reason || ''
|
|
|
+ relevance_reason: node.relevance_reason || '',
|
|
|
+ relevance_conclusion: node.relevance_conclusion || '',
|
|
|
+ relevance_evaluation: node.relevance_evaluation || null
|
|
|
},
|
|
|
position: { x: 0, y: 0 },
|
|
|
});
|