fix(projects): resolve runtime permissions and migration compatibility

Use existing menu permissions for management actions, preserve shared list styles in teleported detail dialogs, and align project attribution column collations with the project primary key. Record isolated MySQL and browser validation while retaining the real-device acceptance gate.
This commit is contained in:
zlwu committed 2026-11-02 16:04:31 +08:00
1 parent bd62416263
commit a4c4028144
6 files changed
+98 -69

No files matched your search

@@ -1,4 +1,4 @@
-- Issue #13: MySQL 5.7 增量迁移。未在真实数据库执行;先备份并在隔离副本验证。
-- Issue #13: MySQL 5.7 增量迁移。已在隔离 MySQL 5.7 验证;上线前仍须备份并在目标副本验证。
-- DDL 隐式提交;该脚本不作为自动应用启动步骤。
CREATE TABLE IF NOT EXISTS biz_project_team (
@@ -122,10 +122,18 @@ CREATE TABLE IF NOT EXISTS biz_project_assignment_audit (
KEY ix_business (tenant_no, biz_type, biz_id, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 原业务表可能使用不同的默认排序规则;关联列必须与实际项目主键一致。
-- 同时修复已执行旧版迁移的列,不更改原表其他业务列或整库排序规则。
SELECT character_set_name, collation_name INTO @project_charset, @project_collation
FROM information_schema.columns
WHERE table_schema=DATABASE() AND table_name='biz_project' AND column_name='id';
SET @project_ddl = IF(
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_presign_order' AND column_name='project_id')=0,
'ALTER TABLE biz_presign_order ADD COLUMN project_id VARCHAR(64) NULL',
'SELECT 1');
CONCAT('ALTER TABLE biz_presign_order ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_presign_order' AND column_name='project_id') <> @project_collation,
CONCAT('ALTER TABLE biz_presign_order MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
'SELECT 1'));
PREPARE project_stmt FROM @project_ddl;
EXECUTE project_stmt;
DEALLOCATE PREPARE project_stmt;
@@ -139,8 +147,10 @@ DEALLOCATE PREPARE project_stmt;
SET @project_ddl = IF(
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_collection_protocol' AND column_name='project_id')=0,
'ALTER TABLE biz_collection_protocol ADD COLUMN project_id VARCHAR(64) NULL',
'SELECT 1');
CONCAT('ALTER TABLE biz_collection_protocol ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_collection_protocol' AND column_name='project_id') <> @project_collation,
CONCAT('ALTER TABLE biz_collection_protocol MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
'SELECT 1'));
PREPARE project_stmt FROM @project_ddl;
EXECUTE project_stmt;
DEALLOCATE PREPARE project_stmt;
@@ -154,8 +164,10 @@ DEALLOCATE PREPARE project_stmt;
SET @project_ddl = IF(
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_research_donation' AND column_name='project_id')=0,
'ALTER TABLE biz_research_donation ADD COLUMN project_id VARCHAR(64) NULL',
'SELECT 1');
CONCAT('ALTER TABLE biz_research_donation ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_research_donation' AND column_name='project_id') <> @project_collation,
CONCAT('ALTER TABLE biz_research_donation MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
'SELECT 1'));
PREPARE project_stmt FROM @project_ddl;
EXECUTE project_stmt;
DEALLOCATE PREPARE project_stmt;
@@ -169,8 +181,10 @@ DEALLOCATE PREPARE project_stmt;
SET @project_ddl = IF(
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_pilot_application' AND column_name='project_id')=0,
'ALTER TABLE biz_pilot_application ADD COLUMN project_id VARCHAR(64) NULL',
'SELECT 1');
CONCAT('ALTER TABLE biz_pilot_application ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_pilot_application' AND column_name='project_id') <> @project_collation,
CONCAT('ALTER TABLE biz_pilot_application MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
'SELECT 1'));
PREPARE project_stmt FROM @project_ddl;
EXECUTE project_stmt;
DEALLOCATE PREPARE project_stmt;