diff --git a/frontend/src/views/knowledge/processing.vue b/frontend/src/views/knowledge/processing.vue
index bfbb490e..5aa3a663 100644
--- a/frontend/src/views/knowledge/processing.vue
+++ b/frontend/src/views/knowledge/processing.vue
@@ -1083,9 +1083,11 @@
+
+
已按文件名建议:操作手册/培训手册
@@ -1549,6 +1551,10 @@ const qualityReviewForm = ref({
acceptedReasonCodes: [],
supersedesAssetId: undefined
});
+const authoritySuggestedByName = ref(false);
+const authoritySuggested = computed(
+ () => authoritySuggestedByName.value && qualityReviewForm.value.sourceAuthority === 'OPERATING_MANUAL'
+);
const overview = ref(null);
const overviewFailed = ref(false);
const categoryKeyword = ref('');
@@ -2803,6 +2809,13 @@ async function openQualityReview(asset: QualityAsset) {
acceptedReasonCodes: [],
supersedesAssetId: undefined
};
+ // 文件名含「手册/指南/教材」且来源权威级别未填写或仍为默认「员工经验投稿」时,按文件名建议预填,不强制、可改。
+ const currentAuthority = (asset.sourceAuthority || '').trim();
+ const manualNameMatched = /手册|指南|教材/.test(asset.sourceName || '');
+ authoritySuggestedByName.value = manualNameMatched && (!currentAuthority || currentAuthority === 'EMPLOYEE_SUBMISSION');
+ if (authoritySuggestedByName.value) {
+ qualityReviewForm.value.sourceAuthority = 'OPERATING_MANUAL';
+ }
qualityScopeModes.value = {
applicableRole: asset.applicableRole?.trim() ? 'SPECIFIED' : 'ALL',
applicableRegion: asset.applicableRegion?.trim() ? 'SPECIFIED' : 'ALL',
@@ -3051,6 +3064,7 @@ function sourceAuthorityLabel(value: string) {
FORMAL_POLICY: '正式制度',
COMPANY_POLICY: '公司正式制度',
APPROVED_SOP: '已批准 SOP',
+ OPERATING_MANUAL: '操作手册/培训手册',
REGULATION: '法规',
EMPLOYEE_SUBMISSION: '员工经验投稿',
UNKNOWN: '来源待确认'
@@ -4279,6 +4293,13 @@ async function requestAssetPurge(asset: QualityAsset) {
margin-top: 18px;
}
+.authority-suggestion-tip {
+ margin: 4px 0 0;
+ color: #667085;
+ font-size: 12px;
+ line-height: 1.5;
+}
+
.quality-form-grid {
display: grid;
grid-template-columns: 1fr 1fr;