94 lines
2.9 KiB
Markdown
94 lines
2.9 KiB
Markdown
---
|
||
trigger: always_on
|
||
---
|
||
|
||
# 🌊 Windsurf Rules for FATrace Projects
|
||
|
||
## 📦 全局规则
|
||
|
||
1. **语言/框架**
|
||
|
||
* 使用 **C# + WinForms + ReaLTaiizor + FreeSql**。
|
||
* 项目代码应结构清晰,命名规范,遵循 C# 标准。
|
||
* 尽量保持简单,不要过度封装,模块化即可。
|
||
|
||
2. **外部依赖**
|
||
|
||
* 使用 **海康威视 SDK**(提供 CHM/PDF 手册作为主要参考)。
|
||
* SDK 接口调用需要稳定性,尽量用封装类统一管理,避免散乱调用。
|
||
|
||
3. **开发风格**
|
||
|
||
* UI:使用 ReaLTaiizor 美化控件,风格现代、简洁。
|
||
* 数据:使用 FreeSql 管理视频文件信息、索引和元数据。
|
||
* 模块:每个大功能单独建 `Module`,保持独立,方便后期扩展。
|
||
|
||
---
|
||
|
||
## 🎥 FATrace.OEMApp 模块规则
|
||
|
||
1. **功能目标**
|
||
|
||
* 支持实时显示海康摄像头视频流。
|
||
* 在触发事件时,回溯 **30秒前到触发结束** 的录像,并保存为视频文件。
|
||
* 保存的视频需带有元数据(时间戳、触发来源、文件路径等)。
|
||
|
||
2. **实现规则**
|
||
|
||
* 视频捕获和录像功能封装在 `MediaCaptureModule`。
|
||
* SDK 相关逻辑写在单独的 `HikvisionSdkWrapper` 类里,不直接散落在 UI 层。
|
||
* 视频文件保存路径支持配置,命名规则:`YYYYMMDD_HHMMSS_trigger.mp4`。
|
||
* 保持触发录像的逻辑简单,不要写复杂的多线程调度,能满足实时即可。
|
||
|
||
3. **数据规则**
|
||
|
||
* 使用 FreeSql 存储录像片段的索引信息:
|
||
|
||
* `Id`
|
||
* `StartTime`
|
||
* `EndTime`
|
||
* `FilePath`
|
||
* `TriggerSource`
|
||
|
||
---
|
||
|
||
## 🌐 FATrace.MediaServer 模块规则
|
||
|
||
1. **功能目标**
|
||
|
||
* 将 FATrace.OEMApp 保存的视频片段以 API 或文件共享形式发布。
|
||
* 提供接口供其他用户查询和下载录像片段。
|
||
|
||
2. **实现规则**
|
||
|
||
* 使用 ASP.NET Core Minimal API 或简单的 Web 服务,不需要复杂框架。
|
||
* 提供 REST API:
|
||
|
||
* `GET /videos` → 获取视频列表(支持按时间过滤)。
|
||
* `GET /videos/{id}` → 下载对应视频。
|
||
* 不要实现复杂权限系统,先保证能正常发布。
|
||
|
||
3. **数据规则**
|
||
|
||
* 直接复用 FreeSql 数据库,作为视频片段索引的查询来源。
|
||
|
||
---
|
||
|
||
## 📚 SDK 文档使用规则
|
||
|
||
1. Windsurf 在调用 SDK 时,应结合我提供的 **海康 SDK CHM/PDF 文档**作为主要参考。
|
||
2. 如果遇到接口不确定,应优先查阅 SDK 文档,再写封装代码。
|
||
3. 封装类需要加上注释,标明对应的 SDK 函数。
|
||
4. SDK文档地址在FATrace.OEMApp.SDKHelper中
|
||
5. 可以联网查询使用方法
|
||
|
||
---
|
||
|
||
## ✅ 开发约束总结
|
||
|
||
* 不要过度架构,保持模块化和简单性。
|
||
* 所有和视频相关的逻辑集中在 `Media` 模块,不要分散到 UI。
|
||
* UI 只负责展示和触发,不处理 SDK 细节。
|
||
* 保存和发布的视频信息必须有数据库索引。
|
||
|
||
--- |