feat(M03-A): 完成门店与房间基础管理

This commit is contained in:
Codex
2026-06-18 14:55:04 +08:00
parent 47094d5309
commit 15139b3962
17 changed files with 1013 additions and 13 deletions
+15 -1
View File
@@ -27,6 +27,9 @@ const rbacVerifySql = read('database/migrations/2026061805_m02c_rbac.verify.sql'
const userManagementUpSql = read('database/migrations/2026061806_m02d_user_management.up.sql');
const userManagementDownSql = read('database/migrations/2026061806_m02d_user_management.down.sql');
const userManagementVerifySql = read('database/migrations/2026061806_m02d_user_management.verify.sql');
const storeRoomUpSql = read('database/migrations/2026061807_m03a_store_room_domain.up.sql');
const storeRoomDownSql = read('database/migrations/2026061807_m03a_store_room_domain.down.sql');
const storeRoomVerifySql = read('database/migrations/2026061807_m03a_store_room_domain.verify.sql');
const coreTables = [
'qipai_schema_migrations',
@@ -133,5 +136,16 @@ assert.match(userManagementVerifySql, /'qipai_user_admin_profiles'/);
for (const permission of ['user.read', 'staff.manage', 'session.reset']) {
assert.match(userManagementUpSql, new RegExp(permission.replace('.', '\\.')));
}
for (const table of [
'qipai_store_business_hours', 'qipai_room_categories', 'qipai_room_disabled_periods'
]) {
assert.match(storeRoomUpSql, new RegExp(`CREATE TABLE IF NOT EXISTS ${table}`));
assert.match(storeRoomDownSql, new RegExp(`DROP TABLE IF EXISTS ${table}`));
assert.match(storeRoomVerifySql, new RegExp(`'${table}'`));
}
assert.match(storeRoomUpSql, /configuration_status VARCHAR/);
assert.match(storeRoomUpSql, /operational_status VARCHAR/);
assert.match(storeRoomUpSql, /weekday_price_cents INT UNSIGNED/);
assert.match(storeRoomUpSql, /CHECK \(ends_at > starts_at\)/);
console.log('PASS: M01-B through M02-D migration contracts are present.');
console.log('PASS: M01-B through M03-A migration contracts are present.');