juank115/Ticket-Intelligence-Assistant
GitHub: juank115/Ticket-Intelligence-Assistant
面向 L2 支持工程师的 AI 驱动工单分析工具,将原始支持工单自动转化为结构化摘要、根因分析、相似历史事件和可发送的首次回复。
Stars: 0 | Forks: 0
# 工单智能助手
面向 L2 支持工程师的 AI 驱动工单分析工具。粘贴原始支持工单,即可立即获得通俗易懂的英文摘要、根本原因分析、相似的历史事件以及可直接发送的首次回复。
## 设置(< 2 分钟)
```
# 1. Clone 和安装
git clone https://github.com/juank115/Ticket-Intelligence-Assistant.git
cd ticket-intel-assistant
npm install
# 2. 配置 API key
cp .env.example .env
# Edit .env → ANTHROPIC_API_KEY=sk-ant-your-key-here
# 3. Run (启动 Vite + CORS proxy)
npm run dev:all
# → http://localhost:5173
```
**备选方案:** 在两个终端中分别运行 Vite 和代理:
```
npm run dev # Terminal 1 — Vite on :5173
npm run proxy # Terminal 2 — CORS proxy on :3001
```
## API 密钥
两种选项:
1. **`.env` 文件**(推荐):在 `.env` 文件中设置 `ANTHROPIC_API_KEY=sk-ant-...`。代理服务器会自动读取此配置。
2. **UI 设置**:点击页眉中的 ⚙️ API Key 并粘贴您的密钥。密钥将存储在 `localStorage` 中。
## 架构
```
Browser (React + Vite)
│
├── Ticket Input → Weighted Token Scoring (local, ~0ms)
│ → Similar Incidents panel
│
└── POST /api/claude → Vite Dev Proxy → Express CORS Proxy (:3001)
→ Anthropic API (streaming)
← SSE stream piped back
← Parsed XML → Summary, Root Causes, First Response
```
### 为什么需要 CORS 代理?
Anthropic API 不允许直接的浏览器请求(未设置 CORS 头)。`server/proxy.js` 中的 Express 代理大约只有 20 行代码,并且没有任何业务逻辑——它只负责转发请求并将流式响应透传回去。
## 检索策略
**算法:** 加权 Token 评分(TF×IDF 结合字段权重)
1. 对工单文本进行分词(转小写、去除标点、移除停用词)
2. 计算查询中每个 token 的 TF(词频)
3. 计算包含 40 个事件的语料库中的 IDF(逆文档频率)
4. 对每个事件进行评分:`score = Σ(TF × IDF × field_weight)`
- Tags: ×1.5(信号密度最高的字段)
- Category: ×1.2
- Title/Description: ×1.0
5. 将分数归一化到 0–1 之间,过滤掉低于 0.10 阈值的,返回前 3 个结果
### 为什么不使用 embeddings?
| 标准 | Token 评分 | Embeddings |
|-----------|--------------|------------|
| 延迟 | ~0ms | 300–500ms |
| 成本 | $0 | ~$0.002/query |
| 准确度 (40 条记录) | 足够 | 更好的语义理解 |
| **决策** | ✅ 已采用 | 未来改进方向 |
对于 40 条记录而言,embedding API 调用的延迟和成本并不划算。对于这种规模的语料库,带有字段权重的 token 评分能够产生相关的结果。
## 技术栈
- **Frontend:** React 19 + Vite 8
- **Styling:** Tailwind CSS v4
- **LLM:** Claude Sonnet 4 (`claude-sonnet-4-20250514`),通过 Anthropic API
- **CORS Proxy:** Express 5 + cors
- **Retrieval:** 自定义加权 token 评分(浏览器内运行)
## 如果有更多时间我会改进的地方
1. **语义 embeddings** — 在 Web Worker 中运行 `@xenova/transformers`,以提高检索准确度,特别是对于意译或特定领域的查询
2. **分析历史记录** — 持久化存储在 `localStorage` 中,以便工程师回顾过去的工单分析
3. **移除 CORS 代理** — 通过部署在支持服务端渲染的平台(Next.js、Remix)上来实现
4. **工单分类** — 自动检测工单类型(身份验证、性能、数据等)并预筛选知识库 (KB)
5. **多语言支持** — 检测工单语言并使用相同语言进行回复
标签:AI助手, Anthropic, CIS基准, Claude API, CORS代理, Express, GNU通用公共许可证, ITSM, IT运维, L2运维支持, NLP, Node.js, RCA, React, Server-Sent Events, Socks5代理, SSE流式传输, Syscalls, TF-IDF, Vite, 人工智能, 客户服务, 工单分析, 工单响应草稿, 工单摘要, 工单系统, 技术支持, 数据可视化, 智能客服, 根本原因分析, 用户模式Hook绕过, 相似事件检索, 网络研究, 自定义脚本