Files
zkxw/openspec/changes/zkxw-engineering-standards/specs/database-conventions/spec.md
T
zlwu b220298f89 chore: 清理历史资料并规范工程目录与开发规则
为减少仓库噪声和重复规则,整理当前开发入口并移除已废弃资料。

- 精简根 AGENTS,补充四个应用规则与 README,统一规范入口
- 归整部署文件、SOP 原稿和参考资源,修正迁移后的脚本路径
- 取消虚拟环境、工具状态、业务导出及备份的跟踪,本机所需原件保留
- 移除停用的 graphify 配置、脚本与产物
- 删除历史业务文档、执行计划、OpenSpec 业务变更和移动 UI 原型
- 清理失效引用,历史细胞产品导入改为必须显式指定 --file

验证:git diff --cached --check、OpenSpec 严格校验、导入参数隔离检查 3/3 通过;
迁移文件完整性和现行链接已核对。未执行部署、业务数据导入或服务启停。
2026-10-29 23:08:29 +08:00

49 lines
2.1 KiB
Markdown
Raw 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.
## ADDED Requirements
> 来源说明:文中《中科兴皖需求 V0.3》及其章节引用为历史出处,原文已清理;以下既有 SHALL 要求继续有效,当前入口见根 `AGENTS.md` 与本工程标准。
### Requirement: MySQL 版本
生产与标准开发环境的关系型数据库 SHALL 使用 MySQL 5.7(与《中科兴皖需求 V0.3》§3 一致)。
#### Scenario: 新环境搭建文档
- **WHEN** 编写或更新部署文档
- **THEN** 文档 SHALL 声明 MySQL 5.7 及字符集/排序规则(如 utf8mb4)基线
### Requirement: 公共字段集合
除需求或 OpenSpec 明确豁免的关联/日志表外,业务表 SHALL 包含以下公共字段且语义一致:`id`(VARCHAR(64),UUID)、`tenant_no`、`order_num`、`remark`、`create_by`、`create_dept_id`、`create_time`、`update_by`、`update_time`、`del_flag`(与需求 §3 列表一致)。
#### Scenario: 新建业务表 DDL
- **WHEN** 创建新表
- **THEN** 表定义 SHALL 包含上述公共字段,且 `del_flag` 默认 `0` 表示未删除
### Requirement: 字段顺序
表模型定义与 DDL 中,业务字段 SHALL 位于 `id` 之后;`tenant_no`、`order_num`、`remark`、`create_by`、`create_dept_id`、`create_time`、`update_by`、`update_time`、`del_flag` SHALL 位于业务字段之后(与需求 §3 一致)。
#### Scenario: Code review DDL
- **WHEN** 审查新建表 SQLAlchemy 模型或 raw SQL
- **THEN** 字段顺序 SHALL 符合本 requirement,除非评审记录中注明例外原因
### Requirement: 逻辑删除
应用层 SHALL NOT 对业务数据执行物理删除;删除操作 SHALL 通过将 `del_flag` 置为 `1` 实现;查询默认 SHALL 排除已删除行。
#### Scenario: 删除用户可见记录
- **WHEN** 用户点击删除某条业务数据
- **THEN** 服务端 SHALL 更新 `del_flag` 而非 `DELETE FROM`,且列表接口默认不返回 `del_flag=1`
### Requirement: 主键类型
主键 `id` SHALL 为 `VARCHAR(64) NOT NULL`,取值策略为 UUID(与需求 §3)。
#### Scenario: 插入新行
- **WHEN** 应用创建新实体
- **THEN** 写入的 `id` SHALL 为符合长度与格式的 UUID 字符串