Sync LMS backend source
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
INSERT INTO "users" ("id", "email", "name", "auth_role", "primary_organization_name", "createdAt", "updatedAt")
|
||||
VALUES (gen_random_uuid(), 'system@autonomystudio.local', 'Autonomy Studio', 'SYSTEM', 'Autonomy Studio', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT ("email") DO UPDATE
|
||||
SET "name" = EXCLUDED."name",
|
||||
"auth_role" = EXCLUDED."auth_role",
|
||||
"primary_organization_name" = EXCLUDED."primary_organization_name",
|
||||
"updatedAt" = CURRENT_TIMESTAMP;
|
||||
|
||||
WITH teacher AS (
|
||||
SELECT "id" FROM "users" WHERE "email" = 'system@autonomystudio.local'
|
||||
)
|
||||
INSERT INTO "courses" ("slug", "title", "subtitle", "description", "organization_name", "teacher_id", "is_active", "updated_at")
|
||||
SELECT
|
||||
'autonomy-studio-lms-guide',
|
||||
'NAV2 알아보기',
|
||||
'처음 사용하는 수강생을 위한 짧은 체험 강좌',
|
||||
'강좌 배정 전 신규 사용자가 LMS 화면 흐름을 빠르게 익힐 수 있는 공통 체험 강좌입니다. NAV2 개념을 예시로 커리큘럼 확인, 학습단계 열람, 질의응답 사용법만 간단히 안내합니다.',
|
||||
'Autonomy Studio',
|
||||
teacher."id",
|
||||
true,
|
||||
CURRENT_TIMESTAMP
|
||||
FROM teacher
|
||||
ON CONFLICT ("slug") DO UPDATE
|
||||
SET "title" = EXCLUDED."title",
|
||||
"subtitle" = EXCLUDED."subtitle",
|
||||
"description" = EXCLUDED."description",
|
||||
"organization_name" = EXCLUDED."organization_name",
|
||||
"teacher_id" = EXCLUDED."teacher_id",
|
||||
"is_active" = true,
|
||||
"updated_at" = CURRENT_TIMESTAMP;
|
||||
|
||||
WITH course AS (
|
||||
SELECT "id" FROM "courses" WHERE "slug" = 'autonomy-studio-lms-guide'
|
||||
)
|
||||
INSERT INTO "course_weeks" (
|
||||
"course_id",
|
||||
"week",
|
||||
"title",
|
||||
"tags",
|
||||
"progress",
|
||||
"state",
|
||||
"duration",
|
||||
"github",
|
||||
"overview",
|
||||
"deliverable",
|
||||
"requires_source_submission",
|
||||
"updated_at"
|
||||
)
|
||||
SELECT
|
||||
course."id",
|
||||
1,
|
||||
'NAV2 알아보기',
|
||||
ARRAY['NAV2','진행중']::TEXT[],
|
||||
0,
|
||||
'current',
|
||||
'15분',
|
||||
'제출 없음',
|
||||
'NAV2가 어떤 역할을 하는지 간단히 살펴보고, LMS에서 강좌 내용과 학습단계, 질문 기능을 어떻게 사용하는지 확인합니다.',
|
||||
'이 강좌는 체험용이므로 별도 제출은 없습니다. 실제 수업 강좌가 배정되면 해당 강좌가 우선 표시됩니다.',
|
||||
false,
|
||||
CURRENT_TIMESTAMP
|
||||
FROM course
|
||||
ON CONFLICT ("course_id", "week") DO UPDATE
|
||||
SET "title" = EXCLUDED."title",
|
||||
"tags" = EXCLUDED."tags",
|
||||
"progress" = EXCLUDED."progress",
|
||||
"state" = EXCLUDED."state",
|
||||
"duration" = EXCLUDED."duration",
|
||||
"github" = EXCLUDED."github",
|
||||
"overview" = EXCLUDED."overview",
|
||||
"deliverable" = EXCLUDED."deliverable",
|
||||
"requires_source_submission" = false,
|
||||
"updated_at" = CURRENT_TIMESTAMP;
|
||||
|
||||
DELETE FROM "course_weeks"
|
||||
USING "courses"
|
||||
WHERE "course_weeks"."course_id" = "courses"."id"
|
||||
AND "courses"."slug" = 'autonomy-studio-lms-guide'
|
||||
AND "course_weeks"."week" <> 1;
|
||||
|
||||
DELETE FROM "course_week_practices"
|
||||
USING "course_weeks", "courses"
|
||||
WHERE "course_week_practices"."week_id" = "course_weeks"."id"
|
||||
AND "course_weeks"."course_id" = "courses"."id"
|
||||
AND "courses"."slug" = 'autonomy-studio-lms-guide';
|
||||
|
||||
DELETE FROM "course_week_topics"
|
||||
USING "course_weeks", "courses"
|
||||
WHERE "course_week_topics"."week_id" = "course_weeks"."id"
|
||||
AND "course_weeks"."course_id" = "courses"."id"
|
||||
AND "courses"."slug" = 'autonomy-studio-lms-guide';
|
||||
|
||||
WITH week1 AS (
|
||||
SELECT w."id" AS week_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_topics" ("week_id", "sort_order", "title", "detail")
|
||||
SELECT week1.week_id, data.sort_order, data.title, data.detail
|
||||
FROM week1
|
||||
CROSS JOIN (
|
||||
VALUES
|
||||
(1, 'NAV2란 무엇인가', 'NAV2는 ROS 2 기반 로봇 내비게이션 스택입니다. 지도, 위치추정, 경로계획, 제어 흐름이 어떻게 이어지는지 큰 그림을 확인합니다.'),
|
||||
(2, 'LMS에서 강좌 읽기', '주차 카드와 학습단계를 열어 강의 내용, 참고 자료, 진행 상태를 확인하는 방법을 익힙니다.'),
|
||||
(3, '질문 기능 사용하기', '학습 중 궁금한 내용을 AI 또는 강사에게 질문하고, 답변을 확인하는 기본 흐름을 살펴봅니다.')
|
||||
) AS data(sort_order, title, detail);
|
||||
|
||||
WITH week1 AS (
|
||||
SELECT w."id" AS week_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_practices" ("week_id", "sort_order", "title", "description")
|
||||
SELECT week1.week_id, data.sort_order, data.title, data.description
|
||||
FROM week1
|
||||
CROSS JOIN (
|
||||
VALUES
|
||||
(1, '화면 둘러보기', '커리큘럼 화면에서 주차 카드, 학습단계, 강의 내용을 차례로 확인합니다.'),
|
||||
(2, '질문 남겨보기', '질의응답 화면에서 NAV2 관련 질문을 입력하는 위치를 확인합니다.')
|
||||
) AS data(sort_order, title, description);
|
||||
|
||||
WITH guide AS (
|
||||
SELECT "id" FROM "courses" WHERE "slug" = 'autonomy-studio-lms-guide'
|
||||
),
|
||||
local_platform AS (
|
||||
SELECT "id" FROM "platforms" WHERE "platform_key" = 'futuredrive-local-pc'
|
||||
)
|
||||
INSERT INTO "course_platforms" ("course_id", "platform_id", "status", "action", "state", "sort_order", "updated_at")
|
||||
SELECT guide."id", local_platform."id", '사용 가능', '연결', 'ready', 1, CURRENT_TIMESTAMP
|
||||
FROM guide
|
||||
CROSS JOIN local_platform
|
||||
ON CONFLICT ("course_id", "platform_id") DO UPDATE
|
||||
SET "status" = EXCLUDED."status",
|
||||
"action" = EXCLUDED."action",
|
||||
"state" = EXCLUDED."state",
|
||||
"sort_order" = EXCLUDED."sort_order",
|
||||
"updated_at" = CURRENT_TIMESTAMP;
|
||||
Reference in New Issue
Block a user