mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-04 04:40:38 +08:00
refactor: improve todo section handling and clarify todo content description
This commit is contained in:
@ -211,6 +211,26 @@ def convert_to_markdown_v2(output_data: dict,
|
|||||||
value = emphasize_header(value.strip(), only_markdown=True)
|
value = emphasize_header(value.strip(), only_markdown=True)
|
||||||
markdown_text += f"{value}\n\n"
|
markdown_text += f"{value}\n\n"
|
||||||
elif 'todo sections' in key_nice.lower():
|
elif 'todo sections' in key_nice.lower():
|
||||||
|
def format_todo_item(todo_item):
|
||||||
|
relevant_file = todo_item.get('relevant_file', '').strip()
|
||||||
|
line_number = todo_item.get('line_number', '')
|
||||||
|
content = todo_item.get('content', '')
|
||||||
|
reference_link = None
|
||||||
|
try:
|
||||||
|
if git_provider and relevant_file and line_number:
|
||||||
|
reference_link = git_provider.get_line_link(relevant_file, line_number, line_number)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error generating link: {e}")
|
||||||
|
return f"{relevant_file} [{line_number}]: {content}"
|
||||||
|
|
||||||
|
file_line = f"{relevant_file} [{line_number}]"
|
||||||
|
if reference_link:
|
||||||
|
if gfm_supported:
|
||||||
|
file_line = f"<a href='{reference_link}'>{file_line}</a>"
|
||||||
|
else:
|
||||||
|
file_line = f"[{file_line}]({reference_link})"
|
||||||
|
return f"{file_line}: {content}" if content.strip() else file_line
|
||||||
|
|
||||||
if gfm_supported:
|
if gfm_supported:
|
||||||
markdown_text += f"<tr><td>"
|
markdown_text += f"<tr><td>"
|
||||||
if is_value_no(value):
|
if is_value_no(value):
|
||||||
@ -220,20 +240,10 @@ def convert_to_markdown_v2(output_data: dict,
|
|||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
markdown_text += "<ul>\n"
|
markdown_text += "<ul>\n"
|
||||||
for todo_item in value:
|
for todo_item in value:
|
||||||
relevant_file = todo_item.get('relevant_file', '').strip()
|
markdown_text += f"<li>{format_todo_item(todo_item)}</li>\n"
|
||||||
line_number = todo_item.get('line_number', '')
|
|
||||||
content = todo_item.get('content', '')
|
|
||||||
reference_link = None
|
|
||||||
if git_provider and relevant_file and line_number:
|
|
||||||
reference_link = git_provider.get_line_link(relevant_file, line_number, line_number)
|
|
||||||
file_line = f"{relevant_file} [{line_number}]"
|
|
||||||
if reference_link:
|
|
||||||
file_line = f"<a href='{reference_link}'>{file_line}</a>"
|
|
||||||
if content.strip():
|
|
||||||
markdown_text += f"<li>{file_line}: {content}</li>\n"
|
|
||||||
else:
|
|
||||||
markdown_text += f"<li>{file_line}</li>\n"
|
|
||||||
markdown_text += "</ul>\n"
|
markdown_text += "</ul>\n"
|
||||||
|
else:
|
||||||
|
markdown_text += f"<p>{format_todo_item(value)}</p>\n"
|
||||||
markdown_text += f"</td></tr>\n"
|
markdown_text += f"</td></tr>\n"
|
||||||
else:
|
else:
|
||||||
if is_value_no(value):
|
if is_value_no(value):
|
||||||
@ -242,18 +252,9 @@ def convert_to_markdown_v2(output_data: dict,
|
|||||||
markdown_text += f"### {emoji} ToDo sections\n\n"
|
markdown_text += f"### {emoji} ToDo sections\n\n"
|
||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
for todo_item in value:
|
for todo_item in value:
|
||||||
relevant_file = todo_item.get('relevant_file', '').strip()
|
markdown_text += f"- {format_todo_item(todo_item)}\n"
|
||||||
line_number = todo_item.get('line_number', '')
|
else:
|
||||||
content = todo_item.get('content', '')
|
markdown_text += f"- {format_todo_item(value)}\n"
|
||||||
if git_provider and relevant_file and line_number:
|
|
||||||
reference_link = git_provider.get_line_link(relevant_file, line_number, line_number)
|
|
||||||
file_line = f"[{relevant_file} [{line_number}]]({reference_link})"
|
|
||||||
else:
|
|
||||||
file_line = f"{relevant_file} [{line_number}]"
|
|
||||||
if content.strip():
|
|
||||||
markdown_text += f"- {file_line}: {content}\n"
|
|
||||||
else:
|
|
||||||
markdown_text += f"- {file_line}\n"
|
|
||||||
elif 'can be split' in key_nice.lower():
|
elif 'can be split' in key_nice.lower():
|
||||||
if gfm_supported:
|
if gfm_supported:
|
||||||
markdown_text += f"<tr><td>"
|
markdown_text += f"<tr><td>"
|
||||||
|
@ -75,7 +75,7 @@ class KeyIssuesComponentLink(BaseModel):
|
|||||||
class TodoSection(BaseModel):
|
class TodoSection(BaseModel):
|
||||||
relevant_file: str = Field(description="The file containing the TODO comment")
|
relevant_file: str = Field(description="The file containing the TODO comment")
|
||||||
line_number: int = Field(description="The line number of the TODO comment")
|
line_number: int = Field(description="The line number of the TODO comment")
|
||||||
content: str = Field(description="The content of the TODO comment. Only include items that are actual TODO comments inside code comments (e.g., lines starting with #, //, /*, <!--, etc). Remove any leading 'TODO' or similar prefix from the content, but do include lines like '# TODO' even if they result in empty content after prefix removal. Do not include TODOs that are not in comments or not prefixed appropriately.")
|
content: str = Field(description="The content of the TODO comment. Only include actual TODO comments within code comments (e.g., lines starting with '#', '//', '/*', '<!--'). Remove leading 'TODO' prefixes. Include lines like '# TODO', even if empty after prefix removal. Exclude TODOs outside comments or without appropriate prefixes.")
|
||||||
|
|
||||||
{%- if related_tickets %}
|
{%- if related_tickets %}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user