技术交付架构师
一 电子 桌面应用程序,以每天的时间线显示您最近的Microsoft Teams会议,并允许您阅读完整的逐字记录——所有这些都由 工作智商 通过MCP协议。 不需要Azure应用程序注册、客户端机密或Graph API权限。
______________________________________________________________________
特性
- 零应用注册 --身份验证由Azure CLI+Work IQ内部处理
- Entra ID登录 --通过以下方式使用您的工作/学校Microsoft帐户
az login - 时间线侧栏 (右图)--按小时时段按天分组的会议,最新会议排在第一位
- 完整成绩单查看器 (左面板)——从工作智商反应中解析出的说话者标记的对话块
- AI会议见解 --通过Work IQ总结和行动项端点
- 通用问答终点 --向Work IQ询问有关数据的任何自然语言问题
- 流畅的用户界面 --简洁的微软设计语言,可拖动的标题栏,响应式布局
- 强大的日期解析 --处理ISO 8601、AM/PM格式、unicode en破折号等
先决条件
在开始之前,请确保已安装以下内容:
| 需求 | 版本 | 如何检查 | 安装链接 |
|---|---|---|---|
| Node.js | 18岁或以后 | node --version | |
| Azure命令行界面 | 2.x | az --version | 安装Azure命令行界面 |
| Work IQ命令行界面 | 最新 | workiq --version | npm install -g workiq |
| Git | 任何 | git --version | git-scm.com |
您还需要:
- A. Microsoft 365工作/学校帐户 (输入 ID / Azure AD)
- 团队会议 转录已启用 (因此存在可供提取的成绩单)
安装
1.克隆存储库
git clone https://github.com/jrubiosainz/demo-prep-assistant.git
cd demo-prep-assistant2.安装依赖项
npm install这将安装Electron、Express和dotenv——所有依赖项都列在 package.json.
3.登录Azure CLI
Work IQ使用Azure CLI会话进行身份验证。登录一次:
az login --allow-no-subscriptions浏览器窗口将打开。使用您的账号登录 Microsoft 365工作/学校帐户。一旦通过身份验证,终端将确认您的帐户。
4.全局安装Work IQ(如果尚未安装)
npm install -g workiq验证它是否可访问:
workiq --version5.(可选)创建 .env 文件
不 .env 默认情况下,文件是必需的。如果要自定义Express服务器端口:
cp .env.example .env编辑 .env 并设置 PORT=3000 (或您喜欢的任何端口)。Electron应用程序忽略了这一点,并自动选择一个随机端口。
运行应用程序
npm start这将启动Electron桌面窗口。该应用程序将:
- 在随机端口上启动内部Express服务器
- 检查您的Azure CLI会话(
az account show) - 显示登录屏幕--单击 “使用Microsoft登录” 跑
az login如有需要 - 通过身份验证后,将您最近的Teams会议加载到时间线侧栏中
- 单击任何会议→ 其完整记录显示在左侧面板中
开发模式
npm run dev同 npm start 但通过 --dev 标记为Electron进行调试。
运作原理
┌─────────────────────────────────────────────────────────────┐
│ Electron Main Process │
│ main.js — creates BrowserWindow, starts Express, IPC │
├─────────────┬───────────────────────────────────────────────┤
│ preload.js │ contextBridge: getAuthStatus, login, logout │
├─────────────┴───────────────────────────────────────────────┤
│ Express API Server │
│ server.js — routes + static files on random port │
├─────────────────────────────────────────────────────────────┤
│ auth/msalConfig.js │ Azure CLI session management │
│ lib/workiq.js │ MCP JSON-RPC ↔ workiq mcp │
│ routes/meetings.js │ /api/meetings, /transcript, etc. │
├─────────────────────────────────────────────────────────────┤
│ Work IQ MCP Protocol │
│ Spawns `workiq mcp` → JSON-RPC initialize → tools/list │
│ → tools/call (workiq_ask) → natural language answer │
│ Auth handled internally by Work IQ (Entra ID / Azure CLI) │
└─────────────────────────────────────────────────────────────┘数据流
npm start→ 电子靴→ 在端口0上启动Express(随机)→ 打开浏览器窗口- 应用程序检查是否
az account show返回有效用户。如果没有,则显示登录覆盖。 - 加载会议 →
GET /api/meetings→ 生成workiq mcp子进程→ 发送一个JSON-RPC查询,以标记表的形式询问团队会议的最后7天 - 前端 解析markdown表 (主题、开始/结束日期、组织者)并呈现 每日时间表 每小时有时段
- 单击会议 →
GET /api/meetings/transcript?subject=...&date=...→ Work IQ获取完整的逐字记录(长时间会议超时10分钟) - 前端解析扬声器线路(
> Speaker: text或Speaker: text)并将其呈现为带有说话者标签的对话块
API终点
| 方法 | 路径 | 描述 |
|---|---|---|
GET | /api/me | 检查身份验证状态(返回 { authenticated, name }) |
GET | /api/meetings | 通过Work IQ获取最近团队会议(过去7天) |
GET | /api/meetings/transcript?subject=...&date=... | 获取特定会议的完整逐字记录 |
GET | /api/meetings/insights?subject=...&date=... | 获取会议的AI摘要+行动项 |
POST | /api/ask | 向Work IQ发送任何问题({ "question": "..." }) |
GET | /auth/logout | 注销(清除Azure CLI会话) |
项目结构
demo-prep-assistant/
├── main.js # Electron main process — window + IPC
├── preload.js # Secure bridge (contextBridge) for renderer
├── server.js # Express API server (started by Electron)
├── auth/
│ └── msalConfig.js # Azure CLI auth: login, logout, status
├── lib/
│ └── workiq.js # Work IQ MCP JSON-RPC client
├── routes/
│ ├── auth.js # Legacy auth status/logout routes
│ └── meetings.js # Meeting list, transcript, insights, ask
├── public/
│ ├── index.html # App shell — split layout + login overlay
│ ├── css/
│ │ └── styles.css # Fluent-inspired responsive styles
│ └── js/
│ └── app.js # Frontend: timeline, transcript parser, UI
├── .env.example # Optional config template
├── .gitignore # Excludes node_modules/ and .env
├── package.json # Dependencies: electron, express, dotenv
└── README.md # This file故障排除
“未通过身份验证”错误
请确保您已登录到Azure CLI:
az account show如果未登录,请运行 az login --allow-no-subscriptions.
会议显示为“其他”,没有时间段
Work IQ有时会以意外的格式(unicode连字符、不同的日期布局)返回日期。该应用程序具有强大的日期解析功能,但如果解析失败,会议将以平面列表的形式出现在“其他”部分。它们仍然可以点击。
成绩单为空或已截断
- Work IQ有内部内容政策,可能会限制长时间会议的成绩单输出。
- 该应用程序对成绩单查询使用10分钟的超时。如果会议很长,查询可能仍然会超时。
- 试着再次询问成绩单——不同跑步者的工作智商反应可能有所不同。
workiq 命令未找到
确保Work IQ在全球范围内安装:
npm install -g workiq
workiq --version在Windows上,应用程序会查找 workiq.cmd 在 %APPDATA%\npm\.
电子窗打不开
杀死所有挥之不去的Electron进程,然后重试:
# Windows
Get-Process -Name "electron*" | Stop-Process -Force
# macOS / Linux
pkill -f electron然后运行 npm start 再一次。
许可证
私人项目——未获得重新分发许可。
