Toggle navigation
Toggle navigation
This project
Loading...
Sign in
万朱浩
/
Venue-Ops
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
马一丁
2025-12-15 20:06:11 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ca9784241674767b45e702a1470a974ac8224e93
ca978424
1 parent
dbd1bdc4
Update the process when only Report Engine is running
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
85 additions
and
4 deletions
report_engine_only.py
report_engine_only.py
View file @
ca97842
...
...
@@ -7,7 +7,7 @@ Report Engine 命令行版本
1. 检查PDF依赖
2. 获取最新的log、md文件
3. 直接调用Report Engine生成报告(跳过文件增加审核)
4. 自动保存HTML
和PDF(如果有依赖)到final_reports/
4. 自动保存HTML
、PDF(如果有依赖)和Markdown到final_reports/(Markdown 会在 PDF 之后生成)
使用方法:
python report_engine_only.py [选项]
...
...
@@ -15,6 +15,7 @@ Report Engine 命令行版本
选项:
--query QUERY 指定报告主题(可选,默认从文件名提取)
--skip-pdf 跳过PDF生成(即使有依赖)
--skip-markdown 跳过Markdown生成
--verbose 显示详细日志
--help 显示帮助信息
"""
...
...
@@ -358,6 +359,52 @@ def save_pdf(document_ir_path: str, query: str) -> Optional[str]:
return
None
def
save_markdown
(
document_ir_path
:
str
,
query
:
str
)
->
Optional
[
str
]:
"""
从IR文件生成并保存Markdown
Args:
document_ir_path: Document IR文件路径
query: 报告主题
Returns:
Optional[str]: Markdown文件路径,如果失败则返回None
"""
logger
.
info
(
"
\n
正在生成 Markdown 文件..."
)
try
:
with
open
(
document_ir_path
,
'r'
,
encoding
=
'utf-8'
)
as
f
:
document_ir
=
json
.
load
(
f
)
from
ReportEngine.renderers
import
MarkdownRenderer
renderer
=
MarkdownRenderer
()
markdown_content
=
renderer
.
render
(
document_ir
)
timestamp
=
datetime
.
now
()
.
strftime
(
"
%
Y
%
m
%
d_
%
H
%
M
%
S"
)
query_safe
=
""
.
join
(
c
for
c
in
query
if
c
.
isalnum
()
or
c
in
(
" "
,
"-"
,
"_"
)
)
.
rstrip
()
query_safe
=
query_safe
.
replace
(
" "
,
"_"
)[:
30
]
or
"report"
md_dir
=
Path
(
"final_reports"
)
/
"md"
md_dir
.
mkdir
(
parents
=
True
,
exist_ok
=
True
)
md_filename
=
f
"final_report_{query_safe}_{timestamp}.md"
md_path
=
md_dir
/
md_filename
md_path
.
write_text
(
markdown_content
,
encoding
=
'utf-8'
)
file_size_kb
=
md_path
.
stat
()
.
st_size
/
1024
logger
.
success
(
f
"✓ Markdown 已保存: {md_path}"
)
logger
.
info
(
f
" 文件大小: {file_size_kb:.1f} KB"
)
return
str
(
md_path
)
except
Exception
as
e
:
logger
.
exception
(
f
"❌ Markdown 生成失败: {e}"
)
return
None
def
parse_arguments
():
"""解析命令行参数"""
parser
=
argparse
.
ArgumentParser
(
...
...
@@ -371,7 +418,7 @@ def parse_arguments():
注意:
程序会自动获取三个引擎目录中的最新报告文件,
不进行文件增加审核,直接生成综合报告。
不进行文件增加审核,直接生成综合报告
,并默认在PDF之后生成Markdown
。
"""
)
...
...
@@ -389,6 +436,12 @@ def parse_arguments():
)
parser
.
add_argument
(
'--skip-markdown'
,
action
=
'store_true'
,
help
=
'跳过Markdown生成'
)
parser
.
add_argument
(
'--verbose'
,
action
=
'store_true'
,
help
=
'显示详细日志信息'
...
...
@@ -413,12 +466,16 @@ def main():
# 步骤 1: 检查依赖
pdf_available
,
_
=
check_dependencies
()
markdown_enabled
=
not
args
.
skip_markdown
# 如果用户指定跳过PDF,则禁用PDF生成
if
args
.
skip_pdf
:
logger
.
info
(
"用户指定 --skip-pdf,将跳过 PDF 生成"
)
pdf_available
=
False
if
not
markdown_enabled
:
logger
.
info
(
"用户指定 --skip-markdown,将跳过 Markdown 生成"
)
# 步骤 2: 获取最新文件
latest_files
=
get_latest_engine_reports
()
...
...
@@ -448,12 +505,15 @@ def main():
# HTML 已经在 generate_report 中自动保存
html_path
=
result
.
get
(
'report_filepath'
,
''
)
ir_path
=
result
.
get
(
'ir_filepath'
,
''
)
pdf_path
=
None
markdown_path
=
None
if
html_path
:
logger
.
success
(
f
"✓ HTML 已保存: {result.get('report_relative_path', html_path)}"
)
# 如果有PDF依赖,生成并保存PDF
if
pdf_available
:
ir_path
=
result
.
get
(
'ir_filepath'
,
''
)
if
ir_path
and
os
.
path
.
exists
(
ir_path
):
pdf_path
=
save_pdf
(
ir_path
,
query
)
else
:
...
...
@@ -461,6 +521,15 @@ def main():
else
:
logger
.
info
(
"⚠ 跳过 PDF 生成(缺少系统依赖或用户指定跳过)"
)
# 生成并保存Markdown(在PDF之后)
if
markdown_enabled
:
if
ir_path
and
os
.
path
.
exists
(
ir_path
):
markdown_path
=
save_markdown
(
ir_path
,
query
)
else
:
logger
.
warning
(
"⚠ 未找到 IR 文件,无法生成 Markdown"
)
else
:
logger
.
info
(
"⚠ 跳过 Markdown 生成(用户指定)"
)
# 总结
logger
.
info
(
"
\n
"
+
"="
*
70
)
logger
.
success
(
"✓ 报告生成完成!"
)
...
...
@@ -468,7 +537,19 @@ def main():
logger
.
info
(
f
"报告 ID: {result.get('report_id', 'N/A')}"
)
logger
.
info
(
f
"HTML 文件: {result.get('report_relative_path', 'N/A')}"
)
if
pdf_available
:
logger
.
info
(
f
"PDF 文件: final_reports/pdf/ 目录下"
)
if
pdf_path
:
logger
.
info
(
f
"PDF 文件: {os.path.relpath(pdf_path, os.getcwd())}"
)
else
:
logger
.
info
(
"PDF 文件: 生成失败,请检查日志"
)
else
:
logger
.
info
(
"PDF 文件: 已跳过"
)
if
markdown_enabled
:
if
markdown_path
:
logger
.
info
(
f
"Markdown 文件: {os.path.relpath(markdown_path, os.getcwd())}"
)
else
:
logger
.
info
(
"Markdown 文件: 生成失败,请检查日志"
)
else
:
logger
.
info
(
"Markdown 文件: 已跳过"
)
logger
.
info
(
"="
*
70
)
logger
.
info
(
"
\n
程序结束"
)
...
...
Please
register
or
login
to post a comment