shinic1/fieldops-copilot

GitHub: shinic1/fieldops-copilot

一个将现场通讯转化为结构化事件并协调响应调度的 AI 辅助指挥中心原型,强调模型提取与确定性策略分离的安全边界。

Stars: 0 | Forks: 0

# FieldOps Copilot 一个交互式指挥中心原型,用于将现场通讯转化为 结构化、有证据支持的事件,并协调响应。 **在线演示:** [fieldops-copilot-nico.pages.dev](https://fieldops-copilot-nico.pages.dev) ![FieldOps Copilot 操作控制台](https://raw.githubusercontent.com/shinic1/fieldops-copilot/main/docs/demo.png) 这是一项基于公开信息构建的独立产品实践。它 不是官方的 Calvis 产品,也不隶属于 或受 Calvis 认可。所有人员、事件、地点和运营数据均为虚构。 ## 两分钟体验 1. 选择 **Unauthorized vehicle** 并运行 copilot。 2. 检查结构化字段及其来源证据。 3. 打开 Camera 04,核实事件,并派遣距离最近的警官。 4. 观察在警官移动时,规划路线如何避开仓库。 5. 重置,然后输入 `Need all officers in the north perimeter.` 6. 尝试 `Officer Chen needs immediate support.`,查看 Chen 如何被排除在 响应名单之外。 支持在任意位置使用文本输入。语音捕获是可选的浏览器功能。 ## 原型展示内容 - 从打字或语音报告中进行英语和西班牙语的事件提取 - 严格将证据追溯到原始通讯 - 模型之外的确定性严重性和响应策略 - 针对中等、高和关键严重性事件的自动人员调配 - 全员请求和请求者排除 - 基于每条步行路线选择最近的警官——而非名单顺序 - 基于路线的 ETA 和动画时间 - 具有障碍物感知的路径,与移动标记共享相同的几何结构 - 六个特定位置的模拟摄像头视图 - 离线排队和同步 - 实时 OpenAI 提取,具备确定性回退机制 - 用于提取和策略行为的内置产品评估套件 ## 产品和安全边界 模型仅提取明确陈述的事实。它不能设定严重性、选择 警官或决定运营策略。在标准化值被接受之前,证据引用必须是 通讯记录的精确子字符串。 ``` Typed or spoken report │ ▼ Structured fact extraction ── unavailable ──▶ deterministic fallback │ ▼ Evidence validation │ ▼ Deterministic severity + staffing policy │ ▼ Walkable-route ranking + response animation ``` 公开演示没有事件数据库。排队的离线报告仅 存储在审核者的浏览器中,并在同步或重置后删除。 OpenAI 请求使用 `store: false`。 ## 架构 - 运行在 vinext 上的兼容 Next.js 的 App Router - React 19 和严格的 TypeScript - Cloudflare Workers 运行时和 Cloudflare Pages 公共域名 - 带有严格 Structured Outputs 的 OpenAI Responses API - 功能同域的领域、数据、服务器、组件和测试模块 - 用于增强弹性及公开评估用例的本地确定性引擎 ``` app/ api/analyze/route.ts # guarded server endpoint layout.tsx page.tsx src/features/field-ops/ components/ # interactive operations console data/ # synthetic site configuration domain/ # extraction, policy, and routing rules server/ # OpenAI boundary cloudflare-pages/ # public-hostname reverse proxy ``` 视觉系统和界面设计理由记录在 [`DESIGN.md`](./DESIGN.md) 中。安全性和数据处理说明位于 [`SECURITY.md`](./SECURITY.md)。 ## 本地开发 要求:Node.js 22 或更高版本以及 npm。 ``` npm install cp .env.example .env.local npm run dev ``` 本地环境下 `OPENAI_API_KEY` 是可选的。如果没有它,确定性引擎也能 保持完整的交互可用。 运行完整的验证套件: ``` npm run validate ``` 或者分别运行检查: ``` npm run lint npm run typecheck npm test npm run build npx knip ``` ## Cloudflare 部署 将 API 密钥存储为加密的 Worker 密钥,然后部署应用程序: ``` npx wrangler secret put OPENAI_API_KEY npm run deploy ``` Pages 域名通过 `cloudflare-pages/_worker.js` 转发到 Worker。 将其 `UPSTREAM_ORIGIN` 配置为 Pages 密钥并部署该目录: ``` npx wrangler pages secret put UPSTREAM_ORIGIN \ --project-name fieldops-copilot-nico npx wrangler pages deploy cloudflare-pages \ --project-name fieldops-copilot-nico \ --branch main ``` 没有任何密钥以 `NEXT_PUBLIC_` 为前缀、嵌入到浏览器包中,或 被提交到代码仓库。
标签:人工智能, 信息提取, 原型设计, 库, 应急响应, 指挥调度, 用户模式Hook绕过, 程序员工具, 自动化攻击, 路径规划