index.html 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta name="referrer" content="no-referrer">
  7. <title>Pipeline Dashboard</title>
  8. <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
  9. <link rel="stylesheet" href="/static/style.css">
  10. </head>
  11. <body>
  12. <div class="app-container">
  13. <!-- Sidebar -->
  14. <aside class="sidebar glass-panel">
  15. <div class="sidebar-header">
  16. <h2>⚡ Pipeline Tasks</h2>
  17. <div class="stats" id="stats-container">
  18. <!-- Stats injected via JS -->
  19. </div>
  20. </div>
  21. <div class="search-box" style="display: flex; gap: 8px;">
  22. <input type="text" id="search-input" placeholder="Search requirements..." style="flex: 1;">
  23. <button class="btn btn-secondary btn-small" id="btn-open-prompts" title="Edit Prompts" style="padding: 0 10px;">⚙️</button>
  24. </div>
  25. <div class="task-list" id="task-list">
  26. <!-- Task items injected via JS -->
  27. <div class="loading">Loading tasks...</div>
  28. </div>
  29. </aside>
  30. <!-- Main Content -->
  31. <main class="main-content glass-panel" id="main-content">
  32. <div class="empty-state" id="empty-state">
  33. <div class="icon">✨</div>
  34. <h2>Select a requirement to view details</h2>
  35. <p>Monitor pipeline execution and view generated data</p>
  36. </div>
  37. <div class="detail-view hidden" id="detail-view">
  38. <div class="detail-header">
  39. <div class="title-section">
  40. <span class="badge" id="detail-id">001</span>
  41. <h1 id="detail-title">Requirement Title</h1>
  42. </div>
  43. <div class="actions">
  44. <button class="btn btn-primary" id="btn-open-run-modal">🚀 Run Pipeline</button>
  45. </div>
  46. </div>
  47. <div class="status-banner hidden" id="status-banner">
  48. <div class="status-indicator"></div>
  49. <span id="status-text">Running...</span>
  50. <button class="btn btn-small" id="btn-view-logs">View Logs</button>
  51. </div>
  52. <div class="memo-container" id="memo-container">
  53. <div class="memo-header">
  54. <div class="memo-title">📝 Requirement Notes</div>
  55. <div style="display:flex; align-items:center; gap:10px;">
  56. <span class="save-status" id="memo-status"></span>
  57. <button class="btn btn-small btn-primary" id="btn-save-memo" style="padding: 4px 12px; min-width: 60px">Save</button>
  58. </div>
  59. </div>
  60. <textarea class="memo-textarea" id="memo-textarea" placeholder="Add notes, context, or issues for this requirement here..."></textarea>
  61. </div>
  62. <div class="data-tabs">
  63. <button class="tab-btn active" data-target="tab-strategy">Strategy</button>
  64. <button class="tab-btn" data-target="tab-blueprint">Blueprint</button>
  65. <button class="tab-btn" data-target="tab-caps">Capabilities</button>
  66. <button class="tab-btn" data-target="tab-raw">Raw Cases</button>
  67. </div>
  68. <div class="tab-content-container">
  69. <div class="tab-content active" id="tab-strategy">
  70. <div class="content-viewer" id="json-strategy">Loading...</div>
  71. </div>
  72. <div class="tab-content" id="tab-blueprint">
  73. <div class="content-viewer" id="json-blueprint">Loading...</div>
  74. </div>
  75. <div class="tab-content" id="tab-caps">
  76. <div class="content-viewer" id="json-caps">Loading...</div>
  77. </div>
  78. <div class="tab-content" id="tab-raw">
  79. <div class="content-viewer" id="json-raw">Loading...</div>
  80. </div>
  81. </div>
  82. </div>
  83. </main>
  84. </div>
  85. <!-- Run Modal -->
  86. <div class="modal-overlay hidden" id="run-modal">
  87. <div class="modal glass-panel">
  88. <div class="modal-header">
  89. <h3>Configure Pipeline Run</h3>
  90. <button class="close-btn" id="btn-close-modal">×</button>
  91. </div>
  92. <div class="modal-body">
  93. <div class="form-group">
  94. <label>Restart From</label>
  95. <select id="select-force-phase" class="glass-input" style="background-color: #1e293b; color: white; margin-top: 5px;">
  96. <option value="smart">Smart Resume (Continue where left off)</option>
  97. <option value="phase1_platforms">Phase 1: Regenerate Specific Platforms (Deletes chosen cases + Phase 2/3)</option>
  98. <option value="phase2_blueprint">Phase 2: Regenerate Blueprint Only (Deletes Blueprint + Strategy)</option>
  99. <option value="phase2_capabilities">Phase 2: Extract Capabilities Only (Deletes Caps + Strategy)</option>
  100. <option value="phase2_all">Phase 2: Entire Phase 2 (Deletes Blueprint + Caps + Strategy)</option>
  101. <option value="phase3">Phase 3: Strategy (Deletes Strategy only)</option>
  102. </select>
  103. </div>
  104. <div class="form-group" id="group-platforms">
  105. <label>Platforms (comma separated)</label>
  106. <input type="text" id="input-platforms" value="xhs,youtube,bili,x" class="glass-input">
  107. </div>
  108. <div class="form-group checkbox" style="margin-top: 15px;">
  109. <input type="checkbox" id="check-claude-sdk">
  110. <label for="check-claude-sdk">Use Anthropic SDK Core</label>
  111. </div>
  112. </div>
  113. <div class="modal-footer">
  114. <button class="btn btn-secondary" id="btn-cancel-run">Cancel</button>
  115. <button class="btn btn-primary" id="btn-confirm-run">Execute</button>
  116. </div>
  117. </div>
  118. </div>
  119. <!-- Logs Modal -->
  120. <div class="modal-overlay hidden" id="logs-modal">
  121. <div class="modal large glass-panel">
  122. <div class="modal-header">
  123. <h3>Execution Logs</h3>
  124. <button class="close-btn" id="btn-close-logs">×</button>
  125. </div>
  126. <div class="modal-body">
  127. <pre class="terminal" id="terminal-logs">Waiting for logs...</pre>
  128. </div>
  129. </div>
  130. </div>
  131. <!-- Prompts Modal -->
  132. <div class="modal-overlay hidden" id="prompts-modal">
  133. <div class="modal large glass-panel" style="max-width: 90vw; height: 90vh; display: flex; flex-direction: column;">
  134. <div class="modal-header">
  135. <h3>⚙️ Prompts Editor</h3>
  136. <div style="display:flex; align-items:center; gap:10px;">
  137. <span class="save-status" id="prompt-save-status"></span>
  138. <button class="btn btn-primary btn-small" id="btn-save-prompt">Save Changes</button>
  139. <button class="close-btn" id="btn-close-prompts">×</button>
  140. </div>
  141. </div>
  142. <div class="modal-body" style="flex: 1; display: flex; gap: 1rem; overflow: hidden; padding: 1rem;">
  143. <div class="prompt-sidebar" style="width: 250px; border-right: 1px solid rgba(255,255,255,0.1); padding-right: 1rem; overflow-y: auto;">
  144. <h4 style="margin-top:0; margin-bottom:1rem; color:var(--text-muted)">Available Prompts</h4>
  145. <div id="prompt-list" style="display:flex; flex-direction:column; gap:0.5rem;">
  146. <!-- Prompt tabs injected via JS -->
  147. </div>
  148. </div>
  149. <div class="prompt-editor" style="flex: 1; display: flex; flex-direction: column;">
  150. <textarea id="prompt-textarea" style="width:100%; height:100%; background:rgba(15,23,42,0.8); color:var(--text-main); font-family:monospace; padding:1rem; border:1px solid rgba(255,255,255,0.1); border-radius:6px; resize:none; font-size:14px;" placeholder="Select a prompt to edit..."></textarea>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. <script src="/static/app.js"></script>
  156. </body>
  157. </html>