patch curriculum..

This commit is contained in:
2026-08-07 10:27:19 +09:00
parent f8ccd8b0a3
commit 196ba51ec6
9 changed files with 353 additions and 199 deletions
@@ -0,0 +1,106 @@
WITH guide_week AS (
SELECT w."id"
FROM "course_weeks" w
JOIN "courses" c ON c."id" = w."course_id"
WHERE c."slug" = 'autonomy-studio-lms-guide'
AND w."week" = 1
), modules AS (
SELECT *
FROM (
VALUES
(
1,
'Simulator',
'NAV2-Gazebo',
'[lms-nav2-gazebo-simulator]nav2-simulator_v1.0.0_ws',
'http://192.168.0.242:3000/templates/lms-nav2-gazebo-simulator.git',
'future-nav2-gazebo:humble',
'["gui:=false"]'::JSONB,
'[{"url":"https://pub-ca72c40797144462bdb7d200c215d361.r2.dev/studio-artifacts/modules/lms-nav2-gazebo-simulator/1.0.0/prebuilt/latest/lms-nav2-gazebo-simulator-build-install.tar.zst","type":"build-install","fileName":"lms-nav2-gazebo-simulator-build-install.tar.zst","required":false,"extractPath":"."}]'::JSONB
),
(
2,
'Vehicle',
'NAV2-TurtleBot3Burger',
'[lms-nav2-gazebo-vehicle]nav2-vehicle_v1.0.0_ws',
'http://192.168.0.242:3000/templates/lms-nav2-gazebo-vehicle.git',
'future-nav2-gazebo:humble',
'["sim_mode:=true","platform:=turtlebot3","level:=2d"]'::JSONB,
'[{"url":"https://pub-ca72c40797144462bdb7d200c215d361.r2.dev/studio-artifacts/modules/lms-nav2-gazebo-vehicle/1.0.0/prebuilt/latest/lms-nav2-gazebo-vehicle-build-install.tar.zst","type":"build-install","fileName":"lms-nav2-gazebo-vehicle-build-install.tar.zst","required":false,"extractPath":"."}]'::JSONB
),
(
3,
'Localization',
'NAV2-SLAM',
'[lms-nav2-gazebo-slam]nav2-slam_v1.0.0_ws',
'http://192.168.0.242:3000/templates/lms-nav2-gazebo-slam.git',
'future-nav2-gazebo:humble',
'[]'::JSONB,
'[{"url":"https://pub-ca72c40797144462bdb7d200c215d361.r2.dev/studio-artifacts/modules/lms-nav2-gazebo-slam/1.0.0/prebuilt/latest/lms-nav2-gazebo-slam-build-install.tar.zst","type":"build-install","fileName":"lms-nav2-gazebo-slam-build-install.tar.zst","required":false,"extractPath":"."}]'::JSONB
)
) AS value("sort_order", "category", "name", "folder_name", "template_repository_url", "docker_image", "default_parameters", "prebuilt_artifacts")
)
INSERT INTO "course_week_modules" (
"week_id",
"sort_order",
"category",
"name",
"folder_name",
"template_repository_url",
"source_type",
"prebuilt_artifacts",
"default_parameters",
"docker_image",
"updated_at"
)
SELECT
guide_week."id",
modules."sort_order",
modules."category",
modules."name",
modules."folder_name",
modules."template_repository_url",
'GIT',
modules."prebuilt_artifacts",
modules."default_parameters",
modules."docker_image",
CURRENT_TIMESTAMP
FROM guide_week
CROSS JOIN modules
ON CONFLICT ("week_id", "folder_name") DO UPDATE
SET "category" = EXCLUDED."category",
"name" = EXCLUDED."name",
"template_repository_url" = EXCLUDED."template_repository_url",
"source_type" = EXCLUDED."source_type",
"prebuilt_artifacts" = EXCLUDED."prebuilt_artifacts",
"default_parameters" = EXCLUDED."default_parameters",
"docker_image" = EXCLUDED."docker_image",
"updated_at" = CURRENT_TIMESTAMP;
DELETE FROM "course_week_maps" maps
USING "courses" course
WHERE maps."course_id" = course."id"
AND course."slug" = 'autonomy-studio-lms-guide'
AND maps."week" = 1
AND maps."map_key" <> 'nav2-turtlebot3-world';
INSERT INTO "course_week_maps" (
"id",
"course_id",
"week",
"map_key",
"sort_order",
"updated_at"
)
SELECT
gen_random_uuid(),
course."id",
1,
'nav2-turtlebot3-world',
0,
CURRENT_TIMESTAMP
FROM "courses" course
WHERE course."slug" = 'autonomy-studio-lms-guide'
ON CONFLICT ("course_id", "week", "map_key") DO UPDATE
SET "sort_order" = EXCLUDED."sort_order",
"updated_at" = CURRENT_TIMESTAMP;
@@ -0,0 +1,2 @@
DROP TABLE IF EXISTS "course_week_visualization_platforms";
DROP TABLE IF EXISTS "visualization_platforms";
@@ -0,0 +1,53 @@
UPDATE "course_week_modules" modules
SET "sort_order" = 4,
"updated_at" = CURRENT_TIMESTAMP
FROM "course_weeks" week, "courses" course
WHERE modules."week_id" = week."id"
AND week."course_id" = course."id"
AND course."slug" = 'autonomy-studio-lms-guide'
AND week."week" = 1
AND modules."folder_name" = '[lms-nav2-gazebo-slam]nav2-slam_v1.0.0_ws';
WITH guide_week AS (
SELECT w."id"
FROM "course_weeks" w
JOIN "courses" c ON c."id" = w."course_id"
WHERE c."slug" = 'autonomy-studio-lms-guide'
AND w."week" = 1
)
INSERT INTO "course_week_modules" (
"week_id",
"sort_order",
"category",
"name",
"folder_name",
"template_repository_url",
"source_type",
"prebuilt_artifacts",
"default_parameters",
"docker_image",
"updated_at"
)
SELECT
guide_week."id",
3,
'Perception',
'NAV2-Perception',
'[lms-nav2-gazebo-perception]nav2-perception_v1.0.0_ws',
'http://192.168.0.242:3000/templates/lms-nav2-gazebo-perception.git',
'GIT',
'[{"url":"https://pub-ca72c40797144462bdb7d200c215d361.r2.dev/studio-artifacts/modules/lms-nav2-gazebo-perception/1.0.0/prebuilt/latest/lms-nav2-gazebo-perception-build-install.tar.zst","type":"build-install","fileName":"lms-nav2-gazebo-perception-build-install.tar.zst","required":false,"extractPath":"."}]'::JSONB,
'["sim_mode:=true"]'::JSONB,
'future-nav2-gazebo:humble',
CURRENT_TIMESTAMP
FROM guide_week
ON CONFLICT ("week_id", "folder_name") DO UPDATE
SET "sort_order" = EXCLUDED."sort_order",
"category" = EXCLUDED."category",
"name" = EXCLUDED."name",
"template_repository_url" = EXCLUDED."template_repository_url",
"source_type" = EXCLUDED."source_type",
"prebuilt_artifacts" = EXCLUDED."prebuilt_artifacts",
"default_parameters" = EXCLUDED."default_parameters",
"docker_image" = EXCLUDED."docker_image",
"updated_at" = CURRENT_TIMESTAMP;
-34
View File
@@ -162,7 +162,6 @@ model Course {
instructorCurriculumSettings InstructorCurriculumSetting[]
instructorCurriculumWeekOverrides InstructorCurriculumWeekOverride[]
environmentProfiles CourseEnvironmentProfile[]
visualizationSelections CourseWeekVisualizationPlatform[]
maps CourseMap[]
weekMaps CourseWeekMap[]
savedMaps StudentSavedMap[]
@@ -195,39 +194,6 @@ model CourseEnvironmentProfile {
@@map("course_environment_profiles")
}
model VisualizationPlatform {
key String @id @map("platform_key")
type String @unique
displayName String @map("display_name")
description String?
defaultConfig Json @map("default_config")
sortOrder Int @default(0) @map("sort_order")
enabled Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
courseWeekSelections CourseWeekVisualizationPlatform[]
@@index([enabled, sortOrder])
@@map("visualization_platforms")
}
model CourseWeekVisualizationPlatform {
id String @id @default(uuid()) @db.Uuid
courseId String @map("course_id") @db.Uuid
week Int
platformKey String @map("platform_key")
enabled Boolean @default(true)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
platform VisualizationPlatform @relation(fields: [platformKey], references: [key], onDelete: Cascade)
@@unique([courseId, week, platformKey])
@@index([courseId, week])
@@index([platformKey])
@@map("course_week_visualization_platforms")
}
model CourseMap {
id String @id @default(uuid()) @db.Uuid
courseId String @map("course_id") @db.Uuid