feat(health): add P0 health channel kernel and encrypted health zone.

Lock health recording behind confirm-only state machines, reject public publishes for the health category, and ship the 14-day experiment Page Data templates with tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-09-02 09:35:55 +08:00
parent d2d463b1db
commit f96fdcb3b9
34 changed files with 3140 additions and 9 deletions
+2 -2
View File
@@ -33,7 +33,7 @@ test('initializeDefaultSpace creates one space and all system categories', async
queries
.filter(({ sql }) => sql.includes('INSERT INTO h5_space_categories'))
.map(({ params }) => params[3]),
['oa', 'public', 'draft', 'archive'],
['oa', 'public', 'health', 'draft', 'archive'],
);
});
@@ -106,7 +106,7 @@ test('getSpace scopes space and categories to the authenticated user', async ()
assert.equal(space.categories[0].code, 'private');
assert.deepEqual(calls[0].params, ['user-1']);
assert.deepEqual(calls[1].params, ['user-1', 'user-1', 'user-1', 'space-1']);
assert.match(calls[1].sql, /WHEN c\.category_code IN \('oa', 'public'\) THEN COALESCE\(pc\.item_count, 0\) \+ COALESCE\(ac\.item_count, 0\)/);
assert.match(calls[1].sql, /WHEN c\.category_code IN \('oa', 'public', 'health'\) THEN COALESCE\(pc\.item_count, 0\) \+ COALESCE\(ac\.item_count, 0\)/);
assert.doesNotMatch(calls[1].sql, /source_type\s*=\s*'upload'/);
});