4.5 KiB
4.5 KiB
fire-safety-ymd AI-NSES 项目覆盖规则
1. 适用范围
本文补充通用 AI-NSES,只适用于 fire-safety-ymd。它记录森林防火、Go 后端、SuperAgent、MCP 和 PostGIS 带来的项目专属约束,不修改通用标准本身。
2. 规则优先级
从高到低:
- 用户在当前 checkpoint 中的明确要求。
- 根
AGENTS.md。 - 本项目 Overlay 与专项安全/接口契约。
- 通用 AI-NSES 和通用开发规范。
- 仅供参考的模板和历史讨论。
发现冲突时停止扩大实现,在交付中明确冲突和所采用的上级规则。
3. 核心系统边界
目标链路为:
用户侧应用
-> fire-safety-ymd Go 服务
-> SuperAgent
-> 本项目 MCP 工具
-> PostgreSQL/PostGIS
- Go 服务拥有身份上下文、权限校验、外部调用适配、数据访问和审计责任。
- SuperAgent 拥有自然语言理解、工具选择和答案组织责任,不拥有授权决策和数据库权限。
- MCP 层提供有限的领域能力,不把历史表名、任意 SQL 或内部凭证暴露给模型。
- PostgreSQL/PostGIS 提供空间事实,但记录存在不等于资源当前可用。
4. 森林防火事实规则
- 数据库事实、用户陈述、模型推断和建议必须可区分。
- 查询结果应逐步具备来源、更新时间、状态、不确定性和是否需要现场确认等字段。
- 未验证 PostGIS SRID 和几何类型前,不发布距离、范围包含或最近资源结论。
- 防火通道只有几何和长度时,只能表达空间邻近,不能推断车辆可通行或计算可靠路线。
- 水源或设施没有可用状态时,不能只因记录存在就宣称可用。
- 联系人和电话属于受控数据,是否返回取决于服务端角色和区域权限。
5. AI 与应急安全规则
- 大模型不得虚构人员、设施、危险源、道路状态、距离或实时火情。
- 高风险回答应明确数据时间和未知项,必要时提示现场确认。
- AI 输出是辅助信息,不替代 119、人员撤离、消防控制室和现场指挥体系。
- 工具失败、数据过期或权限不足时返回明确状态,不允许模型用猜测补齐。
- 面向真实火情的分阶段方案、路径计算或资源调度属于后续高风险 Feature,必须先有单独 Spec、安全审查和测试方案。
6. Go 交付约束
- 保持
cmd -> internal/app -> handler/service -> domain/repository的清晰依赖,不机械模仿 Java 分层。 - 默认从 Go 标准库和小接口开始;新增框架、SDK 或通用抽象需要现实用例。
- 所有外部系统通过适配边界接入,领域和服务层不得依赖厂商 DTO。
- 每个 checkpoint 至少执行
gofmt和go test ./...;并发、数据库或网络代码按风险增加 race、集成和失败场景测试。
7. 文档门禁
以下变化必须同步文档:
| 变化 | 必须更新 |
|---|---|
| SuperAgent 或 MCP 契约 | Spec、Architecture/Workflow、Project State |
| PostgreSQL schema、SRID 或查询语义 | 数据架构、相关 Domain、测试说明 |
| 身份、角色、区域/租户边界 | 安全文档、接口契约、测试场景 |
| 高风险应急建议逻辑 | Spec、Domain、Workflow、安全边界、ADR(如适用) |
| Go 核心依赖或 module path | 后端规范、ADR(如影响较大)、Project State |
8. 当前例外与待确认
当前已实现无业务数据的 /health、默认关闭的原生用户对话 API、可选 DashScope 风格兼容入口、SuperAgent Open API 出站 Adapter/探针,以及默认关闭的空间只读 MCP/PostGIS 基线。对话入口只有独立静态联调凭证、精确 Origin、单进程内存会话和并发 Run 冲突,不是最终用户认证;兼容接口仍坚持严格成功后才返回正文。Docker/Compose 测试部署和 Nginx 公网配置目前均是待目标机验证的安全基线:应用只发布宿主机回环端口,Secret 在运行时注入且迁移凭证不得进入服务容器。MCP 已具备独立服务间 Bearer、显式服务端静态数据范围(数据库全范围或镇街白名单)、固定参数化查询和 readiness 门禁;4,048 条实库非空几何已通过受控事务补齐 SRID 4326 元数据,严格 readiness 和 7 个工具的本地真实查询均已通过,但真实消防 Profile、公网部署与 SuperAgent MCP 联调尚未完成。无效几何在不改写原始数据的前提下被查询排除并明确告警;动态授权、共享/持久会话、持久审计和生产安全控制仍未实现。