Files
ChuSQL/.agents/context/side-branch-plan.txt
T

69 lines
7.1 KiB
Plaintext
Raw Normal View History

2026-10-16 23:46:04 +08:00
# ChuSQL 近期任务与依赖
2026-10-11 17:32:12 +08:00
2026-10-16 23:46:04 +08:00
本计划帮助开发者按个人博客落地所需的顺序推进数据库。实现、测试及门禁状态只以 progress.txt 为准;设计见 design-decisions.txt,限制见 known-issues.txt。
下列顺序是规划,不是已完成能力;按大阶段交付,阶段内运行受影响模块测试,较大改动完成后运行全量门禁。
2026-10-11 17:32:12 +08:00
2026-10-16 23:46:04 +08:00
## 1. 数据库可靠性与部署验收
以 ChuBlog 最新 TODO.md 的优先级为准;其 PLAN.md 保留原始规划,不能据此排除账户、评论、互动或内部文章需求。先验证现有数据库和驱动,再承接不可重建的业务数据。
完成现有多阶段 Dockerfile 的完整源码镜像构建,在受限 Buildx 或异机构建后导入,避免在 WSL 无限制并行编译。验证该镜像的首次引导、非 root 运行、健康检查、卷权限、重启持久化、升级及备份恢复,并固定通过验收的版本与镜像 digest。
在实际镜像上执行持续负载、并发冲突、进程崩溃、磁盘满及提交失败恢复验证,区分已确认提交、失败和断线后提交结果未知。验证驱动连接、超时、错误传播及回滚行为;未知提交结果不能直接重试非幂等操作。先处理发现的数据一致性缺陷,不要求先实现完整 MVCC。
在副本演练备份恢复,区分可从 Git 重建的文章索引与必须恢复的业务数据。域名、公网证书、SSH 发布、Git 硬配额和整站加密备份属于 ChuBlog 部署工作,数据库阶段提供相应验证支持,不替代整站验收。
## 2. 博客业务持久化与驱动联调
覆盖用户、Argon2id 密码哈希及参数、角色、发布授权和迁移;支持 BANNED / MEMBER / AUTHOR / MASTER 所需的业务数据。角色继承、文章所有权及撤权后的会话 / SSH 发布失效由博客服务端落实,不要求为每名读者创建数据库身份。ENUM 先评估驱动兼容性,可用现有标量字段及 CHECK 约束交付,不作为默认前置条件。
核对实际字段、SQL 和协议需求,验证并发注册唯一性、业务关联写入及权限变更的原子性。现有多请求写语句缺少整条语句的数据快照与冲突检查,须验证显式事务能否满足这些场景,并补齐必要的数据库或驱动缺口;不能把单次存储操作持锁等同于整条 SQL 原子性。
保存内部文章可见性、查阅口令的加盐慢哈希及授权撤销版本、站长隐藏 / 删除 / 精华状态和管理审计。将这些权威业务状态与可重建文章索引分开,验证作者再次推送、索引重建或恢复不会覆盖站长管理决定;数据库或身份查询失败时拒绝受保护访问。哈希计算、限流及正文 / 资源访问控制由博客实现。
验证评论的作者 / 文章关联、时间、管理状态、分页和必要索引,以及匿名 / 登录身份关联、重复提交与点赞 / 收藏去重所需的持久数据。并发新增、取消、删除及计数更新须保持约定的一致性,避免重复计数、丢失更新和负数;热度权重、时间衰减、防刷及保留规则由博客定义,数据库验证聚合、排序和重算所需能力。按实际查询检查稳定分页、可见性过滤与资源消耗。
正文和资源落盘为文件,不存入数据库;长行 / 溢出存储不属于博客需求。评论虽然入库,也不据此引入长行支持:由博客明确字数、UTF-8 字节数、请求体和累计配额,数据库按实际整行编码验证容量。按实际索引字段验证 64 字节键限制,只有实际超限时才补所需标量长键支持,不截断或静默丢值。
使用 ChuBlog 的 Rust 驱动完成上述数据库场景联调及账户迁移、业务备份恢复验证。博客实现和旧文件迁移属于 ChuBlog 的配套工作,修改该仓库前遵循其开发约束;前两个阶段完成表示数据库满足已验收的博客场景,不代表博客前端、审核或所有后续功能已完成。
## 3. 存储并发与恢复扩展
本阶段范围为持久化行版本、快照引用与回收、行锁和唯一键锁、等待 / 取消与死锁、同库并行准备、连续 WAL 发布,以及影子文件在线迁移与恢复。实现和验收状态只见 progress.txt。
后续性能工作根据实测减少整库物化、版本文件写放大和最终切换窗口,保留隔离、行序、句柄生命周期和恢复约束;不把这些优化混同于未完成基础并发能力。
## 4. 统一绑定与类型系统
在已有多级词法作用域、查询和写入绑定基础上,完善独立来源 / 列身份及约束绑定,收拢旧兼容桥。
在 DOMAIN 约束、ALTER DOMAIN 和内建复合类型 Eq / Ord / Hash 的基础上,推进精确 DECIMAL、复合索引键编码及用户运算实现,再推进枚举(ENUM)、用户复合类型和代数数据类型(ADT)。博客若采用 ENUM,须连同驱动映射另行验收,不作为账户持久化的默认依赖。
统一写入、导入、事务提交与 Rust 索引语义,保留 nullable、错误时序和布局语义;明确整数范围、CHAR、旧目录身份升级及数据迁移。已有 schema 版本和读取守卫的验收见 progress.txt。
## 5. 原子结构变更与范式迁移
将库建删、DDL、对象依赖及版本复查纳入原子发布和恢复,维护绑定失效、权限、回滚与编号高水位。
在对象目录、DOMAIN 约束及结构事务基础上支持 CASCADE 和范式自动迁移,发布前验证旧数据与嵌套依赖。
迁移首版保留来源,拒绝 NULL、重复行及依赖不保持,后续推进多轮分解。
## 6. 查询语言与执行优化
推进递归 CTE 和写入型 CTE,扩展复杂条件去相关,完善物化内存预算及磁盘溢出,合并连接搜索、外连接变换及统计成本改进;写入型 CTE 依赖统一写入校验。
优化保持行序、重复、错误时序及来源解析规则。博客基线查询若出现资源耗尽或性能问题,先按实测补必要预算或优化,不等待本阶段整体完成。
## 7. 权限与客户端扩展
完善数据库列级权限、所有权转移、ADMIN OPTION 和身份属性;统一 Web 复合值编辑、大整数及多页面事务的交互与会话约束。
按真实需求选择实施范围。博客业务用户与角色由博客表及应用授权管理,不要求为每名读者创建数据库登录身份;现有数据库权限不足以隔离博客服务账号时,必要修复提前到博客业务联调阶段。
## 持续验收
2026-10-11 17:32:12 +08:00
2026-10-15 22:21:41 +08:00
- 局部改动通过受影响模块测试;较大改动由 agent 执行全量门禁,通过后再提交。模块测试不替代异常恢复、磁盘错误、持续负载及并发冲突演练。
2026-10-16 23:46:04 +08:00
- sudo、在线安装、Linux $ORIGIN、macOS 构建发行与发布签名按目标平台验证,结果登记 progress.txt;非博客部署目标的平台验收不阻塞博客接入。
- 升级明确账号 / 授权 / 配置迁移、禁止降级、旧历史和异常凭据清理;不承诺旧二进制兼容、损坏页自动修复或任意 OS 用户映射。
2026-10-15 22:21:41 +08:00
- Haskell 构建串行,存储协议变化重建实际动态库;门禁入口为 gate-check/run-gate.ps1。