--- 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 细节。 * 保存和发布的视频信息必须有数据库索引。 ---