-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: fix the defect where the exported log field is empty #1895
Conversation
--bug=1049645 --user=王孝刚 【应用】应用编排嵌入高级编排应用,导出对话日志文件的优化后问题字段没有值 https://www.tapd.cn/57709429/s/1635887
Adding the "do-not-merge/release-note-label-needed" label because no release-note block was detected, please follow our release note process to remove it. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@@ -194,6 +193,7 @@ def to_row(row: Dict): | |||
[])) for | |||
key, node in search_dataset_node_list]) | |||
improve_paragraph_list = row.get('improve_paragraph_list') | |||
|
|||
vote_status_map = {'-1': '未投票', '0': '赞同', '1': '反对'} | |||
return [str(row.get('chat_id')), row.get('abstract'), row.get('problem_text'), padding_problem_text, | |||
row.get('answer_text'), vote_status_map.get(row.get('vote_status')), reference_paragraph_len, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The provided code has several potential issues and areas for optimization:
-
String Concatenation: The
padding_problem_text
is being constructed as a string that joins all values of nodes with type'question-node'
. This can become inefficient if there are many such nodes. -
Empty Checks: The checks like
node.get("answer", "")
ensure that missing keys do not cause errors when joining strings. However, using an empty list ensures that no error occurs even if no matching nodes are found. -
Code Clarity: The nested structure could be more readable by using a lambda function or other functional programming constructs to simplify the filtering step in
search_dataset_node_list
. -
Vote Status Map: Using a dictionary for mapping vote statuses could lead to potential errors if vote statuses outside the expected set are encountered.
-
Performance Considerations: Since you mentioned performance concerns, consider using generator expressions instead of lists where possible, especially for filtering loops.
-
Docstring Improvements: Adding docstrings to static methods can help clarify their purpose and usage.
Here’s an optimized version of the code based on these considerations:
from collections import defaultdict
@staticmethod
def paragraph_list_to_string(paragraph_list):
details = row.get('details')
# Joining answer texts from question nodes
padding_problem_text = ' '.join(
node['answer'] for node in (d for d in details.values() if d.get('type') == 'question-node'))
# Collecting search dataset nodes and steps
search_dataset_node_list = [
key for key, node in details.items() if node.get("type") == 'search-dataset-node'
or node.get("step_type") == 'search_step']
search_datasets_with_steps = {
key: [n.get("text") for n in nodes]
for key, nodes in search_dataset_node_list}
improve_paragraph_list = row.get('improve_paragraph_list')
vote_status_map = {-1: '未投票', 0: '赞同', 1: '反对'}
vote_status_description = vote_status_map.get(int(row.get('vote_status')), '未知')
return [ str(row.get('chat_id')),
row.get('abstract'),
row.get('problem_text'),
padding_problem_text,
'',
vote_status_description,
reference_paragraph_len ]
# Example update for improved documentation
def get_vote_status(vote_code):
"""
Translates vote status numeric code into human-readable description.
:param vote_code: Numeric code representing the voter's stance (-1, 0, 1)
:return: Description ('未投票', '赞同', '反对') corresponding to the input code
"""
return { -1: '未投票',
0: '赞同',
1: '反对' }.get(vote_code, "未知")
This updated code uses generator expressions for efficient iteration and simplifies some operations for clarity. It also adds some descriptive comments and improves the organization within the method.
fix: fix the defect where the exported log field is empty --bug=1049645 --user=王孝刚 【应用】应用编排嵌入高级编排应用,导出对话日志文件的优化后问题字段没有值 https://www.tapd.cn/57709429/s/1635887