fix: connect Page Data sandbox to user PostgreSQL
Memind CI / Test, build, and release guards (pull_request) Failing after 15m29s
Memind CI / Test, build, and release guards (pull_request) Failing after 15m29s
This commit is contained in:
@@ -134,11 +134,11 @@ load_skill → page-data-collect
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS survey_responses (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
q1_feature TEXT NOT NULL,
|
||||
q2_usage TEXT NOT NULL,
|
||||
q3_suggestion TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now', '+8 hours'))
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
@@ -157,6 +157,13 @@ CREATE TABLE IF NOT EXISTS survey_responses (
|
||||
}
|
||||
```
|
||||
|
||||
**数据层失败必须立即停止(fail closed)**:
|
||||
|
||||
- `private_data_execute`、`private_data_register_dataset`、`private_data_schema/query` 任一返回连接错误、权限错误或 `isError: true` 时,禁止继续写 HTML、bind 或发布。
|
||||
- 禁止声称“先准备 HTML,PG 恢复后会自动生效”;平台没有延迟补执行队列。数据库恢复后必须重新执行建表、注册、bind 和交付前自检。
|
||||
- PostgreSQL 连接错误应原样报告,不得把 `/tmp/.s.PGSQL.*`、`ECONNREFUSED` 或 `permission denied` 解释成“稍后会自动恢复”。
|
||||
- dataset 配置了 `soft_delete` 时,表必须包含 `deleted_at TIMESTAMPTZ`;配置了 `own_rows` 时,表必须包含 policy 指定的所有者字段。
|
||||
|
||||
### 3. 页面层:写 HTML
|
||||
|
||||
- 用 `write_file` / `edit_file` 写入或更新 `public/*.html`
|
||||
@@ -167,6 +174,14 @@ CREATE TABLE IF NOT EXISTS survey_responses (
|
||||
<script src="/assets/page-data-client.js"></script>
|
||||
```
|
||||
|
||||
客户端只允许调用 `page-data-client.js` 已公开的方法:`listRows`、`getSchema`、`getStats`、`insertRow`、`updateRow`、`deleteRow`、`authenticate`。删除单行使用:
|
||||
|
||||
```js
|
||||
await client.deleteRow('dataset_name', rowId);
|
||||
```
|
||||
|
||||
禁止发明 `softDeleteRows`、`deleteRows` 等不存在的方法;服务端会根据 dataset 的 `soft_delete` 授权把 `deleteRow` 转换为软删除。
|
||||
|
||||
- **第三方 JS 库**(Chart.js、ECharts 等)禁止写 CDN `https://...`;发布页 CSP 只允许同源脚本。优先用平台预置路径,或下载到 `public/assets/` 后用相对路径引用:
|
||||
|
||||
```html
|
||||
@@ -287,6 +302,7 @@ CREATE TABLE IF NOT EXISTS survey_responses (
|
||||
3. HTML 含 `page-data-client.js`;已 bind 或发布后平台会注入 pageId
|
||||
4. HTML **不含** `127.0.0.1:`、`/api/survey/`、`PLACEHOLDER_PAGE_ID`
|
||||
5. 向用户说明:访客如何提交、管理员如何用口令查看记录
|
||||
6. HTML 未调用 `softDeleteRows` / `deleteRows` 等客户端不存在的方法;删除使用 `deleteRow(dataset, rowId)`
|
||||
|
||||
## 回复格式
|
||||
|
||||
|
||||
Reference in New Issue
Block a user