feat: Phase 5 — 审查备注编辑器与 PDF 导出

This commit is contained in:
2026-06-19 22:10:13 +08:00
parent 1cfab2d2d1
commit b35d6f874b
10 changed files with 914 additions and 15 deletions
+32
View File
@@ -8,6 +8,7 @@
<script src="/static/js/sse.js"></script>
<script src="/static/js/diff-viewer.js"></script>
<script src="/static/js/review-inline.js"></script>
<script src="/static/js/note-editor.js"></script>
</head>
<body class="bg-gray-50 min-h-screen">
{{template "nav" .}}
@@ -58,6 +59,27 @@
<div id="summary-content" class="text-gray-700 prose text-sm"></div>
</div>
<!-- Overall Note Editor -->
<div id="overall-note-section" class="bg-white rounded-lg shadow-md p-6 mb-6">
<h2 class="text-lg font-semibold text-gray-900 mb-3">📝 整体备注</h2>
<div class="note-editor" data-note-key="overall:" data-scope="overall" data-scope-key="">
<div class="flex items-center justify-between mb-1">
<span class="text-xs text-gray-400">💬 备注 (Markdown)</span>
<span class="note-save-indicator text-xs"></span>
</div>
<textarea class="note-textarea" placeholder="添加整体备注..." rows="2"
oninput="NoteEditor.onInput(this, 'overall', '')"></textarea>
</div>
</div>
<!-- Actions Bar -->
<div id="review-actions" class="flex items-center gap-3 mb-6 hidden">
<button onclick="NoteEditor.exportPDF()" id="btn-export-pdf"
class="px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 text-sm">
📄 导出 PDF 报告
</button>
</div>
<!-- Inline Diff + Suggestions View -->
<div id="diff-review-container" class="mb-6">
<div class="flex items-center justify-between mb-3">
@@ -84,6 +106,7 @@
let diffVisible = true;
let allSuggestions = [];
let fileReviews = {};
let currentAnalysisId = null;
// Load refs on page load
async function loadRefs() {
@@ -148,8 +171,10 @@
// Reset state
allSuggestions = [];
fileReviews = {};
currentAnalysisId = null;
document.getElementById('summary-content').innerHTML = '';
document.getElementById('file-reviews').innerHTML = '';
document.getElementById('review-actions').classList.add('hidden');
// Progress tracking
let totalFiles = 0;
@@ -214,6 +239,7 @@
setTimeout(() => {
progress.classList.add('hidden');
results.classList.remove('hidden');
document.getElementById('review-actions').classList.remove('hidden');
btn.disabled = false;
btn.textContent = '开始审查';
}, 500);
@@ -225,6 +251,12 @@
currentSSE = null;
},
analysis_saved(data) {
currentAnalysisId = data.analysis_id;
// Initialize note editor with the analysis ID
NoteEditor.init(repoId, currentAnalysisId);
NoteEditor.loadNotes();
},
error(data) {
alert('审查失败: ' + (data.message || '未知错误'));
progress.classList.add('hidden');