integrate question table generate function

This commit is contained in:
kuangji
2026-05-26 17:16:30 +08:00
parent 77b2d6a27d
commit 92a9077f3c
5 changed files with 45 additions and 3 deletions

View File

@@ -24,6 +24,7 @@ from app.analyzer import (
from app.config import load_api_config
from app.docx_parser import parse_docx
from app.report_generator import generate_docx_report, generate_markdown_report
from app.review_filler import fill_review_docx_from_analysis
from app.skill_loader import load_skill_catalog
@@ -33,6 +34,7 @@ OUTPUT_DIR = ROOT_DIR / "outputs"
SKILL_ROOT = ROOT_DIR / "skills"
DEFAULT_SKILL_COLLECTION = "GJB438C-2021_prd_skills"
CONFIG_PATH = ROOT_DIR / "configs" / "api_config.yaml"
REVIEW_DOCX_TEMPLATE = ROOT_DIR / "test" / "附录A文档审查.docx"
MAX_UPLOAD_BYTES = 30 * 1024 * 1024
MAX_SKILL_ARCHIVE_BYTES = 50 * 1024 * 1024
ProgressCallback = Callable[[int, str], None]
@@ -263,14 +265,21 @@ def analyze_saved_docx(
progress(85, "正在生成 Markdown 分析文档")
markdown_path = generate_markdown_report(report, OUTPUT_DIR)
progress(92, "正在生成 DOCX 文档审查单")
review_docx_path = markdown_path.with_name(f"{markdown_path.stem}_review.docx")
fill_review_docx_from_analysis(markdown_path, REVIEW_DOCX_TEMPLATE, review_docx_path)
progress(100, "分析完成")
return {
"source_filename": parsed.filename,
"summary": report.summary,
"matched_skills": report.matched_skills,
"downloads": {"markdown": f"/download/{markdown_path.name}"},
"downloads": {
"markdown": f"/download/{markdown_path.name}",
"review_docx": f"/download/{review_docx_path.name}",
},
"markdown_filename": markdown_path.name,
"review_docx_filename": review_docx_path.name,
}

View File

@@ -5,6 +5,7 @@ const skillUploadStatus = document.querySelector("#skill-upload-status");
const result = document.querySelector("#result");
const summary = document.querySelector("#summary");
const skills = document.querySelector("#skills");
const reviewDocxLink = document.querySelector("#download-review-docx");
const mdLink = document.querySelector("#download-md");
const progressBar = document.querySelector("#analysis-progress");
const statusText = document.querySelector("#analysis-status");
@@ -120,6 +121,7 @@ form.addEventListener("submit", async (event) => {
item.textContent = name;
skills.appendChild(item);
});
reviewDocxLink.href = task.downloads.review_docx;
mdLink.href = task.downloads.markdown;
} catch (error) {
summary.textContent = error.message;

View File

@@ -97,7 +97,7 @@
<p id="summary"></p>
<div id="skills" class="skills"></div>
<div class="downloads">
<!-- <a id="download-docx" href="#">下载 DOCX 报告</a> -->
<a id="download-review-docx" href="#">下载 DOCX 审查单</a>
<a id="download-md" href="#">下载 Markdown 报告</a>
</div>
</section>