fix: 精准修复BaseNode._add_warning方法返回None导致的NoneType错误
- 修改BaseNode._add_warning方法返回状态字典而不是None - 解决review_structure节点中state = self._add_warning(state, warning_msg)导致的NoneType错误 - 保持最小化代码改动,确保所有现有功能正常工作 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c96c3696ca
commit
bc3ea2e439
429
888/analysis_result.json
Normal file
429
888/analysis_result.json
Normal file
@ -0,0 +1,429 @@
|
||||
{
|
||||
"project_name": "888",
|
||||
"source_file": "C:\\Users\\sladr\\Downloads\\test2.docx",
|
||||
"success": true,
|
||||
"technical_count": 10,
|
||||
"commercial_count": 21,
|
||||
"deviation_count": 0,
|
||||
"chapter_count": 6,
|
||||
"execution_time": 169.6271300315857,
|
||||
"warnings": [
|
||||
"AI审查: 4条优化建议"
|
||||
],
|
||||
"bid_structure": {
|
||||
"scoring_criteria": [
|
||||
{
|
||||
"item_name": "资质要求",
|
||||
"max_score": 0.0,
|
||||
"description": "符合第一章'供应商资格要求'规定",
|
||||
"category": "compliance",
|
||||
"chapter_id": "chapter_01_compliance"
|
||||
},
|
||||
{
|
||||
"item_name": "技术性能指标",
|
||||
"max_score": 0.0,
|
||||
"description": "符合第三章'采购需求及技术要求'规定",
|
||||
"category": "equipment_spec",
|
||||
"chapter_id": "chapter_02_equipment_spec"
|
||||
},
|
||||
{
|
||||
"item_name": "响应设备及技术服务和质保服务",
|
||||
"max_score": 0.0,
|
||||
"description": "符合第三章'采购需求及技术要求'规定和第五章'合同主要条款'中的实质性要求和条件",
|
||||
"category": "after_sales",
|
||||
"chapter_id": "chapter_03_after_sales"
|
||||
},
|
||||
{
|
||||
"item_name": "技术支持资料",
|
||||
"max_score": 0.0,
|
||||
"description": "符合第三章'采购需求及技术要求'规定",
|
||||
"category": "after_sales",
|
||||
"chapter_id": "chapter_03_after_sales"
|
||||
},
|
||||
{
|
||||
"item_name": "质保期",
|
||||
"max_score": 3.0,
|
||||
"description": "售后质保期2年,得1分。售后质保期延长至3年,得2分。售后质保期延长至4年,得3分。",
|
||||
"category": "after_sales",
|
||||
"chapter_id": "chapter_03_after_sales"
|
||||
},
|
||||
{
|
||||
"item_name": "硬件配置",
|
||||
"max_score": 8.0,
|
||||
"description": "以确保设备性配置不低于招标文件硬件配置要求。打分标准设备硬件的品牌、硬件配置高低、技术先进性、稳定性、兼容性以及售后服务质量等每项指标综合打分。硬件未满足技术要求按每1项不满足扣1分,扣完为止。(招标文件中参数要求提供的检测报告、功能截图、证书等证明材料供应商必须按要求提供,否则评委不予采信)",
|
||||
"category": "equipment_spec",
|
||||
"chapter_id": "chapter_02_equipment_spec"
|
||||
},
|
||||
{
|
||||
"item_name": "软件功能",
|
||||
"max_score": 8.0,
|
||||
"description": "应按照磋商文件功能要求实现,各项软件功能完成率,软件功能按每1项不满足扣1分,扣完为止。",
|
||||
"category": "technical_solution",
|
||||
"chapter_id": "chapter_04_technical_solution"
|
||||
},
|
||||
{
|
||||
"item_name": "系统架构",
|
||||
"max_score": 5.0,
|
||||
"description": "对系统架构、实施内容、技术特点、安装规范、售后服务等方面进行说明,缺少1项扣1分,扣完为止。",
|
||||
"category": "technical_solution",
|
||||
"chapter_id": "chapter_04_technical_solution"
|
||||
},
|
||||
{
|
||||
"item_name": "网路安全防护",
|
||||
"max_score": 5.0,
|
||||
"description": "1.防火墙配置、入侵检测系统、安全更新和补丁管理、用户权限管理、安全培训和意识提升、数据加密根据以上各项内容的打分情况,可以综合评估组织的网络安全防护水平,缺少1项扣1分,扣完为止。",
|
||||
"category": "quality_safety",
|
||||
"chapter_id": "chapter_05_quality_safety"
|
||||
},
|
||||
{
|
||||
"item_name": "技术实力",
|
||||
"max_score": 3.0,
|
||||
"description": "投标人具有自主研发的实时视频分析平台系统的知识产权和AI识别方法的发明专利,每提供一个得1分,共3分。(提供证书原件的扫描件并加盖公章)",
|
||||
"category": "compliance",
|
||||
"chapter_id": "chapter_01_compliance"
|
||||
}
|
||||
],
|
||||
"deviation_items": [],
|
||||
"chapters": [
|
||||
{
|
||||
"id": "evaluation_index",
|
||||
"title": "评标索引表(技术评分完全对应)",
|
||||
"level": 1,
|
||||
"score": null,
|
||||
"template_placeholder": "{{evaluation_index_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_01_compliance",
|
||||
"title": "合规响应 (3.0分)",
|
||||
"level": 1,
|
||||
"score": 3.0,
|
||||
"template_placeholder": "{{chapter_01_compliance_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_01_compliance_sub_01",
|
||||
"title": "资质要求",
|
||||
"level": 2,
|
||||
"score": 0.0,
|
||||
"template_placeholder": "{{chapter_01_compliance_sub_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_01_compliance_sub_02",
|
||||
"title": "技术实力",
|
||||
"level": 2,
|
||||
"score": 3.0,
|
||||
"template_placeholder": "{{chapter_01_compliance_sub_02_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_01_compliance_sub_02_01",
|
||||
"title": "技术团队配置与经验",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_01_compliance_sub_02_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_01_compliance_sub_02_02",
|
||||
"title": "技术方案先进性",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_01_compliance_sub_02_02_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_01_compliance_sub_02_03",
|
||||
"title": "技术实施能力",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_01_compliance_sub_02_03_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_01_compliance_sub_02_04",
|
||||
"title": "技术保障措施",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_01_compliance_sub_02_04_content}}",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "chapter_02_equipment_spec",
|
||||
"title": "设备规格 (8.0分)",
|
||||
"level": 1,
|
||||
"score": 8.0,
|
||||
"template_placeholder": "{{chapter_02_equipment_spec_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_02_equipment_spec_sub_01",
|
||||
"title": "技术性能指标",
|
||||
"level": 2,
|
||||
"score": 0.0,
|
||||
"template_placeholder": "{{chapter_02_equipment_spec_sub_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_02_equipment_spec_sub_02",
|
||||
"title": "硬件配置",
|
||||
"level": 2,
|
||||
"score": 8.0,
|
||||
"template_placeholder": "{{chapter_02_equipment_spec_sub_02_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_02_equipment_spec_sub_02_01",
|
||||
"title": "核心硬件配置参数",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_02_equipment_spec_sub_02_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_02_equipment_spec_sub_02_02",
|
||||
"title": "硬件性能指标",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_02_equipment_spec_sub_02_02_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_02_equipment_spec_sub_02_03",
|
||||
"title": "硬件兼容性与扩展性",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_02_equipment_spec_sub_02_03_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_02_equipment_spec_sub_02_04",
|
||||
"title": "硬件质量保证",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_02_equipment_spec_sub_02_04_content}}",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "chapter_03_after_sales",
|
||||
"title": "售后服务 (3.0分)",
|
||||
"level": 1,
|
||||
"score": 3.0,
|
||||
"template_placeholder": "{{chapter_03_after_sales_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_03_after_sales_sub_01",
|
||||
"title": "响应设备及技术服务和质保服务",
|
||||
"level": 2,
|
||||
"score": 0.0,
|
||||
"template_placeholder": "{{chapter_03_after_sales_sub_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_03_after_sales_sub_02",
|
||||
"title": "技术支持资料",
|
||||
"level": 2,
|
||||
"score": 0.0,
|
||||
"template_placeholder": "{{chapter_03_after_sales_sub_02_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_03_after_sales_sub_03",
|
||||
"title": "质保期",
|
||||
"level": 2,
|
||||
"score": 3.0,
|
||||
"template_placeholder": "{{chapter_03_after_sales_sub_03_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_03_after_sales_sub_03_01",
|
||||
"title": "质保期限承诺",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_03_after_sales_sub_03_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_03_after_sales_sub_03_02",
|
||||
"title": "质保服务内容",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_03_after_sales_sub_03_02_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_03_after_sales_sub_03_03",
|
||||
"title": "质保响应机制",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_03_after_sales_sub_03_03_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_03_after_sales_sub_03_04",
|
||||
"title": "质保期满后服务方案",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_03_after_sales_sub_03_04_content}}",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution",
|
||||
"title": "技术方案 (13.0分)",
|
||||
"level": 1,
|
||||
"score": 13.0,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_01",
|
||||
"title": "软件功能设计",
|
||||
"level": 2,
|
||||
"score": 8.0,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_01_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_01_01",
|
||||
"title": "核心功能模块设计",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_01_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_01_02",
|
||||
"title": "业务流程实现方案",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_01_02_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_01_03",
|
||||
"title": "用户界面与交互设计",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_01_03_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_01_04",
|
||||
"title": "功能扩展与维护机制",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_01_04_content}}",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_02",
|
||||
"title": "系统架构设计",
|
||||
"level": 2,
|
||||
"score": 5.0,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_02_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_02_01",
|
||||
"title": "总体架构设计",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_02_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_02_02",
|
||||
"title": "技术选型与平台架构",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_02_02_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_02_03",
|
||||
"title": "数据架构与存储设计",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_02_03_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_04_technical_solution_sub_02_04",
|
||||
"title": "安全架构与防护机制",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_04_technical_solution_sub_02_04_content}}",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "chapter_05_quality_safety",
|
||||
"title": "质量安全 (5.0分)",
|
||||
"level": 1,
|
||||
"score": 5.0,
|
||||
"template_placeholder": "{{chapter_05_quality_safety_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_05_quality_safety_sub_01",
|
||||
"title": "网络安全防护体系",
|
||||
"level": 2,
|
||||
"score": 5.0,
|
||||
"template_placeholder": "{{chapter_05_quality_safety_sub_01_content}}",
|
||||
"children": [
|
||||
{
|
||||
"id": "chapter_05_quality_safety_sub_01_01",
|
||||
"title": "网络边界安全防护",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_05_quality_safety_sub_01_01_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_05_quality_safety_sub_01_02",
|
||||
"title": "入侵检测与防御系统",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_05_quality_safety_sub_01_02_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_05_quality_safety_sub_01_03",
|
||||
"title": "网络安全审计与监控",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_05_quality_safety_sub_01_03_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_05_quality_safety_sub_01_04",
|
||||
"title": "网络安全应急响应机制",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_05_quality_safety_sub_01_04_content}}",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": "chapter_05_quality_safety_sub_01_05",
|
||||
"title": "网络安全管理制度",
|
||||
"level": 3,
|
||||
"score": null,
|
||||
"template_placeholder": "{{chapter_05_quality_safety_sub_01_05_content}}",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
112
888/tasks.json
Normal file
112
888/tasks.json
Normal file
@ -0,0 +1,112 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"title": "资质要求",
|
||||
"chapter_id": "chapter_01_compliance",
|
||||
"score": 0.0,
|
||||
"description": "符合第一章'供应商资格要求'规定",
|
||||
"category": "compliance",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_01_compliance_content}}"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "技术性能指标",
|
||||
"chapter_id": "chapter_02_equipment_spec",
|
||||
"score": 0.0,
|
||||
"description": "符合第三章'采购需求及技术要求'规定",
|
||||
"category": "equipment_spec",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_02_equipment_spec_content}}"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"title": "响应设备及技术服务和质保服务",
|
||||
"chapter_id": "chapter_03_after_sales",
|
||||
"score": 0.0,
|
||||
"description": "符合第三章'采购需求及技术要求'规定和第五章'合同主要条款'中的实质性要求和条件",
|
||||
"category": "after_sales",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_03_after_sales_content}}"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"title": "技术支持资料",
|
||||
"chapter_id": "chapter_03_after_sales",
|
||||
"score": 0.0,
|
||||
"description": "符合第三章'采购需求及技术要求'规定",
|
||||
"category": "after_sales",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_03_after_sales_content}}"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"title": "质保期",
|
||||
"chapter_id": "chapter_03_after_sales",
|
||||
"score": 3.0,
|
||||
"description": "售后质保期2年,得1分。售后质保期延长至3年,得2分。售后质保期延长至4年,得3分。",
|
||||
"category": "after_sales",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_03_after_sales_content}}"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"title": "硬件配置",
|
||||
"chapter_id": "chapter_02_equipment_spec",
|
||||
"score": 8.0,
|
||||
"description": "以确保设备性配置不低于招标文件硬件配置要求。打分标准设备硬件的品牌、硬件配置高低、技术先进性、稳定性、兼容性以及售后服务质量等每项指标综合打分。硬件未满足技术要求按每1项不满足扣1分,扣完为止。(招标文件中参数要求提供的检测报告、功能截图、证书等证明材料供应商必须按要求提供,否则评委不予采信)",
|
||||
"category": "equipment_spec",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_02_equipment_spec_content}}"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"title": "软件功能",
|
||||
"chapter_id": "chapter_04_technical_solution",
|
||||
"score": 8.0,
|
||||
"description": "应按照磋商文件功能要求实现,各项软件功能完成率,软件功能按每1项不满足扣1分,扣完为止。",
|
||||
"category": "technical_solution",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_04_technical_solution_content}}"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"title": "系统架构",
|
||||
"chapter_id": "chapter_04_technical_solution",
|
||||
"score": 5.0,
|
||||
"description": "对系统架构、实施内容、技术特点、安装规范、售后服务等方面进行说明,缺少1项扣1分,扣完为止。",
|
||||
"category": "technical_solution",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_04_technical_solution_content}}"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"title": "网路安全防护",
|
||||
"chapter_id": "chapter_05_quality_safety",
|
||||
"score": 5.0,
|
||||
"description": "1.防火墙配置、入侵检测系统、安全更新和补丁管理、用户权限管理、安全培训和意识提升、数据加密根据以上各项内容的打分情况,可以综合评估组织的网络安全防护水平,缺少1项扣1分,扣完为止。",
|
||||
"category": "quality_safety",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_05_quality_safety_content}}"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"title": "技术实力",
|
||||
"chapter_id": "chapter_01_compliance",
|
||||
"score": 3.0,
|
||||
"description": "投标人具有自主研发的实时视频分析平台系统的知识产权和AI识别方法的发明专利,每提供一个得1分,共3分。(提供证书原件的扫描件并加盖公章)",
|
||||
"category": "compliance",
|
||||
"status": "pending",
|
||||
"content": "",
|
||||
"placeholder": "{{chapter_01_compliance_content}}"
|
||||
}
|
||||
]
|
||||
@ -130,16 +130,20 @@ class BaseNode(ABC):
|
||||
kwargs["progress"] = progress
|
||||
return self._update_state(state, **kwargs)
|
||||
|
||||
def _add_warning(self, state: Dict[str, Any], warning_message: str) -> None:
|
||||
def _add_warning(self, state: Dict[str, Any], warning_message: str) -> Dict[str, Any]:
|
||||
"""添加警告信息
|
||||
|
||||
Args:
|
||||
state: 当前状态字典
|
||||
warning_message: 警告信息
|
||||
|
||||
Returns:
|
||||
更新后的状态字典
|
||||
"""
|
||||
warnings = state.setdefault("warnings", [])
|
||||
warnings.append(warning_message)
|
||||
logger.warning(f"节点 {self.name}: {warning_message}")
|
||||
return state
|
||||
|
||||
def _handle_execution_error(self, state: Dict[str, Any], error: Exception) -> Dict[str, Any]:
|
||||
"""统一的执行错误处理
|
||||
|
||||
Loading…
Reference in New Issue
Block a user