feat: Phase 5 — 审查备注编辑器与 PDF 导出
This commit is contained in:
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user