feat(htykc): clazz 命名迁移、消课点名与 Diesel 迁移
将课程相关表与 API 从 kecheng 迁至 clazz;新增消课/点名迁移;htyws 路由同步;工作区依赖 patch AuthCore。 Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
DROP TABLE IF EXISTS kecheng_attendance;
|
||||
DROP TABLE IF EXISTS hour_transaction;
|
||||
DROP TABLE IF EXISTS course_hour_package;
|
||||
@@ -0,0 +1,56 @@
|
||||
-- 消课 / 课时包 / 流水(MVP 表结构;排课外键列统一为 kecheng_id)
|
||||
|
||||
CREATE TABLE course_hour_package (
|
||||
id VARCHAR NOT NULL PRIMARY KEY,
|
||||
student_id VARCHAR NOT NULL,
|
||||
ws_course_id VARCHAR,
|
||||
total_hours DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
used_hours DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
remaining_hours DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
expire_date TIMESTAMP,
|
||||
package_status VARCHAR NOT NULL DEFAULT 'ACTIVE',
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
created_by VARCHAR,
|
||||
updated_at TIMESTAMP,
|
||||
is_delete BOOLEAN DEFAULT FALSE
|
||||
);
|
||||
|
||||
COMMENT ON TABLE course_hour_package IS '学员课时包(教学域 course.id 可选记在 ws_course_id)';
|
||||
COMMENT ON COLUMN course_hour_package.ws_course_id IS '可选:关联 htyws.course.id,跨库不加 FK';
|
||||
|
||||
CREATE INDEX idx_course_hour_package_student ON course_hour_package (student_id);
|
||||
|
||||
CREATE TABLE hour_transaction (
|
||||
id VARCHAR NOT NULL PRIMARY KEY,
|
||||
student_id VARCHAR NOT NULL,
|
||||
package_id VARCHAR NOT NULL REFERENCES course_hour_package (id),
|
||||
amount DOUBLE PRECISION NOT NULL,
|
||||
transaction_type VARCHAR NOT NULL,
|
||||
kecheng_id VARCHAR REFERENCES kecheng (id),
|
||||
operator_hty_id VARCHAR,
|
||||
remark VARCHAR,
|
||||
created_at TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
COMMENT ON TABLE hour_transaction IS '课时变动流水;消课关联 kecheng_id';
|
||||
CREATE INDEX idx_hour_transaction_student ON hour_transaction (student_id);
|
||||
CREATE INDEX idx_hour_transaction_package ON hour_transaction (package_id);
|
||||
CREATE INDEX idx_hour_transaction_kecheng ON hour_transaction (kecheng_id);
|
||||
|
||||
CREATE TABLE kecheng_attendance (
|
||||
id VARCHAR NOT NULL PRIMARY KEY,
|
||||
kecheng_id VARCHAR NOT NULL REFERENCES kecheng (id),
|
||||
student_id VARCHAR NOT NULL,
|
||||
course_hour_package_id VARCHAR REFERENCES course_hour_package (id),
|
||||
status VARCHAR NOT NULL,
|
||||
deducted_hours DOUBLE PRECISION NOT NULL DEFAULT 0,
|
||||
sign_time TIMESTAMP NOT NULL,
|
||||
sign_method VARCHAR,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
created_by VARCHAR,
|
||||
is_delete BOOLEAN DEFAULT FALSE
|
||||
);
|
||||
|
||||
COMMENT ON TABLE kecheng_attendance IS '排课消课记录;status 如 NORMAL/LEAVE/ABSENT/MANUAL';
|
||||
CREATE INDEX idx_kecheng_attendance_kecheng ON kecheng_attendance (kecheng_id);
|
||||
CREATE INDEX idx_kecheng_attendance_student ON kecheng_attendance (student_id);
|
||||
@@ -0,0 +1,18 @@
|
||||
ALTER INDEX IF EXISTS idx_hour_transaction_clazz RENAME TO idx_hour_transaction_kecheng;
|
||||
ALTER INDEX IF EXISTS idx_clazz_attendance_clazz RENAME TO idx_kecheng_attendance_kecheng;
|
||||
|
||||
ALTER TABLE clazz_attendance RENAME TO kecheng_attendance;
|
||||
ALTER TABLE kecheng_attendance RENAME COLUMN clazz_id TO kecheng_id;
|
||||
|
||||
ALTER TABLE hour_transaction RENAME COLUMN clazz_id TO kecheng_id;
|
||||
|
||||
ALTER TABLE clazz_repeat RENAME TO kecheng_repeat;
|
||||
ALTER TABLE kecheng_repeat RENAME COLUMN clazz_id TO kecheng_id;
|
||||
ALTER TABLE kecheng_repeat RENAME COLUMN latest_clazz_created_at TO latest_kc_created_at;
|
||||
|
||||
ALTER TABLE clazz RENAME COLUMN class_name TO kecheng_name;
|
||||
ALTER TABLE clazz RENAME COLUMN class_status TO kecheng_status;
|
||||
ALTER TABLE clazz RENAME COLUMN class_desc TO kecheng_desc;
|
||||
ALTER TABLE clazz RENAME COLUMN class_type TO kecheng_type;
|
||||
|
||||
ALTER TABLE clazz RENAME TO kecheng;
|
||||
@@ -0,0 +1,34 @@
|
||||
-- 排课域:kecheng → 表 clazz(避免关键字 class);列 kecheng_* → class_*;外键列 *kecheng_id → clazz_id
|
||||
|
||||
ALTER TABLE kecheng RENAME TO clazz;
|
||||
|
||||
ALTER TABLE clazz RENAME COLUMN kecheng_name TO class_name;
|
||||
ALTER TABLE clazz RENAME COLUMN kecheng_status TO class_status;
|
||||
ALTER TABLE clazz RENAME COLUMN kecheng_desc TO class_desc;
|
||||
ALTER TABLE clazz RENAME COLUMN kecheng_type TO class_type;
|
||||
|
||||
ALTER TABLE kecheng_repeat RENAME COLUMN kecheng_id TO clazz_id;
|
||||
ALTER TABLE kecheng_repeat RENAME COLUMN latest_kc_created_at TO latest_clazz_created_at;
|
||||
|
||||
ALTER TABLE kecheng_repeat RENAME TO clazz_repeat;
|
||||
|
||||
ALTER TABLE hour_transaction RENAME COLUMN kecheng_id TO clazz_id;
|
||||
|
||||
ALTER TABLE kecheng_attendance RENAME COLUMN kecheng_id TO clazz_id;
|
||||
|
||||
ALTER TABLE kecheng_attendance RENAME TO clazz_attendance;
|
||||
|
||||
-- 索引重命名(若不存在则跳过由部署侧处理)
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM pg_class WHERE relname = 'idx_hour_transaction_kecheng') THEN
|
||||
ALTER INDEX idx_hour_transaction_kecheng RENAME TO idx_hour_transaction_clazz;
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM pg_class WHERE relname = 'idx_kecheng_attendance_kecheng') THEN
|
||||
ALTER INDEX idx_kecheng_attendance_kecheng RENAME TO idx_clazz_attendance_clazz;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
COMMENT ON TABLE clazz IS '日历排课(一次课节);原表 kecheng';
|
||||
COMMENT ON TABLE clazz_repeat IS '重复排课规则;原表 kecheng_repeat';
|
||||
COMMENT ON TABLE clazz_attendance IS '排课点名/消课;原表 kecheng_attendance';
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
ALTER TABLE clazz RENAME COLUMN clazz_name TO class_name;
|
||||
ALTER TABLE clazz RENAME COLUMN clazz_status TO class_status;
|
||||
ALTER TABLE clazz RENAME COLUMN clazz_desc TO class_desc;
|
||||
ALTER TABLE clazz RENAME COLUMN clazz_type TO class_type;
|
||||
@@ -0,0 +1,5 @@
|
||||
-- clazz 表:列 class_* → clazz_*(与表名语义一致)
|
||||
ALTER TABLE clazz RENAME COLUMN class_name TO clazz_name;
|
||||
ALTER TABLE clazz RENAME COLUMN class_status TO clazz_status;
|
||||
ALTER TABLE clazz RENAME COLUMN class_desc TO clazz_desc;
|
||||
ALTER TABLE clazz RENAME COLUMN class_type TO clazz_type;
|
||||
Reference in New Issue
Block a user