fix: 自定义规则置顶生效,写入前校验策略名存在

规则首条匹配即生效,自定义规则此前插在模板规则之后、FINAL 之前,被
download.conf 等宽泛规则集抢先命中(brew.sh 配了代理仍直连)。现在新建
规则插到 seq 0,重新播种时也把自定义规则整体排在模板规则之前。

同时把 BUILTIN_POLICIES 提到 shared 共用,规则新建/编辑时校验策略必须是
内置策略或已有策略组,避免引用不存在的策略被 IR 静默剔除;前端表单默认
策略由不存在的「Proxy」改为 DIRECT。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-09-03 16:44:40 +08:00
parent a30360ab38
commit c6db237448
5 changed files with 29 additions and 33 deletions

View File

@@ -39,7 +39,7 @@ function openPreview(rule: RuleDto) {
previewRule.value = rule;
showPreview.value = true;
}
const form = ref<RuleInput>({ type: 'DOMAIN-SUFFIX', value: '', policy: 'Proxy', params: [], enabled: true });
const form = ref<RuleInput>({ type: 'DOMAIN-SUFFIX', value: '', policy: 'DIRECT', params: [], enabled: true });
const policyOptions = computed(() => [
...['DIRECT', 'REJECT', 'REJECT-DROP', 'REJECT-NO-DROP'].map((p) => ({ label: p, value: p })),
@@ -53,7 +53,7 @@ const typeOptions = RULE_TYPES.filter((t) => t !== 'RULE-SET' && t !== 'DOMAIN-S
function openCreate() {
editing.value = null;
form.value = { type: 'DOMAIN-SUFFIX', value: '', policy: 'Proxy', params: [], enabled: true };
form.value = { type: 'DOMAIN-SUFFIX', value: '', policy: 'DIRECT', params: [], enabled: true };
showForm.value = true;
}