检测配置中缺失的必要字段
(self, config)
| 300 | return self.return_message(False, f"字段验证异常: {str(e)}") |
| 301 | |
| 302 | def detect_missing_fields(self, config): |
| 303 | """检测配置中缺失的必要字段""" |
| 304 | try: |
| 305 | if not isinstance(config, dict): |
| 306 | return self.return_message(False, '配置必须是字典类型') |
| 307 | |
| 308 | missing_fields = [] |
| 309 | |
| 310 | def _check_nested_fields(default_dict, current_dict, path_prefix=''): |
| 311 | """递归检查嵌套字段""" |
| 312 | for key, default_value in default_dict.items(): |
| 313 | current_path = f"{path_prefix}.{key}" if path_prefix else key |
| 314 | |
| 315 | if key not in current_dict: |
| 316 | missing_fields.append({ |
| 317 | 'path': current_path, |
| 318 | 'default_value': default_value, |
| 319 | 'type': type(default_value).__name__ |
| 320 | }) |
| 321 | elif isinstance(default_value, dict) and isinstance(current_dict.get(key), dict): |
| 322 | _check_nested_fields(default_value, current_dict[key], current_path) |
| 323 | |
| 324 | _check_nested_fields(self.DEFAULT_CONFIG, config) |
| 325 | |
| 326 | return self.return_message(True, f'检测到 {len(missing_fields)} 个缺失字段', { |
| 327 | 'missing_fields': missing_fields, |
| 328 | 'total_missing': len(missing_fields) |
| 329 | }) |
| 330 | |
| 331 | except Exception as e: |
| 332 | return self.return_message(False, f'字段检测异常: {str(e)}') |
| 333 | |
| 334 | def auto_fill_missing_fields(self, config): |
| 335 | """自动补充配置中缺失的必要字段""" |
no test coverage detected