Files
2026-07-07 16:09:12 +09:00

140 lines
5.4 KiB
SQL

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;