index.html 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <!doctype html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>市民请集合智能助手 Web 测试版</title>
  7. <link rel="stylesheet" href="/styles.css?v=wabi-sabi-2" />
  8. </head>
  9. <body>
  10. <div class="paper-grain"></div>
  11. <header class="top-nav">
  12. <div class="brand">
  13. <img src="/assets/logo.png" alt="" />
  14. <div>
  15. <strong>市民请集合</strong>
  16. <span>Python LangGraph Agent</span>
  17. </div>
  18. </div>
  19. <nav class="nav">
  20. <button class="nav-item active" type="button">对话</button>
  21. <button class="nav-item" type="button" data-scroll-tools>工具</button>
  22. <button class="nav-item" type="button" data-scroll-trace>轨迹</button>
  23. </nav>
  24. <div class="session-card">
  25. <span class="status-dot" id="statusDot"></span>
  26. <div>
  27. <strong id="sessionStatus">检查中</strong>
  28. <span id="mcpStatus">MCP 连接检测中</span>
  29. </div>
  30. </div>
  31. </header>
  32. <main class="shell">
  33. <section class="hero">
  34. <div class="hero-copy">
  35. <span class="eyebrow">静默业务智能体</span>
  36. <h1>市民请集合智能助手</h1>
  37. <p>以 Python + LangGraph 编排后台业务 Agent。通过 MCP 调用 DeepSeek、只读数据库和 smqjh 业务工具,把管理员的问题整理成结论、依据与表格。</p>
  38. <div class="hero-actions">
  39. <button id="refreshBtn" class="chrome-button" type="button" title="刷新状态">刷新状态</button>
  40. <span class="system-pill">MCP · 只读数据库 · DeepSeek</span>
  41. </div>
  42. </div>
  43. <div class="hero-panel" aria-hidden="true">
  44. <div class="seal-mark">
  45. <img src="/assets/logo.png" alt="" />
  46. </div>
  47. <div class="brush-line"></div>
  48. <div class="mini-display">
  49. <span>运行中</span>
  50. <strong>可用</strong>
  51. </div>
  52. </div>
  53. </section>
  54. <section class="feature-strip" aria-label="Agent capabilities">
  55. <article class="feature-card">
  56. <strong>智能查询</strong>
  57. <p>商品、订单、会员、物流与经营数据自动判断工具。</p>
  58. </article>
  59. <article class="feature-card">
  60. <strong>只读安全</strong>
  61. <p>数据库查询走 MCP 白名单和 SELECT 校验。</p>
  62. </article>
  63. <article class="feature-card">
  64. <strong>表格输出</strong>
  65. <p>结构化 rows/columns 直接渲染,可下载 CSV。</p>
  66. </article>
  67. <article class="feature-card">
  68. <strong>月结扩展</strong>
  69. <p>企业月结、核对、人工确认流程继续接入。</p>
  70. </article>
  71. </section>
  72. <section class="workspace">
  73. <section class="chat-card retro-window">
  74. <div class="window-bar">
  75. <span></span>
  76. <strong>业务对话室</strong>
  77. </div>
  78. <div id="messages" class="messages"></div>
  79. <form id="chatForm" class="composer">
  80. <textarea
  81. id="messageInput"
  82. rows="3"
  83. placeholder="输入管理员想完成的操作,例如:当前百事可乐 500ml 的商品描述是什么,或生成铜仁移动 2026-05 月结报告"
  84. ></textarea>
  85. <div class="composer-footer">
  86. <span id="inputCount">0 字</span>
  87. <button id="sendBtn" class="send-button" type="submit">
  88. <span class="send-icon">↗</span>
  89. <span class="send-text">发送</span>
  90. </button>
  91. </div>
  92. </form>
  93. </section>
  94. <aside class="inspector">
  95. <section class="panel player-panel">
  96. <div class="panel-title">
  97. <h2>执行上下文</h2>
  98. </div>
  99. <div class="player-screen">
  100. <span>Runtime</span>
  101. <strong>Python + LangGraph</strong>
  102. </div>
  103. <dl class="kv">
  104. <div><dt>运行模式</dt><dd>Web 测试</dd></div>
  105. <div><dt>框架</dt><dd>Python + LangGraph</dd></div>
  106. <div><dt>MCP</dt><dd id="mcpEndpoint">-</dd></div>
  107. <div><dt>工具</dt><dd id="toolCount">-</dd></div>
  108. </dl>
  109. </section>
  110. <section class="panel" id="toolsPanel">
  111. <div class="panel-title">
  112. <h2>可用工具</h2>
  113. </div>
  114. <div id="toolList" class="tool-list"></div>
  115. </section>
  116. <section class="panel" id="tracePanel">
  117. <div class="panel-title">
  118. <h2>执行轨迹</h2>
  119. </div>
  120. <div id="traceList" class="trace-list"></div>
  121. </section>
  122. </aside>
  123. </section>
  124. </main>
  125. <script src="/app.js" type="module"></script>
  126. </body>
  127. </html>