wp-knowledge 0.11.4

KnowDB loader and SQLite-backed query facade for the Warp Parse stack.
Documentation
# PostgreSQL Provider Tasks

## Context

`wp-knowledge` 已经具备外部 PostgreSQL provider 的基础能力:

- `knowdb.toml` 支持 `[provider] kind = "postgres"`
- `facade::query_fields(...)` / `cache_query_fields(...)` 已成为推荐的 provider-neutral 查询入口
- `facade::query_named(...)` / `cache_query(...)` 仍保留,作为兼容旧版 SQLite 参数接口的 wrapper
- PostgreSQL 的基础查询、命名参数重写、手工测试脚本已经可用

当前状态适合验证功能通路,但还不足以视为“长期稳定可运营”的 PostgreSQL 支持。

## Priority 1

### 1. Replace single-client provider with a connection pool

Current:

- `src/postgres.rs` 使用 `Mutex<Client>`,所有查询串行化

Tasks:

- 评估并接入 PostgreSQL 连接池
- 把 provider 从单连接改为池化获取连接
- 为连接失败、连接断开、重试策略定义清晰行为

Acceptance:

- 并发查询不依赖单连接串行执行
- 基础测试和 PostgreSQL 集成测试全部通过

### 2. Add provider startup validation

Current:

- provider 初始化阶段只检查能否连接
- 表存在性、权限、schema 偏差要到实际查询时才暴露

Tasks:

- 初始化时增加基础自检
- 输出清晰的错误信息,区分连接问题、权限问题、schema 问题

Acceptance:

- 错库、错 schema、错权限能在初始化阶段直接失败

## Priority 2

### 3. Define SQL/UDF compatibility boundary

Current:

- PostgreSQL 目前只支持基础 SQL 查询和命名参数重写
- SQLite UDF 体系没有迁移到 PostgreSQL

Tasks:

- 梳理当前 `wp-knowledge`/`wp-oml` 常见查询中依赖的 SQLite UDF
- 明确哪些 SQL 能直接迁到 PostgreSQL
- 明确哪些 SQL 需要改写,或需要用户自行在 PostgreSQL 中提供函数
- 把边界写进文档和示例

Acceptance:

- 对外有清晰列表说明“可直接使用”和“需要改造”的 SQL 能力

### 4. Expand PostgreSQL type coverage

Current:

- `src/postgres.rs` 只支持一部分返回列类型
- 绑定参数时,很多 `DataField` 类型会退化成文本

Tasks:

- 补充更完整的 PostgreSQL 列类型映射
- 评估并补充更合理的参数绑定类型
- 对不支持类型给出更具体的错误提示

Acceptance:

- 常用数值、时间、JSON、网络相关类型具备明确支持策略

## Priority 3

### 5. Complete provider-neutral API migration

Current:

- 新代码可用 `query_fields(...)` / `cache_query_fields(...)`
- 兼容接口仍暴露 `rusqlite::ToSql`

Tasks:

- 在仓库内持续把新调用迁到 provider-neutral API
- 评估是否需要给兼容接口加 `deprecated` 标记
- 制定 `query_named(...)` / `cache_query(...)` 的长期保留或移除策略

Acceptance:

- 新代码路径默认不依赖 SQLite 类型
- 兼容层定位清晰

### 6. Improve automated verification

Current:

- `tests/postgres_provider.rs` 依赖显式环境准备
- `tests/postgres_testcontainers.rs` 目前为 `ignored`
- `tests/test-postgres-provider.sh` 可用于本地 Docker Desktop 手工验证

Tasks:

- 设计 CI 中的 PostgreSQL 自动验证方式
- 决定继续采用 Compose 还是启用 `testcontainers`
- 保证失败时能输出足够的连接、容器、SQL 诊断信息

Acceptance:

- 在标准开发/CI 流程中可以稳定验证 PostgreSQL provider

## Priority 4

### 7. Add end-to-end example in consuming repo

Current:

- `wp-knowledge` 本身已经支持 PostgreSQL provider
-`wp-motor`/`wp-oml` 侧还缺一条完整、可复现的 PostgreSQL 示例链路

Tasks:

- 在消费侧仓库补一份 PostgreSQL knowdb 配置示例
- 用真实 schema 和查询验证 `wp-oml` 调用链
- 补充运行说明,确保团队成员可直接复用

Acceptance:

- 从消费侧项目可以完整验证 PostgreSQL provider 接入链路

## Suggested execution order

1. 连接池
2. 初始化自检
3. SQL/UDF 能力边界文档
4. 类型覆盖增强
5. 自动化验证
6. 消费侧端到端示例
7. 兼容接口废弃策略