54 lines
6.9 KiB
Python
54 lines
6.9 KiB
Python
from pathlib import Path
|
|
root=Path('C:/kefu/admin-web/apps/web-antd/src')
|
|
def edit(name, old, new):
|
|
p=root/name; s=p.read_text(encoding='utf-8'); assert old in s,(name,old[:80]); p.write_text(s.replace(old,new),encoding='utf-8',newline='\n')
|
|
|
|
edit('api/knowledge.ts', 'export interface KnowledgeJob {', '''export interface KnowledgeModel { id: string; name: string; model: string; kind: string; default: boolean }
|
|
|
|
export interface KnowledgeJob {''')
|
|
edit('api/knowledge.ts', ' completion_reason: string;', ' completion_reason: string;\n pending_items: number;')
|
|
edit('api/knowledge.ts', 'options: { engine: string; max_messages: number;', 'options: { engine: string; max_model_calls: number; model_provider_id?: string; model_name?: string; model_timeout_seconds?: number; max_messages: number;')
|
|
edit('api/knowledge.ts', 'export const createKnowledgeJob', '''export const fetchKnowledgeModels = (id: number) =>
|
|
requestClient.get<{ items: KnowledgeModel[] }>(path('models', id));
|
|
export const configureKnowledgeJob = (id: number, job: string, body: Record<string, unknown>) =>
|
|
requestClient.put<KnowledgeJob>(path(`jobs/${job}/config`, id), body);
|
|
export const createKnowledgeJob''')
|
|
edit('views/knowledge/job-wizard.vue', "import { createKnowledgeJob, previewKnowledgeJob } from '#/api/knowledge';", "import { createKnowledgeJob, previewKnowledgeJob } from '#/api/knowledge';\nimport KnowledgeModelFields from './model-fields.vue';")
|
|
edit('views/knowledge/job-wizard.vue', "engine: 'rules', max_messages", "engine: 'rules', model_provider_id: '', model_timeout_seconds: 90, max_messages")
|
|
edit('views/knowledge/job-wizard.vue', 'form.engine, form.max_messages', 'form.engine, form.model_provider_id, form.model_timeout_seconds, form.max_messages')
|
|
p=root/'views/knowledge/job-wizard.vue';s=p.read_text(encoding='utf-8');start=s.index(' <Form.Item label="整理方式">');end=s.index(' </Form>',start)
|
|
s=s[:start]+''' <KnowledgeModelFields v-model:engine="form.engine" v-model:provider="form.model_provider_id" v-model:timeout="form.model_timeout_seconds" v-model:calls="form.max_model_calls" :account-id="accountId" :disabled="saving" />
|
|
'''+s[end:];p.write_text(s,encoding='utf-8',newline='\n')
|
|
edit('views/knowledge/job-wizard.vue', ':disabled="!preview?.total_messages || !form.staff_confirmed || checking"', ':disabled="!preview?.total_messages || !form.staff_confirmed || checking || (form.engine === \'model\' && !form.model_provider_id)"')
|
|
edit('views/knowledge/batch.ts', "'approve' | 'disable'", "'approve' | 'delete' | 'disable'")
|
|
edit('views/knowledge/batch.ts', "const allowed = { approve:", "const allowed = { delete: ['rejected'], approve:")
|
|
edit('views/knowledge/batch-dialog.vue', "const names = { approve:", "const names = { delete: '删除', approve:")
|
|
edit('views/knowledge/batch-dialog.vue', "action === 'approve' && !!checked.value[item.id]", "action === 'delete' || (action === 'approve' && !!checked.value[item.id])")
|
|
edit('views/knowledge/batch-dialog.vue', '<p v-if="!loading">', '<Alert v-if="action === \'delete\'" class="mb-4" type="warning" show-icon message="仅删除已驳回知识及其来源快照和版本记录;原始聊天归档保留。删除后无法恢复,请确认所选条目。" />\n <p v-if="!loading">')
|
|
edit('views/knowledge/batch-dialog.vue', '<Button v-if="!results" type="primary"', '<Button v-if="!results" :danger="action === \'delete\'" type="primary"')
|
|
edit('views/knowledge/center.vue', "import KnowledgeJobWizard from './job-wizard.vue';", "import KnowledgeJobWizard from './job-wizard.vue';\nimport KnowledgeJobConfig from './job-config.vue';")
|
|
edit('views/knowledge/center.vue', "const createOpen = ref(false);", "const createOpen = ref(false);\nconst configOpen = ref(false);\nconst configJob = ref<KnowledgeJob | null>(null);\nfunction configureJob(job: KnowledgeJob) { configJob.value = job; configOpen.value = true; }")
|
|
edit('views/knowledge/center.vue', '(canReview.value || canPublish.value)', '(canReview.value || canPublish.value || canWrite.value)')
|
|
edit('views/knowledge/center.vue', 'createOpen.value = false;\n items.value', 'createOpen.value = false; configOpen.value = false; configJob.value = null;\n items.value')
|
|
edit('views/knowledge/center.vue', 'async function jobAction(jobId:', '''function deleteSelected() {
|
|
if (!selected.value) return;
|
|
const item = { ...selected.value }; const id = accountId.value; const generation = detailGeneration;
|
|
Modal.confirm({ title: '删除这条已驳回知识?', content: '将删除知识及其来源快照和版本记录,原始聊天归档保留。删除后无法恢复。',
|
|
okText: '确认删除', okType: 'danger', cancelText: '取消', onOk: () => mutate(async () => {
|
|
await knowledgeItemAction(id, item, 'delete', true);
|
|
if (generation === detailGeneration) { editorOpen.value = false; selected.value = null; }
|
|
selectedKeys.value = selectedKeys.value.filter((key) => key !== item.id);
|
|
message.success('已删除');
|
|
}) });
|
|
}
|
|
async function jobAction(jobId:''')
|
|
edit('views/knowledge/center.vue', ':disabled="busy || createOpen || batchOpen"', ':disabled="busy || createOpen || batchOpen || configOpen"')
|
|
edit('views/knowledge/center.vue', 'single && (canReview || canPublish)', 'single && (canReview || canPublish || canWrite)')
|
|
edit('views/knowledge/center.vue', ' <Button v-if="selectedKeys.length"', ' <Button v-if="canWrite" danger :disabled="!batchAllowed(\'delete\') || busy" @click="openBatch(\'delete\')">删除已驳回</Button>\n <Button v-if="selectedKeys.length"')
|
|
edit('views/knowledge/center.vue', "{{ record.options.incremental ? ' · 增量任务' : '' }}", "{{ record.options.incremental ? ' · 增量任务' : '' }}<span v-if=\"record.options.engine === 'model'\"> · {{ record.options.model_name || record.options.model_provider_id || '系统默认模型' }}</span>")
|
|
edit('views/knowledge/center.vue', '<div>草稿 {{ record.created_items }}', '<div v-if="record.pending_items" class="text-xs text-gray-500">待整理问答 {{ record.pending_items }} 条(已保存断点)</div>\n <div>草稿 {{ record.created_items }}')
|
|
edit('views/knowledge/center.vue', '<div v-if="record.completion_reason"', '<div v-if="record.completion_reason && record.status === \'completed\'"')
|
|
edit('views/knowledge/center.vue', "@click=\"jobAction(record.id, 'resume')\">继续 / 重试", '@click="configureJob(record)">配置 / 继续')
|
|
edit('views/knowledge/center.vue', ' <KnowledgeBatchDialog ', ' <KnowledgeJobConfig v-model:open="configOpen" :account-id="accountId" :job="configJob" @finished="load" />\n <KnowledgeBatchDialog ')
|
|
edit('views/knowledge/center.vue', ' <Button v-if="canPublish && selected.status === \'published\'"', ' <Button v-if="canWrite && selected.status === \'rejected\'" danger :disabled="busy" @click="deleteSelected">删除已驳回知识</Button>\n <Button v-if="canPublish && selected.status === \'published\'"')
|