traffic-audit-server/src/main/java/com/trafficaudit/auditengine/service/AuditEngineService.java
@@ -631,6 +631,8 @@
                    .eq(InvestmentSystem::getReportPeriod, reportPeriod))) {
            sysMap.computeIfAbsent(normInvestName(s.getProjectName()), k -> new ArrayList<>()).add(s);
        }
        // 同报表期投资系统基准整期缺失时,不做"项目缺失核实"(缺失=基准未导入,不等于项目不存在),避免整表误报
        boolean benchmarkMissing = sysMap.isEmpty();
        // 幂等:只清除 INVEST 规则的旧审核结果
        List<Long> ruleIds = new ArrayList<>();
@@ -647,6 +649,7 @@
            String projectName = project == null ? "未知项目" : project.getProjectName();
            InvestmentSystem sys = findInvestSystem(sysMap, projectName);
            for (AuditRule rule : rules) {
                if (benchmarkMissing && "EXISTENCE_SYS".equals(rule.getCompareType())) continue;
                AuditResult result = checkInvestRule(rule, monthly, projectName, sys);
                if (result != null) {
                    result.setRuleName(rule.getRuleName());
@@ -1538,6 +1541,7 @@
            case "RULE_I001":
            case "RULE_I002":
            case "RULE_I003":
            case "RULE_I004":
                return investSystemMapper.selectCount(new LambdaQueryWrapper<InvestmentSystem>()
                    .eq(InvestmentSystem::getReportPeriod, period)) == 0;
            default: