中文:收口权限与中心/立项配置改造

This commit is contained in:
Cheng Zhou
2026-05-12 10:16:52 +08:00
parent 6e90370a5f
commit 77e842637d
67 changed files with 706 additions and 669 deletions
@@ -10,7 +10,6 @@ from app.models.milestone import Milestone
from app.models.site import Site
from app.models.study import Study
from app.models.study_center_confirm import StudyCenterConfirm
from app.models.study_monitoring_strategy import StudyMonitoringStrategy
from app.models.user import User
from app.schemas.study_setup_config import StudySetupConfigData
@@ -207,34 +206,6 @@ async def _replace_site_milestones(
)
async def _replace_monitoring_strategies(
db: AsyncSession,
*,
study_id: uuid.UUID,
setup_data: StudySetupConfigData,
result: SetupProjectionResult,
) -> None:
await db.execute(delete(StudyMonitoringStrategy).where(StudyMonitoringStrategy.study_id == study_id))
for row in setup_data.monitoringStrategies:
strategy_type = _normalize_text(row.strategyType)
detail = _normalize_text(row.detail)
frequency = _normalize_text(row.frequency)
if not any([strategy_type, detail, frequency]):
continue
if not strategy_type or not detail or not frequency:
result.warnings.append(f"monitoring_strategy_incomplete:{row.id}")
continue
db.add(
StudyMonitoringStrategy(
study_id=study_id,
source_setup_item_id=_normalize_text(row.id),
strategy_type=strategy_type,
detail=detail,
frequency=frequency,
enabled=bool(row.enabled),
)
)
async def _replace_center_confirms(
db: AsyncSession,
@@ -384,7 +355,6 @@ async def apply_setup_projection_on_publish(
owner_lookup=owner_lookup,
result=result,
)
await _replace_monitoring_strategies(db, study_id=study_id, setup_data=setup_data, result=result)
await _replace_center_confirms(db, study_id=study_id, setup_data=setup_data, site_map=site_map, result=result)
result.site_skipped_count = len(result.skipped_items)