Files
FATrace/.windsurf/rules/projectrules.md
2025-10-29 11:42:58 +08:00

94 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 细节。
* 保存和发布的视频信息必须有数据库索引。
---