# 数据完整性保障方案 - 万分之一错误率目标 ## 📊 质量目标 - **系统错误率**: ≤ 0.01% (万分之一) - **财务数据准确率**: 100% - **核心业务数据一致性**: 100% ## 🏗️ 四层防护体系 ### 第一层:数据库强约束(最后一道防线) **文件**: `migrations/20260604_200000_data_integrity_constraints.sql` #### 1.1 触发器校验 - ✅ 计划数量一致性验证 (`validate_plan_quantity_consistency`) - ✅ 入库记录正数验证 (`validate_inventory_record_positive`) - ✅ 付款金额一致性验证 (`validate_payment_amount`) - ✅ 应付账款汇总验证 (`validate_accounts_payable_totals`) #### 1.2 CHECK 约束 ```sql -- 入库记录非负 CHECK (quantity >= 0 AND rolls >= 0 AND price_per_meter >= 0) -- 付款金额非负 CHECK (amount >= 0 AND quantity >= 0 AND price_per_meter >= 0) -- 应付账款逻辑约束 CHECK (paid_amount <= total_amount AND unpaid_amount <= total_amount) ``` #### 1.3 审计日志 所有关键表的数据变更自动记录到 `data_audit_logs` 表,包含: - 变更前后的值 - 操作人 - 操作时间 - 验证是否通过 ### 第二层:前端预检校验(写入前拦截) **文件**: `src/utils/dataValidation.ts` #### 2.1 校验函数 ```typescript // 入库记录校验 validateInventoryRecord({ quantity, rolls, price_per_meter }) // 付款记录校验 validatePayment({ amount, quantity, price_per_meter }) // 计划完成数量校验 validatePlanCompletion({ target_quantity, completed_quantity }) ``` #### 2.2 安全写入包装器 ```typescript // 双重校验 + 写入后验证 await safeInsertInventoryRecord(record); await safeInsertPayment(payment); ``` ### 第三层:自动化监控(持续检测) #### 3.1 Edge Function 定期检查 **文件**: `functions/data-integrity-check/index.ts` - ⏰ 建议每小时执行一次 - 🔍 检查所有核心表的数据一致性 - 📊 计算错误率并与阈值对比 - 🚨 超标时生成告警 **部署命令**: ```bash meoo-cli cloud deploy-function -n data-integrity-check ``` #### 3.2 数据库视图实时监控 ```sql -- 计划数量一致性检查 SELECT * FROM v_plan_quantity_check WHERE check_result = '✗ 不一致'; -- 付款金额检查 SELECT * FROM v_payment_check WHERE check_result = '✗ 不一致'; -- 应付账款检查 SELECT * FROM v_accounts_payable_check WHERE check_result = '✗ 不一致'; -- 错误率监控 SELECT * FROM v_error_rate_monitor WHERE error_rate_per_10k > 1; ``` ### 第四层:可视化监控面板 **文件**: `src/components/DataIntegrityDashboard.tsx` 功能: - 📈 实时显示系统数据质量状态 - 🎯 错误率趋势图(近7天) - ⚠️ 异常项目高亮显示 - 📋 最近失败记录列表 - 🔄 支持手动触发检查 ## 🚀 实施步骤 ### 步骤1:执行数据库迁移 ```bash # 读取迁移脚本内容 cat migrations/20260604_200000_data_integrity_constraints.sql # 分批执行(避免单次SQL过长) meoo-cli cloud migrate --name "data_integrity_constraints" \ --changes "添加数据完整性强约束、触发器、审计日志和监控视图" \ --sql "$(cat migrations/20260604_200000_data_integrity_constraints.sql)" ``` ### 步骤2:部署 Edge Function ```bash # 部署数据完整性检查函数 meoo-cli cloud deploy-function -n data-integrity-check # 配置定时任务(在 Supabase Dashboard 中设置) # 建议:每小时执行一次 ``` ### 步骤3:集成前端组件 在管理后台或系统设置页面添加监控面板: ```tsx import { DataIntegrityDashboard } from './components/DataIntegrityDashboard'; // 在路由中添加 } /> ``` ### 步骤4:替换现有写入操作 将现有的直接写入替换为安全写入: ```typescript // ❌ 旧方式 await supabase.from('inventory_records').insert(record); // ✅ 新方式 import { safeInsertInventoryRecord } from '../utils/dataValidation'; await safeInsertInventoryRecord(record); ``` 需要替换的文件: - `src/pages/textile/FabricWarehouse.tsx` - 坯布入库 - `src/pages/textile/PlanOverview.tsx` - 流程确认 - `src/pages/purchaser/WarehouseManage.tsx` - 产品入库 - `src/pages/*/PaymentPending.tsx` - 付款操作 ### 步骤5:配置告警通知(可选) 在 Edge Function 中集成告警渠道: - 📧 邮件通知 - 💬 钉钉/企业微信 - 📱 短信告警 ## 📋 日常运维检查清单 ### 每日检查 - [ ] 查看数据完整性监控面板 - [ ] 确认错误率 ≤ 1/万 - [ ] 检查是否有新的失败记录 ### 每周检查 - [ ] 分析错误率趋势 - [ ] 审查审计日志中的异常操作 - [ ] 验证备份数据完整性 ### 每月检查 - [ ] 运行全量数据一致性检查 - [ ] 评估是否需要调整阈值 - [ ] 更新数据质量报告 ## 🔧 故障处理流程 ### 发现数据不一致 1. **立即定位** ```sql -- 查找不一致的记录 SELECT * FROM v_plan_quantity_check WHERE check_result = '✗ 不一致'; ``` 2. **分析原因** ```sql -- 查看审计日志 SELECT * FROM data_audit_logs WHERE record_id = '{问题记录ID}' ORDER BY changed_at DESC; ``` 3. **修复数据** - 优先使用事务保证原子性 - 修复后重新运行一致性检查 - 记录修复过程到审计日志 4. **根因分析** - 是代码bug?→ 修复代码并添加测试 - 是并发问题?→ 添加锁机制或使用事务 - 是用户误操作?→ 加强前端校验和提示 ### 错误率突然升高 1. 检查最近的代码部署 2. 查看审计日志中的失败模式 3. 检查数据库负载和性能 4. 必要时回滚最近的变更 ## 📊 监控指标定义 | 指标 | 计算公式 | 目标值 | 告警阈值 | |------|---------|--------|---------| | 系统错误率 | (不一致记录数 / 总记录数) × 10000 | ≤ 1/万 | > 1/万 | | 计划数量一致率 | 一致的计划数 / 总计划数 | 100% | < 99.99% | | 付款金额准确率 | 准确的付款数 / 总付款数 | 100% | < 99.99% | | 应付账款准确率 | 准确的账款数 / 总账款数 | 100% | < 99.99% | ## 🎯 持续改进 ### 短期优化(1-2周) - [ ] 完成数据库约束部署 - [ ] 集成前端校验工具 - [ ] 部署 Edge Function - [ ] 添加监控面板 ### 中期优化(1-2月) - [ ] 建立自动化测试覆盖 - [ ] 实现数据修复工具 - [ ] 完善告警通知机制 - [ ] 培训运维人员 ### 长期优化(3-6月) - [ ] 引入机器学习异常检测 - [ ] 建立数据质量评分体系 - [ ] 实现自动修复机制 - [ ] 定期第三方审计 ## 📞 技术支持 如遇数据完整性问题,请按以下优先级处理: 1. **P0 - 财务数据错误**: 立即停止相关操作,联系技术负责人 2. **P1 - 核心业务数据不一致**: 1小时内响应,4小时内修复 3. **P2 - 非关键数据异常**: 24小时内处理 4. **P3 - 监控告警**: 按日常运维流程处理 --- **最后更新**: 2026-06-04 **版本**: v1.0 **维护者**: 技术团队