| 77 | |
| 78 | |
| 79 | def get_sync_web_document_handler(knowledge_id, user_id): |
| 80 | from knowledge.serializers.document import DocumentSerializers |
| 81 | |
| 82 | def handler(source_url: str, selector, response: Fork.Response): |
| 83 | if response.status == 200: |
| 84 | try: |
| 85 | paragraphs = get_split_model("web.md").parse(response.content) |
| 86 | # 插入 |
| 87 | DocumentSerializers.Create(data={"knowledge_id": knowledge_id, "user_id": user_id}).save( |
| 88 | { |
| 89 | "name": source_url[0:128], |
| 90 | "paragraphs": paragraphs, |
| 91 | "meta": {"source_url": source_url, "selector": selector}, |
| 92 | "type": KnowledgeType.WEB, |
| 93 | }, |
| 94 | with_valid=True, |
| 95 | ) |
| 96 | except Exception as e: |
| 97 | maxkb_logger.error(f"{str(e)}:{traceback.format_exc()}") |
| 98 | else: |
| 99 | Document( |
| 100 | name=source_url[0:128], |
| 101 | knowledge_id=knowledge_id, |
| 102 | meta={"source_url": source_url, "selector": selector, "allow_download": True}, |
| 103 | type=KnowledgeType.WEB, |
| 104 | char_length=0, |
| 105 | status=State.FAILURE, |
| 106 | ).save() |
| 107 | |
| 108 | return handler |
| 109 | |
| 110 | |
| 111 | def save_problem(knowledge_id, document_id, paragraph_id, problem): |