emmcygn/kyber-submission
GitHub: emmcygn/kyber-submission
机场地面运营冲突检测平台,集成六种内置冲突检测、状态机协调机制、可扩展规则引擎以及LLM驱动的自然语言规则编写代理。
Stars: 0 | Forks: 0
# Kyber Operations Platform — Track A: 冲突检测
机场地面运营冲突检测系统,具备协调生命周期、自定义规则引擎以及 LLM 驱动的规则编写代理。
## 快速开始
### 前置条件
- Python 3.11+
- Node.js 20+
- Anthropic API key(用于 agent 功能)
### 后端
```
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
```
### 前端
```
cd frontend
npm install
npm run dev
```
在浏览器中打开 http://localhost:5173。
### 环境变量
在 `takehome_docs/` 中创建一个 `.env` 文件(或设置环境变量):
```
ANTHROPIC_API_KEY=sk-ant-...
MODEL_ID=claude-haiku-4-5-20251001
```
Agent 功能需要有效的 API key。其他所有功能无需它即可正常工作。
### 运行测试
```
# 后端测试 (259)
cd backend
python -m pytest tests/ -v
# 对抗性基于属性的测试 (255)
cd ..
python -m pytest extra_tests/ -q
```
两个测试套件共 514 个测试。
## 架构
```
Frontend (React + Vite + TS + Tailwind)
├── ConflictTable → POST /api/detect
├── ReconciliationView → POST /api/reconcile
└── AgentChat → POST /api/rules/generate
Backend (FastAPI)
├── detector.py → 6 built-in conflict types
├── reconciler.py → State machine lifecycle
├── rules.py → Custom rule evaluator (9 operators, 3 scopes)
├── agent.py → Claude Haiku 4.5 tool-use agent
└── main.py → REST API endpoints
Scaffold (provided)
├── types.py → SolverTask, SolverResource
├── encoding.py → Time slots, shifts, breaks
└── track_a_interfaces.py → DetectedConflict, StoredConflict, etc.
```
## 示例成功路径 (CLI)
从命令行运行一个完整的 detect → reconcile(检测 → 协调)周期:
```
cd takehome_docs
python candidate/adapter_stub.py
```
预期输出:
```
Track A detect() returned 39 conflicts
- overdue: 9
- schedule_overlap: 2
- shift_violation: 5
- understaffing: 23
Reconciliation:
- new: 35
- persisted: 3
- resolved: 1
- auto_resolved: 0
- unchanged: 1
```
需验证的关键点:
- `understaffing_task-009` (acknowledged/已确认) → `unchanged` (保持不变,未被撤销)
- `shift_violation_staff-005_task-012` → `resolved` (正确的时段计算显示无违规)
- 未为 `op-012`(已完成的操作)发出冲突
## 成功路径演练 (Frontend)
1. 打开应用 → 查看数据集摘要(16 个 ops,35 个 tasks,14 名 staff)
2. 点击 **"Run Detection"** → 查看 4 种类型的 39 个冲突
3. 切换到 **"Reconciliation"** 标签页 → 点击 **"Run Reconciliation"** → 查看被分类到 5 个桶中的冲突
4. 切换到 **"Ground Control"** 标签页 → 输入 "Alert when tasks have less than 50% staffing" → 查看生成的规则 + 预览
5. 点击 **"Apply Rule"** → 规则已存储
6. 切回 **"Detection"** 标签页 → 点击 **"Run Detection"** → 查看额外的自定义规则匹配
## API 端点
| Method | Path | Description |
|--------|------|-------------|
| GET | `/api/dataset/summary` | 数据集元数据和计数 |
| POST | `/api/detect` | 运行冲突检测 |
| POST | `/api/reconcile` | 与现有冲突进行协调 |
| GET | `/api/rules` | 列出活动的自定义规则 |
| POST | `/api/rules` | 存储已验证的规则 |
| POST | `/api/rules/generate` | LLM agent:自然语言 → 规则 |
## 冲突类型
| Type | Description |
|------|-------------|
| `understaffing` | 任务需要 N 名人员但分配的人数不足 |
| `schedule_overlap` | 人员被分配了重叠的任务 |
| `overdue` | 任务时间窗口已过 |
| `shift_violation` | 任务不在人员可用时间(班次 + 休息)内 |
| `dependency_blocked` | 任务依赖于未完成/未激活/不可行的依赖项 |
| `task_type_violation` | 人员被分配到其 `allowedTaskTypes` 之外的任务类型 |
## 测试覆盖
259 个测试,涵盖:
- 每种冲突检测器类型及其边缘情况
- 已完成操作过滤器(op-012 无冲突)
- 跨午夜的 UTC 日期边界任务(task-030,task-031)
- 可用性覆盖(2026-03-18 上的 staff-009 AM+PM)
- 不可用人员排除(staff-014)
- allowedTaskTypes 限制(staff-004,staff-013)
- 任务类型违规检测(兼容 + 不兼容分配)
- 正向和负向 dependency_blocked 案例
- 班次违规解决(staff-005/task-012)
- 协调状态转换
- 所有 9 个规则运算符
- 简单、复合和资源范围的 custom rules
- Agent 验证(_validate_rule:scope、field、operator、severity、secondary conditions)
- Agent 规则生成(mocked:有效、仅文本、重试、重试耗尽、缺少 key)
- 完整工作流集成
- 10 次运行确定性验证
- 通过 TestClient 进行的 API 集成
标签:Anthropic API, API哈希动态解析, AV绕过, Claude, CVE检测, FastAPI, pytest, Python, React, REST API, Syscalls, Tailwind CSS, TCP/UDP协议, TypeScript, Vite, 云计算, 冲突检测系统, 前后端分离, 单元测试, 大语言模型应用, 安全插件, 属性测试, 无后门, 机场地面运营, 状态机, 网络调试, 自动化, 航班保障, 规则引擎, 规则生成, 调度系统, 资源分配, 运营安全, 逆向工具