feat(iit): QC deep fix + V3.1 architecture plan + project member management
QC System Deep Fix: - HardRuleEngine: add null tolerance + field availability pre-check (skipped status) - SkillRunner: baseline data merge for follow-up events + field availability check - QcReportService: record-level pass rate calculation + accurate LLM XML report - iitBatchController: legacy log cleanup (eventId=null) + upsert RecordSummary - seed-iit-qc-rules: null/empty string tolerance + applicableEvents config V3.1 Architecture Design (docs only, no code changes): - QC engine V3.1 plan: 5-level data structure (CDISC ODM) + D1-D7 dimensions - Three-batch implementation strategy (A: foundation, B: bubbling, C: new engines) - Architecture team review: 4 whitepapers reviewed + feedback doc + 4 critical suggestions - CRA Agent strategy roadmap + CRA 4-tool explanation doc for clinical experts Project Member Management: - Cross-tenant member search and assignment (remove tenant restriction) - IIT project detail page enhancement with tabbed layout (KB + members) - IitProjectContext for business-side project selection - System-KB route access control adjustment for project operators Frontend: - AdminLayout sidebar menu restructure - IitLayout with project context provider - IitMemberManagePage new component - Business-side pages adapt to project context Prisma: - 2 new migrations (user-project RBAC + is_demo flag) - Schema updates for project member management Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
-- Phase 2: User-Project Association + RBAC
|
||||
-- 1. IitUserMapping: add userId (nullable FK to platform_schema.users)
|
||||
-- 2. IitProject: add tenantId (nullable FK to platform_schema.tenants, for Phase 3)
|
||||
-- 3. UserRole enum: add IIT_OPERATOR role
|
||||
|
||||
-- 1. Add user_id to user_mappings (nullable, gradual migration)
|
||||
ALTER TABLE "iit_schema"."user_mappings" ADD COLUMN IF NOT EXISTS "user_id" VARCHAR(255);
|
||||
ALTER TABLE "iit_schema"."user_mappings" ADD CONSTRAINT "user_mappings_user_id_fkey"
|
||||
FOREIGN KEY ("user_id") REFERENCES "platform_schema"."users"("id")
|
||||
ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
CREATE INDEX IF NOT EXISTS "idx_iit_user_mappings_user_id" ON "iit_schema"."user_mappings"("user_id");
|
||||
|
||||
-- 2. Add tenant_id to projects (nullable, Phase 3 will make it required)
|
||||
ALTER TABLE "iit_schema"."projects" ADD COLUMN IF NOT EXISTS "tenant_id" VARCHAR(255);
|
||||
ALTER TABLE "iit_schema"."projects" ADD CONSTRAINT "projects_tenant_id_fkey"
|
||||
FOREIGN KEY ("tenant_id") REFERENCES "platform_schema"."tenants"("id")
|
||||
ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
CREATE INDEX IF NOT EXISTS "idx_iit_projects_tenant_id" ON "iit_schema"."projects"("tenant_id");
|
||||
|
||||
-- 3. Add IIT_OPERATOR to UserRole enum
|
||||
ALTER TYPE "platform_schema"."UserRole" ADD VALUE IF NOT EXISTS 'IIT_OPERATOR' BEFORE 'USER';
|
||||
@@ -0,0 +1,2 @@
|
||||
-- Add is_demo flag to IIT projects (体验项目标记)
|
||||
ALTER TABLE iit_schema.projects ADD COLUMN IF NOT EXISTS is_demo BOOLEAN NOT NULL DEFAULT false;
|
||||
Reference in New Issue
Block a user