tableDB/CHANGELOG.md

71 lines
6.8 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.

# CHANGELOG
## v1.1.6 (2026-05-15)
- **零开销 ABAC 鉴权引擎**:
- **内存展平技术**: 引入 `SchemaCache` 策略展平算法,支持无限深度的用户权限继承(如 `Manager -> Boss`),并将复杂权限图谱在内存中转换为 O(1) 的平滑映射,彻底消除运行时递归与 N+1 数据库查询。
- **1-RTT 动态 SQL 注入**: 重构 `checkAuth``appendAuthAndConstraint`将行级过滤条件RLS直接下推至 SQL WHERE 子句中。无论是 `Get`, `List` 还是 `Remove`,所有权限校验均与业务查询合并执行,确保极致性能。
- **Opt-in 行级安全**: `_Table` 增加 `enableRLS` 开关。仅在显式开启的表上执行权限拦截,避免普通表(如字典表、日志表)产生不必要的计算开销。
- **全新策略管理 API**:
- 新增 `SetPolicy``ListPolicy` 接口,支持标准化的 ABAC 策略配置SQL 条件、参数绑定)。
- **权限分级管理**: 实现了自主授权逻辑。普通用户仅在拥有目标表 `full` 权限时方可为他人分配该表权限;`inherit` 类高阶策略仅限 `SystemUserID` 操作。
- **极致性能与校验**:
- **O(1) 字段验证**: 增加 `ValidFieldsMap` 缓存,消除 `buildQuery` 过程中高频的 Map 构建开销。
- **防死锁与容错**: 权限继承逻辑内置环状检测,自动忽略 `A -> B -> A` 式的逻辑死循环。
- **文档与工程化**:
- 全面重写 `README.md`,以 AI 驱动开发为中心,提供了清晰的 Schema 与 Policy 使用示例。
- 同步更新 `.profile/README.md`,对齐基础设施版本索引。
## v1.1.5 (2026-05-14)
- **强制身份校验模型**: 重构 `GetDB` 返回类型为 `*TableDBUnauthorized`,在编译期强制要求必须先调用 `Auth` 后才能执行后续数据表操作。
- **自定义元数据扩展**: 在系统表 `_Table``_Field` 中增加了 `settings` (JSON) 字段,业务方可通过 `TableSchema``FieldSchema` 存储自定义的表级或字段级配置。
- **Schema API 正规化**: 引入了完整的 `TableSchema` 结构体,并将 `SetTable``RemoveTable` API 上提至 `TableDB` 层级。彻底废弃并移除了遗留的 `Table("xxx:Schema")` 魔法后缀调用方式。
- **底层行为一致性**: `SetTable`, `RemoveTable`, `SetField`, `RemoveField` 现已彻底改写为底层封装调用 `Table("_Table")``Table("_Field")``Set/Remove` 方法,确保了系统自动更新的时间戳(`createTime`)、操作人(`creator`)及各种 Hook 生命周期事件能够被 100% 一致地触发。
## v1.1.4 (2026-05-14)
- **API 语义优化**:
- `Query` 方法从 `TableDB` 移动到 `Table` 对象,更符合面向对象调用习惯;`QueryRequest` 移除 `Table` 字段。
- 移除 `App` 类型别名,统一使用 `TableDB`
- `SyncSchema` 改为私有方法 `syncSchema`,外部调用统一通过 `SetTable``SetField` 进行结构维护。
- **结构维护增强**:
- 新增 `SetTable(memo)` 用于设置表元数据。
- `SetField` 参数从 `any` 改为强类型的 `FieldSchema` 切片,并自动忽略 `CreateTime` 等系统字段,增强类型安全性。
- `SetField` 在创建新表时会自动补全 `id` 字段的元数据,确保查询验证一致性。
- 新增 `Tables()` 方法,支持列出当前用户有权访问的所有数据表。
- **安全性完善**:
- 强化了所有公共 API 的 Auth 检查,确保未授权实例无法执行任何操作。
- 内部 `buildQuery` 现在需要明确传入表名,增强了多表操作时的上下文隔离。
- **测试回归**: 完全重构了测试用例,所有业务表创建均通过 `SetField` 接口完成,验证了公共 API 的闭环能力。
## v1.1.3 (2026-05-14)
- **API 统一与简化**: 引入 `SetField``RemoveField` 接口,支持通过统一的 Table API 动态管理表结构,实现了“操作表结构像操作数据一样简单”。
- **批量操作支持**: `Set`, `Remove`, `SetField`, `RemoveField` 全面支持变长参数Variadic arguments显著提升了批量数据处理效率。
- **安全性增强**:
- `GetDB` 返回实例默认未授权,强制调用 `Auth` 进行身份绑定。
- `GetRawDB` (原 `Base`) 现已增加权限校验,仅限 `_system` 身份访问。
- `Query` (App 级) 现已自动集成行级权限过滤。
- **性能与稳定性**: 优化了元数据同步流程,合并批量操作后的 Schema 重建;修复了 `Cache.Load` 在并发调用时的死锁隐患。
- **文档完善**: 重新编写了 README.md完全抹除了实现细节侧重于纯粹的 API 指南与最佳实践。
## v1.1.2 (2026-05-14)
- **文档重构**: 重新编写 README.md以 AI 为中心,侧重于 API 功能说明与使用指南,移除了无关的实现细节。
- **命名规范对齐**: 消灭了所有 Struct 中的 `json` tag全面对齐驼峰命名规范利用 `cast` 库自动处理大小写转换。
- **API 完整性**: 基于 `getExports` 工具补全了 API 文档,涵盖了常量、全局变量及完整的 Table 操作接口。
## v1.1.1 (2026-05-14)
- **基础设施对齐**: 深度对接 `@go/db` 的自动 ID 生成器 (`NextID`) 与版本管理特性。
- **元数据模型对齐**: 重构 `FieldSchema` 结构体,对齐 `_Field` 表物理结构,并统一使用 `cast.Convert` 进行 JSON 兼容的类型转换。
- **查询安全性强化**: 增强 `BuildQuery` 的标识符验证与自动转义Backticks防止潜在的 SQL 注入风险。
- **Schema 同步健壮性**: 优化 `reconstructAndSyncSchema``SyncSchema` 的元数据采集逻辑,支持更复杂的 DSL 结构。
## v1.1.0
- **内置系统架构 (SystemSchema)**: `_Table`, `_Field`, `_Policy` 等核心元数据表现已内置,`SyncSchema` 会在启动时自动补齐,无需在业务 DSL 中显式定义。
- **自动化 Schema 修复**: 修复了通过 API 创建表时缺少 `id` 字段导致的同步失败问题;`reconstructAndSyncSchema` 现在会自动为所有表补齐 `id c10 PK` 主键。
- **全域行级权限增强**: 行级权限检查逻辑现已扩展至所有包含 `creator` 字段的表(不仅限于系统表),通过 `Auth(userID)` 创建的实例在插入新记录时会自动填充 `creator`
- **元数据安全性提升**: `_Field``_Policy` 现在也包含 `creator` 字段,支持对元数据本身的行级访问控制。
- **测试套件重构**: 全面重新设计了测试用例覆盖了从零启动、API 驱动的架构变更、影子删除、策略授权及 Hook 触发等全量场景。
## v1.0.0
- **初始化重构迁移**: 剥离自 `knowbase/internal/db` 作为纯净独立包。
- **动态 Schema 管理**: 保留动态解析与同步,并封装独立的缓存与 Hook 事件触发逻辑。
- **权限隔离体系**: 通过 `Auth(userID)` 方法引入多维度的数据隔离层,`SystemUserID` 下退化为超管权限操作全域数据。