diff --git a/frontend/app/public/chats.mock.txt b/frontend/app/public/chats.mock.txt index d895ac88..1f07ab3c 100644 --- a/frontend/app/public/chats.mock.txt +++ b/frontend/app/public/chats.mock.txt @@ -1,5 +1,5 @@ 0:"" -2:[{"chat":{"updated_at":"2024-07-09T09:55:30","id":"00000000-0000-0000-0000-00000000000","title":"what is tidb?","engine_id":1,"engine_options":"{\"llm\":{\"provider\":\"openai\",\"openai_chat_model\":\"gpt-4o\",\"gemini_chat_model\":\"models/gemini-1.5-flash\",\"reranker_provider\":\"jinaai\",\"reranker_top_k\":10,\"intent_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\nKnowledge sub-queries:\\n\\n{% for sub_query, data in sub_queries.items() %}\\n\\nSub-query: {{ sub_query }}\\n\\n - Entities:\\n\\n{% for entity in data['entities'] %}\\n\\n - Name: {{ entity.name }}\\n - Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n - Relationships:\\n\\n{% for relationship in data['relationships'] %}\\n\\n - Description: {{ relationship.rag_description }}\\n - Last Modified At: {{ relationship.last_modified_at }}\\n - Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\\n{% endfor %}\\n\",\"normal_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\n---------------------\\nEntities:\\n\\n{% for entity in entities %}\\n\\n- Name: {{ entity.name }}\\n- Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n---------------------\\n\\nKnowledge relationships:\\n\\n{% for relationship in relationships %}\\n\\n- Description: {{ relationship.rag_description }}\\n- Weight: {{ relationship.weight }}\\n- Last Modified At: {{ relationship.last_modified_at }}\\n- Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\"},\"knowledge_graph\":{\"enabled\":true,\"depth\":2,\"include_meta\":true,\"with_degree\":false,\"using_intent_search\":true}}","user_id":"01907db8-8850-795d-855b-552663c18c9f","created_at":"2024-07-09T09:55:30","deleted_at":null},"user_message":{"id":120007,"created_at":"2024-07-09T09:55:31","role":"user","trace_url":null,"finished_at":null,"user_id":"01907db8-8850-795d-855b-552663c18c9f","updated_at":"2024-07-09T09:55:31","ordinal":1,"content":"what is tidb?","error":null,"sources":[],"chat_id":"00000000-0000-0000-0000-00000000000"},"assistant_message":{"id":120008,"created_at":"2024-07-09T09:55:31","role":"assistant","trace_url":"https://us.cloud.langfuse.com/trace/ccf8aea4-086b-4d72-a7a1-a05ef2e6830a","finished_at":null,"user_id":"01907db8-8850-795d-855b-552663c18c9f","updated_at":"2024-07-09T09:55:31","ordinal":2,"content":"","error":null,"sources":[],"chat_id":"00000000-0000-0000-0000-00000000000"}}] +2:[{"chat":{"origin": null,"""updated_at":"2024-07-09T09:55:30","id":"00000000-0000-0000-0000-00000000000","title":"what is tidb?","engine_id":1,"engine_options":"{\"llm\":{\"provider\":\"openai\",\"openai_chat_model\":\"gpt-4o\",\"gemini_chat_model\":\"models/gemini-1.5-flash\",\"reranker_provider\":\"jinaai\",\"reranker_top_k\":10,\"intent_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\nKnowledge sub-queries:\\n\\n{% for sub_query, data in sub_queries.items() %}\\n\\nSub-query: {{ sub_query }}\\n\\n - Entities:\\n\\n{% for entity in data['entities'] %}\\n\\n - Name: {{ entity.name }}\\n - Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n - Relationships:\\n\\n{% for relationship in data['relationships'] %}\\n\\n - Description: {{ relationship.rag_description }}\\n - Last Modified At: {{ relationship.last_modified_at }}\\n - Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\\n{% endfor %}\\n\",\"normal_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\n---------------------\\nEntities:\\n\\n{% for entity in entities %}\\n\\n- Name: {{ entity.name }}\\n- Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n---------------------\\n\\nKnowledge relationships:\\n\\n{% for relationship in relationships %}\\n\\n- Description: {{ relationship.rag_description }}\\n- Weight: {{ relationship.weight }}\\n- Last Modified At: {{ relationship.last_modified_at }}\\n- Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\"},\"knowledge_graph\":{\"enabled\":true,\"depth\":2,\"include_meta\":true,\"with_degree\":false,\"using_intent_search\":true}}","user_id":"01907db8-8850-795d-855b-552663c18c9f","created_at":"2024-07-09T09:55:30","deleted_at":null},"user_message":{"id":120007,"created_at":"2024-07-09T09:55:31","role":"user","trace_url":null,"finished_at":null,"user_id":"01907db8-8850-795d-855b-552663c18c9f","updated_at":"2024-07-09T09:55:31","ordinal":1,"content":"what is tidb?","error":null,"sources":[],"chat_id":"00000000-0000-0000-0000-00000000000"},"assistant_message":{"id":120008,"created_at":"2024-07-09T09:55:31","role":"assistant","trace_url":"https://us.cloud.langfuse.com/trace/ccf8aea4-086b-4d72-a7a1-a05ef2e6830a","finished_at":null,"user_id":"01907db8-8850-795d-855b-552663c18c9f","updated_at":"2024-07-09T09:55:31","ordinal":2,"content":"","error":null,"sources":[],"chat_id":"00000000-0000-0000-0000-00000000000"}}] 8:[{"state":"TRACE","display":"Start knowledge graph searching ...","context":{"langfuse_url":"https://us.cloud.langfuse.com/trace/ccf8aea4-086b-4d72-a7a1-a05ef2e6830a"}}] 8:[{"state":"REFINE_QUESTION","display":"Refine the user question ...","context":""}] 8:[{"state":"SEARCH_RELATED_DOCUMENTS","display":"Search related documents ...","context":""}] @@ -1310,4 +1310,4 @@ 0:")" 0:"" 8:[{"state":"FINISHED","display":"","context":""}] -2:[{"chat":{"updated_at":"2024-07-09T09:55:30","id":"00000000-0000-0000-0000-00000000000","title":"what is tidb?","engine_id":1,"engine_options":"{\"llm\":{\"provider\":\"openai\",\"openai_chat_model\":\"gpt-4o\",\"gemini_chat_model\":\"models/gemini-1.5-flash\",\"reranker_provider\":\"jinaai\",\"reranker_top_k\":10,\"intent_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\nKnowledge sub-queries:\\n\\n{% for sub_query, data in sub_queries.items() %}\\n\\nSub-query: {{ sub_query }}\\n\\n - Entities:\\n\\n{% for entity in data['entities'] %}\\n\\n - Name: {{ entity.name }}\\n - Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n - Relationships:\\n\\n{% for relationship in data['relationships'] %}\\n\\n - Description: {{ relationship.rag_description }}\\n - Last Modified At: {{ relationship.last_modified_at }}\\n - Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\\n{% endfor %}\\n\",\"normal_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\n---------------------\\nEntities:\\n\\n{% for entity in entities %}\\n\\n- Name: {{ entity.name }}\\n- Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n---------------------\\n\\nKnowledge relationships:\\n\\n{% for relationship in relationships %}\\n\\n- Description: {{ relationship.rag_description }}\\n- Weight: {{ relationship.weight }}\\n- Last Modified At: {{ relationship.last_modified_at }}\\n- Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\"},\"knowledge_graph\":{\"enabled\":true,\"depth\":2,\"include_meta\":true,\"with_degree\":false,\"using_intent_search\":true}}","user_id":"01907db8-8850-795d-855b-552663c18c9f","created_at":"2024-07-09T09:55:30","deleted_at":null},"user_message":{"id":120007,"created_at":"2024-07-09T09:55:31","role":"user","trace_url":null,"finished_at":null,"user_id":"01907db8-8850-795d-855b-552663c18c9f","updated_at":"2024-07-09T09:55:31","ordinal":1,"content":"what is tidb?","error":null,"sources":[],"chat_id":"00000000-0000-0000-0000-00000000000"},"assistant_message":{"id":120008,"created_at":"2024-07-09T09:55:31","role":"assistant","trace_url":"https://us.cloud.langfuse.com/trace/ccf8aea4-086b-4d72-a7a1-a05ef2e6830a","finished_at":"2024-07-09T09:58:07.692084Z","user_id":"01907db8-8850-795d-855b-552663c18c9f","ordinal":2,"content":"### Comprehensive Overview of TiDB\n\n#### What is TiDB?\n\nTiDB is an open-source distributed SQL database designed to support Hybrid Transactional and Analytical Processing (HTAP) workloads. It is MySQL-compatible and features horizontal scalability, strong consistency, and high availability[^1][^2]. TiDB aims to provide a one-stop database solution that covers OLTP (Online Transactional Processing), OLAP (Online Analytical Processing), and HTAP services[^3].\n\n#### Architecture\n\nThe TiDB cluster consists of three main components[^4]:\n\n1. **TiDB Server**: Handles SQL parsing, query planning, and execution.\n2. **TiKV Server**: Acts as the distributed key-value storage engine, storing the actual data.\n3. **PD (Placement Driver) Server**: Manages cluster metadata, allocates timestamps, and handles data placement and load balancing.\n\nAdditionally, TiDB includes other components such as TiFlash for columnar storage, TiSpark for Spark integration, TiDB Binlog for data replication, and TiDB Lightning for high-performance data import[^5].\n\n#### Key Features\n\n1. **Scalability**: TiDB allows for easy horizontal scaling of both computing and storage resources. The architecture separates computing from storage, enabling independent scaling[^6]. This design ensures flexibility and adaptability to changing workloads[^7].\n\n2. **High Availability**: TiDB guarantees strong consistency and availability through its multi-replica architecture and Multi-Raft protocol. Data is stored in multiple replicas, and a transaction can only be committed when data has been successfully written into the majority of replicas[^8]. This ensures data integrity even in the event of failures[^9].\n\n3. **HTAP Capabilities**: TiDB supports both row-based (TiKV) and columnar (TiFlash) storage engines, enabling real-time processing of both transactional and analytical workloads. TiFlash uses the Multi-Raft Learner protocol to replicate data from TiKV in real time, ensuring consistent data across both engines[^10].\n\n4. **Cloud-Native Design**: TiDB is built for cloud environments, offering flexible scalability, reliability, and security on various cloud platforms. It integrates seamlessly with Kubernetes and offers a fully managed service, TiDB Cloud[^11].\n\n5. **MySQL Compatibility**: TiDB is compatible with the MySQL 5.7 protocol and ecosystem, allowing for easy migration of applications with minimal code changes[^12]. However, it does not support certain MySQL features like triggers, stored procedures, user-defined functions, and foreign keys[^13].\n\n#### Distributed Transactions\n\nTiDB supports distributed transactions across the cluster using a two-phase commit protocol with optimizations inspired by Google's Percolator. This model relies on a timestamp allocator to assign monotone increasing timestamps for each transaction, ensuring conflict detection[^14]. The PD server acts as the timestamp allocator in a TiDB cluster[^15].\n\n#### Ease of Use\n\nTiDB is designed to be user-friendly, allowing users to manage it with familiar MySQL tools and replace MySQL in applications without significant code changes[^16]. It supports various programming languages through MySQL clients or drivers[^17].\n\n#### Data Migration Tools\n\nTiDB provides a suite of tools for migrating, replicating, and backing up data. These tools facilitate the transition from MySQL to TiDB, making the migration process straightforward[^18].\n\n### Conclusion\n\nTiDB is a robust, scalable, and highly available distributed SQL database that offers comprehensive support for HTAP workloads. Its compatibility with MySQL, combined with its advanced features and cloud-native design, makes it a versatile choice for various data-intensive applications.\n\n[^1]: [TiDB Overview | PingCAP Docs](https://docs.pingcap.com/tidb/stable/overview)\n[^2]: [TiDB Introduction | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^3]: [TiDB Introduction | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^4]: [TiDB Architecture | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-architecture)\n[^5]: [TiDB Architecture | PingCAP Docs](https://docs.pingcap.com/tidb/v5.3/tidb-architecture)\n[^6]: [TiDB Key Features | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/overview)\n[^7]: [TiDB Key Features | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^8]: [TiDB High Availability | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/overview)\n[^9]: [TiDB High Availability | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^10]: [TiDB HTAP Capabilities | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/overview)\n[^11]: [TiDB Cloud-Native Design | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^12]: [TiDB MySQL Compatibility | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^13]: [TiDB MySQL Compatibility | PingCAP Docs](https://docs.pingcap.com/tidb/v6.5/tidb-faq)\n[^14]: [TiDB Distributed Transactions | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^15]: [TiDB Distributed Transactions | PingCAP Docs](https://docs.pingcap.com/tidb/v6.5/tidb-faq)\n[^16]: [TiDB Ease of Use | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^17]: [TiDB Programming Language Support | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^18]: [TiDB Data Migration Tools | PingCAP Docs](https://docs.pingcap.com/tidb/v5.3/tidb-architecture)","error":null,"sources":[{"id":8600,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v7.5/tidb-faq"},{"id":9057,"name":"Overview","source_uri":"https://docs.pingcap.com/tidbcloud/tidb-architecture"},{"id":9373,"name":"TiDB Introduction","source_uri":"https://docs.pingcap.com/tidb/v7.1/overview"},{"id":9865,"name":"Overview","source_uri":"https://docs.pingcap.com/tidb/v7.1/tidb-architecture"},{"id":10191,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v7.1/tidb-faq"},{"id":11370,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v6.5/tidb-faq"},{"id":12985,"name":"TiDB Introduction","source_uri":"https://docs.pingcap.com/tidb/v5.4/overview"},{"id":13942,"name":"Overview","source_uri":"https://docs.pingcap.com/tidb/v5.3/tidb-architecture"},{"id":14218,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v5.3/tidb-faq"}],"chat_id":"00000000-0000-0000-0000-00000000000"}}] +2:[{"chat":{"origin": null,""updated_at":"2024-07-09T09:55:30","id":"00000000-0000-0000-0000-00000000000","title":"what is tidb?","engine_id":1,"engine_options":"{\"llm\":{\"provider\":\"openai\",\"openai_chat_model\":\"gpt-4o\",\"gemini_chat_model\":\"models/gemini-1.5-flash\",\"reranker_provider\":\"jinaai\",\"reranker_top_k\":10,\"intent_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\nKnowledge sub-queries:\\n\\n{% for sub_query, data in sub_queries.items() %}\\n\\nSub-query: {{ sub_query }}\\n\\n - Entities:\\n\\n{% for entity in data['entities'] %}\\n\\n - Name: {{ entity.name }}\\n - Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n - Relationships:\\n\\n{% for relationship in data['relationships'] %}\\n\\n - Description: {{ relationship.rag_description }}\\n - Last Modified At: {{ relationship.last_modified_at }}\\n - Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\\n{% endfor %}\\n\",\"normal_graph_knowledge\":\"Given a list of relationships of a knowledge graph as follows. When there is a conflict in meaning between knowledge relationships, the relationship with the higher `weight` and newer `last_modified_at` value takes precedence.\\n\\n---------------------\\nEntities:\\n\\n{% for entity in entities %}\\n\\n- Name: {{ entity.name }}\\n- Description: {{ entity.description }}\\n\\n{% endfor %}\\n\\n---------------------\\n\\nKnowledge relationships:\\n\\n{% for relationship in relationships %}\\n\\n- Description: {{ relationship.rag_description }}\\n- Weight: {{ relationship.weight }}\\n- Last Modified At: {{ relationship.last_modified_at }}\\n- Meta: {{ relationship.meta | tojson(indent=2) }}\\n\\n{% endfor %}\\n\"},\"knowledge_graph\":{\"enabled\":true,\"depth\":2,\"include_meta\":true,\"with_degree\":false,\"using_intent_search\":true}}","user_id":"01907db8-8850-795d-855b-552663c18c9f","created_at":"2024-07-09T09:55:30","deleted_at":null},"user_message":{"id":120007,"created_at":"2024-07-09T09:55:31","role":"user","trace_url":null,"finished_at":null,"user_id":"01907db8-8850-795d-855b-552663c18c9f","updated_at":"2024-07-09T09:55:31","ordinal":1,"content":"what is tidb?","error":null,"sources":[],"chat_id":"00000000-0000-0000-0000-00000000000"},"assistant_message":{"id":120008,"created_at":"2024-07-09T09:55:31","role":"assistant","trace_url":"https://us.cloud.langfuse.com/trace/ccf8aea4-086b-4d72-a7a1-a05ef2e6830a","finished_at":"2024-07-09T09:58:07.692084Z","user_id":"01907db8-8850-795d-855b-552663c18c9f","ordinal":2,"content":"### Comprehensive Overview of TiDB\n\n#### What is TiDB?\n\nTiDB is an open-source distributed SQL database designed to support Hybrid Transactional and Analytical Processing (HTAP) workloads. It is MySQL-compatible and features horizontal scalability, strong consistency, and high availability[^1][^2]. TiDB aims to provide a one-stop database solution that covers OLTP (Online Transactional Processing), OLAP (Online Analytical Processing), and HTAP services[^3].\n\n#### Architecture\n\nThe TiDB cluster consists of three main components[^4]:\n\n1. **TiDB Server**: Handles SQL parsing, query planning, and execution.\n2. **TiKV Server**: Acts as the distributed key-value storage engine, storing the actual data.\n3. **PD (Placement Driver) Server**: Manages cluster metadata, allocates timestamps, and handles data placement and load balancing.\n\nAdditionally, TiDB includes other components such as TiFlash for columnar storage, TiSpark for Spark integration, TiDB Binlog for data replication, and TiDB Lightning for high-performance data import[^5].\n\n#### Key Features\n\n1. **Scalability**: TiDB allows for easy horizontal scaling of both computing and storage resources. The architecture separates computing from storage, enabling independent scaling[^6]. This design ensures flexibility and adaptability to changing workloads[^7].\n\n2. **High Availability**: TiDB guarantees strong consistency and availability through its multi-replica architecture and Multi-Raft protocol. Data is stored in multiple replicas, and a transaction can only be committed when data has been successfully written into the majority of replicas[^8]. This ensures data integrity even in the event of failures[^9].\n\n3. **HTAP Capabilities**: TiDB supports both row-based (TiKV) and columnar (TiFlash) storage engines, enabling real-time processing of both transactional and analytical workloads. TiFlash uses the Multi-Raft Learner protocol to replicate data from TiKV in real time, ensuring consistent data across both engines[^10].\n\n4. **Cloud-Native Design**: TiDB is built for cloud environments, offering flexible scalability, reliability, and security on various cloud platforms. It integrates seamlessly with Kubernetes and offers a fully managed service, TiDB Cloud[^11].\n\n5. **MySQL Compatibility**: TiDB is compatible with the MySQL 5.7 protocol and ecosystem, allowing for easy migration of applications with minimal code changes[^12]. However, it does not support certain MySQL features like triggers, stored procedures, user-defined functions, and foreign keys[^13].\n\n#### Distributed Transactions\n\nTiDB supports distributed transactions across the cluster using a two-phase commit protocol with optimizations inspired by Google's Percolator. This model relies on a timestamp allocator to assign monotone increasing timestamps for each transaction, ensuring conflict detection[^14]. The PD server acts as the timestamp allocator in a TiDB cluster[^15].\n\n#### Ease of Use\n\nTiDB is designed to be user-friendly, allowing users to manage it with familiar MySQL tools and replace MySQL in applications without significant code changes[^16]. It supports various programming languages through MySQL clients or drivers[^17].\n\n#### Data Migration Tools\n\nTiDB provides a suite of tools for migrating, replicating, and backing up data. These tools facilitate the transition from MySQL to TiDB, making the migration process straightforward[^18].\n\n### Conclusion\n\nTiDB is a robust, scalable, and highly available distributed SQL database that offers comprehensive support for HTAP workloads. Its compatibility with MySQL, combined with its advanced features and cloud-native design, makes it a versatile choice for various data-intensive applications.\n\n[^1]: [TiDB Overview | PingCAP Docs](https://docs.pingcap.com/tidb/stable/overview)\n[^2]: [TiDB Introduction | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^3]: [TiDB Introduction | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^4]: [TiDB Architecture | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-architecture)\n[^5]: [TiDB Architecture | PingCAP Docs](https://docs.pingcap.com/tidb/v5.3/tidb-architecture)\n[^6]: [TiDB Key Features | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/overview)\n[^7]: [TiDB Key Features | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^8]: [TiDB High Availability | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/overview)\n[^9]: [TiDB High Availability | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^10]: [TiDB HTAP Capabilities | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/overview)\n[^11]: [TiDB Cloud-Native Design | PingCAP Docs](https://docs.pingcap.com/tidb/v5.4/overview)\n[^12]: [TiDB MySQL Compatibility | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^13]: [TiDB MySQL Compatibility | PingCAP Docs](https://docs.pingcap.com/tidb/v6.5/tidb-faq)\n[^14]: [TiDB Distributed Transactions | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^15]: [TiDB Distributed Transactions | PingCAP Docs](https://docs.pingcap.com/tidb/v6.5/tidb-faq)\n[^16]: [TiDB Ease of Use | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^17]: [TiDB Programming Language Support | PingCAP Docs](https://docs.pingcap.com/tidb/v7.1/tidb-faq)\n[^18]: [TiDB Data Migration Tools | PingCAP Docs](https://docs.pingcap.com/tidb/v5.3/tidb-architecture)","error":null,"sources":[{"id":8600,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v7.5/tidb-faq"},{"id":9057,"name":"Overview","source_uri":"https://docs.pingcap.com/tidbcloud/tidb-architecture"},{"id":9373,"name":"TiDB Introduction","source_uri":"https://docs.pingcap.com/tidb/v7.1/overview"},{"id":9865,"name":"Overview","source_uri":"https://docs.pingcap.com/tidb/v7.1/tidb-architecture"},{"id":10191,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v7.1/tidb-faq"},{"id":11370,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v6.5/tidb-faq"},{"id":12985,"name":"TiDB Introduction","source_uri":"https://docs.pingcap.com/tidb/v5.4/overview"},{"id":13942,"name":"Overview","source_uri":"https://docs.pingcap.com/tidb/v5.3/tidb-architecture"},{"id":14218,"name":"TiDB FAQs","source_uri":"https://docs.pingcap.com/tidb/v5.3/tidb-faq"}],"chat_id":"00000000-0000-0000-0000-00000000000"}}] diff --git a/frontend/app/src/components/chat/chat-stream.state.test.ts b/frontend/app/src/components/chat/chat-stream.state.test.ts index f948424f..cdeb5d8f 100644 --- a/frontend/app/src/components/chat/chat-stream.state.test.ts +++ b/frontend/app/src/components/chat/chat-stream.state.test.ts @@ -12,6 +12,7 @@ it('pass', () => { 'browser_id': null, 'created_at': '2024-07-08T10:28:39', 'deleted_at': null, + 'origin': null, }, 'user_message': { 'id': 60033,