| New file |
| | |
| | | # -*- coding: utf-8 -*- |
| | | from pathlib import Path |
| | | |
| | | SYS = [ |
| | | ("f_id", "varchar(50)", "NOT NULL", "主é®"), |
| | | ("f_tenant_id", "varchar(50)", None, "ç§æ·"), |
| | | ] |
| | | SYS_AUDIT = [ |
| | | ("f_creator_user_id", "varchar(50)", None, "å建人"), |
| | | ("f_creator_time", "timestamp", None, "å建æ¶é´"), |
| | | ("f_last_modify_user_id", "varchar(50)", None, "ä¿®æ¹äºº"), |
| | | ("f_last_modify_time", "timestamp", None, "ä¿®æ¹æ¶é´"), |
| | | ("f_delete_mark", "int", "NOT NULL DEFAULT 0", "å 餿 è®° 0æ£å¸¸ 1å é¤"), |
| | | ("f_delete_user_id", "varchar(50)", None, "å é¤äºº"), |
| | | ("f_delete_time", "timestamp", None, "å 餿¶é´"), |
| | | ] |
| | | SYS_FLOW = [ |
| | | ("f_flow_id", "varchar(50)", None, "æµç¨æ¨¡æ¿ID"), |
| | | ("f_flow_task_id", "varchar(50)", None, "æµç¨ä»»å¡ID"), |
| | | ("f_flow_state", "int", None, "æµç¨ç¶æ"), |
| | | ] |
| | | CHILD_FK = ("f_foreign_id", "varchar(50)", "NOT NULL", "主表f_id") |
| | | |
| | | def col(name, typ, extra=None, cmt=""): |
| | | return (name, typ, extra, cmt) |
| | | |
| | | tables = [] |
| | | |
| | | def add(name, comment, cols, indexes=None, child=False, flow=False, delete_user=True): |
| | | fields = list(SYS) |
| | | if child: |
| | | fields.append(CHILD_FK) |
| | | fields.extend(cols) |
| | | if flow: |
| | | fields.extend(SYS_FLOW) |
| | | audit = list(SYS_AUDIT) |
| | | if not delete_user: |
| | | audit = [x for x in audit if x[0] not in ("f_delete_user_id", "f_delete_time")] |
| | | fields.extend(audit) |
| | | tables.append({ |
| | | "name": name, |
| | | "comment": comment, |
| | | "cols": fields, |
| | | "indexes": indexes or [], |
| | | "child": child, |
| | | }) |
| | | |
| | | # ===== 1 åºç¡è®¾ç½® ===== |
| | | add("tms_place", "å¹è®å°ç¹ãå¨çº¿å¦ä¹ ä»»å¡å°ç¹å¯ç©ºï¼å ç¨æå°æ¶ä¸æªåæ¶ä»»å¡æ¶é´äº¤åæ ¡éªã", [ |
| | | col("place_no", "varchar(50)", "NOT NULL", "å°ç¹ç¼å·ï¼åæ®è§å A+YYYYMM+4ï¼å¦ A2026090001"), |
| | | col("place_name", "varchar(200)", "NOT NULL", "å°ç¹åç§°"), |
| | | col("place_group", "varchar(50)", None, "ç»å«/ååºï¼åå
¸ï¼åå
¬åº/ç产åº/Aåº/Båº"), |
| | | col("enabled", "varchar(20)", "NOT NULL DEFAULT '1'", "1å¯ç¨ 0åç¨"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[ |
| | | ("uk", "uk_tms_place_no", ["place_no"], True), |
| | | ("idx", "idx_tms_place_group", ["place_group", "enabled"], False), |
| | | ]) |
| | | |
| | | add("tms_trainer", "å¹è®å¸æ¡£æ¡ï¼å
³èç³»ç»ç¨æ·ï¼éå¤å½å
¥æuser_idè¯å«ï¼è´¦å·æ³¨éåèªå¨åºå¼ã", [ |
| | | col("archive_no", "varchar(50)", None, "æ¡£æ¡ç¼å· AR+YYYY+4ï¼å¯ä¸ä¸ªäººå¹è®æ¡£æ¡å
±ç¨"), |
| | | col("user_id", "varchar(50)", "NOT NULL", "ç³»ç»ç¨æ·ID"), |
| | | col("trainer_name", "varchar(100)", None, "å§åï¼åä½ï¼ä¾¿äºå表ï¼"), |
| | | col("dept_id", "varchar(50)", None, "é¨é¨"), |
| | | col("post_id", "varchar(50)", None, "å²ä½"), |
| | | col("school", "varchar(200)", None, "æ¯ä¸é¢æ ¡"), |
| | | col("education", "varchar(50)", None, "å¦å"), |
| | | col("major", "varchar(100)", None, "ä¸ä¸"), |
| | | col("tech_title", "varchar(100)", None, "ææ¯èç§°"), |
| | | col("hire_date", "date", None, "å
¥èæ¶é´"), |
| | | col("license", "varchar(200)", None, "æ§ä¸è¯ä¹¦"), |
| | | col("work_years", "varchar(50)", None, "å·¥ä½å¹´é"), |
| | | col("trainer_level", "varchar(50)", None, "å¹è®å¸çº§å«"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'valid'", "validæææå
/ revokedå·²æ¤é"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[ |
| | | ("uk", "uk_tms_trainer_user", ["user_id"], True), |
| | | ("uk", "uk_tms_trainer_no", ["archive_no"], True), |
| | | ("idx", "idx_tms_trainer_status", ["biz_status"], False), |
| | | ]) |
| | | |
| | | add("tms_trainer_work", "å¹è®å¸ä¸ªäººå·¥ä½ç»åå表", [ |
| | | col("sort_no", "int", None, "åºå·"), |
| | | col("hire_date", "date", None, "å
¥èæ¶é´"), |
| | | col("leave_date", "date", None, "ç¦»èæ¶é´"), |
| | | col("company_name", "varchar(200)", None, "å
¬å¸åç§°"), |
| | | col("post_name", "varchar(100)", None, "ä»»èå²ä½"), |
| | | col("leave_reason", "varchar(200)", None, "离èåå "), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_trainer_work_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_trainer_exp", "å¹è®å¸ä¸ªäººå¹è®ç»åå表", [ |
| | | col("sort_no", "int", None, "åºå·"), |
| | | col("train_date", "date", None, "å¹è®æ¶é´"), |
| | | col("org_name", "varchar(200)", None, "å¹è®æºæ"), |
| | | col("cert_name", "varchar(200)", None, "å¹è®è¯ä¹¦"), |
| | | col("cert_file", "text", None, "è¯ä¹¦éä»¶"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_trainer_exp_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_admin_auth", "å¹è®ç®¡çåè·¨é¨é¨ææãå°æåä¸ä¸ªææé管çå/å¹è®å¸ã", [ |
| | | col("admin_user_id", "varchar(50)", "NOT NULL", "å¹è®ç®¡çå"), |
| | | col("scope_dept_id", "text", "NOT NULL", "管çèå´ï¼ç»ç»å¤é"), |
| | | col("include_child", "varchar(10)", "NOT NULL DEFAULT '1'", "æ¯å¦å
å«ä¸çº§é¨é¨ 1æ¯ 0å¦"), |
| | | col("registrar_id", "varchar(50)", None, "ç»è®°äºº"), |
| | | col("register_date", "date", None, "ç»è®°æ¥æ"), |
| | | col("expire_date", "date", None, "ææå°ææ¥ï¼å¯ç©ºè¡¨ç¤ºé¿æ"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'valid'", "validææ / revokedåºå¼"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[("idx", "idx_tms_admin_auth_user", ["admin_user_id", "biz_status"], False)]) |
| | | |
| | | add("tms_train_mode", "å¹è®æ¹å¼é
ç½®ï¼å«ç¾å°è§åï¼ä¸ä»
æ¯åå
¸ï¼", [ |
| | | col("mode_code", "varchar(50)", "NOT NULL", "ç¼ç ï¼onsite/practice/online"), |
| | | col("mode_name", "varchar(100)", "NOT NULL", "åç§°ï¼éä¸æè¯¾/æä½æè¯¾/å¨çº¿å¦ä¹ "), |
| | | col("sign_rule", "varchar(20)", "NOT NULL DEFAULT 'both'", "scanä»
æ«ç / bothæ«ç +å¨çº¿"), |
| | | col("allow_guest_sign", "varchar(10)", "NOT NULL DEFAULT '0'", "å
许ååå¤ç¾å°ï¼éä¸æè¯¾=1"), |
| | | col("same_day_required", "varchar(10)", "NOT NULL DEFAULT '0'", "å¼å§ç»æå¿
é¡»åä¸å¤©ï¼éä¸/æä½=1"), |
| | | col("place_required", "varchar(10)", "NOT NULL DEFAULT '1'", "å°ç¹å¿
å¡«ï¼å¨çº¿å¦ä¹ =0"), |
| | | col("sort_no", "int", None, "æåº"), |
| | | col("enabled", "varchar(10)", "NOT NULL DEFAULT '1'", "å¯ç¨"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[("uk", "uk_tms_train_mode_code", ["mode_code"], True)]) |
| | | |
| | | add("tms_sign_mode", "ç¾å°æ¹å¼ï¼APPæ«ç / 微信æ«ç / å¨çº¿ç¾å°", [ |
| | | col("mode_code", "varchar(50)", "NOT NULL", "ç¼ç ï¼app_scan/wx_scan/online"), |
| | | col("mode_name", "varchar(100)", "NOT NULL", "åç§°"), |
| | | col("tip_seconds", "int", "NOT NULL DEFAULT 30", "æå¹è®è¦ç¹æ¶å¼ºå¶é
è¯»ç§æ°ï¼ITå¯è°"), |
| | | col("match_roster", "varchar(10)", "NOT NULL DEFAULT '1'", "æ¯å¦å¿
é¡»å¹é
å¹è®å¯¹è±¡åå"), |
| | | col("enabled", "varchar(10)", "NOT NULL DEFAULT '1'", "å¯ç¨"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[("uk", "uk_tms_sign_mode_code", ["mode_code"], True)]) |
| | | |
| | | add("tms_eval_mode", "å¹è®ææè¯ä¼°æ¹å¼ï¼æé® / ç°åºæä½ / å¨çº¿èè¯ / æ éèæ ¸", [ |
| | | col("mode_code", "varchar(50)", "NOT NULL", "ç¼ç ï¼quiz/practice/exam/none"), |
| | | col("mode_name", "varchar(100)", "NOT NULL", "åç§°"), |
| | | col("need_paper", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦éè¦è¯å·"), |
| | | col("need_quiz", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦éè¦æé®é¢è®¾"), |
| | | col("need_practice", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦éè¦å®æè¯å"), |
| | | col("enabled", "varchar(10)", "NOT NULL DEFAULT '1'", "å¯ç¨"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[("uk", "uk_tms_eval_mode_code", ["mode_code"], True)]) |
| | | |
| | | add("tms_course", "å¹è®è¯¾ç¨ä¸»æ°æ®ï¼è®¡å/ä»»å¡å¯å¼ç¨", [ |
| | | col("course_no", "varchar(50)", None, "课ç¨ç¼å·"), |
| | | col("course_name", "varchar(200)", "NOT NULL", "课ç¨åç§°"), |
| | | col("category", "varchar(50)", None, "课ç¨åç±»"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼ç¼ç "), |
| | | col("eval_mode", "varchar(50)", None, "èæ ¸æ¹å¼ç¼ç "), |
| | | col("paper_id", "varchar(50)", None, "å
³èè¯å·"), |
| | | col("hours", "numeric(8,1)", None, "妿¶"), |
| | | col("enabled", "varchar(10)", "NOT NULL DEFAULT '1'", "å¯ç¨"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[("uk", "uk_tms_course_no", ["course_no"], True)]) |
| | | |
| | | add("tms_material", "å¹è®ææ/ä¼ä¸ç¥è¯åºãå¯ä¸ä¼ æ¬å°æå¼ç¨DMSï¼éé´æï¼ãæ¤éåä¸å¯åå¼ç¨ã", [ |
| | | col("material_no", "varchar(50)", "NOT NULL", "ææç¼å· TM+YYYYMM+4"), |
| | | col("material_name", "varchar(500)", "NOT NULL", "ææåç§°"), |
| | | col("file_type", "varchar(50)", None, "Word/PPT/Excel/PDF/è§é¢/é³é¢"), |
| | | col("apply_time", "date", None, "ç³è¯·æ¶é´"), |
| | | col("applicant_id", "varchar(50)", None, "ä¸ä¼ ç³è¯·äºº"), |
| | | col("apply_dept_id", "varchar(50)", None, "ç³è¯·äººé¨é¨"), |
| | | col("file_json", "text", None, "ææéä»¶ï¼JNPFéä»¶JSONï¼"), |
| | | col("dms_file_id", "varchar(50)", None, "å¼ç¨çDMSæä»¶ID"), |
| | | col("quote_count", "int", "NOT NULL DEFAULT 0", "被任å¡å¼ç¨æ¬¡æ°"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'valid'", "validææ / revokedå·²æ¤é"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[ |
| | | ("uk", "uk_tms_material_no", ["material_no"], True), |
| | | ("idx", "idx_tms_material_type", ["file_type", "biz_status"], False), |
| | | ]) |
| | | |
| | | # ===== 2 èè¯å¼æ ===== |
| | | add("tms_question_bank", "é¢åº", [ |
| | | col("bank_name", "varchar(200)", "NOT NULL", "é¢åºåç§°"), |
| | | col("question_count", "int", "NOT NULL DEFAULT 0", "è¯é¢æ°éï¼ç»´æ¤æ¶ååï¼"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'normal'", "normalæ£å¸¸ / invalid失æ"), |
| | | col("remark", "text", None, "夿³¨"), |
| | | ], indexes=[("idx", "idx_tms_qbank_status", ["biz_status"], False)]) |
| | | |
| | | add("tms_question", "è¯é¢ãä¿®æ¹ä¸å½±å已宿èè¯å¿«ç
§ã", [ |
| | | col("question_no", "varchar(50)", None, "è¯é¢ç¼å·ï¼å¯æµæ°´"), |
| | | col("bank_id", "varchar(50)", "NOT NULL", "æå±é¢åº tms_question_bank.f_id"), |
| | | col("question_type", "varchar(20)", "NOT NULL", "singleåé / multiå¤é / judge夿 / blank填空 / essayé®ç"), |
| | | col("difficulty", "varchar(20)", None, "easy/normal/hardï¼çé¢é»è®¤ä¸è¬"), |
| | | col("source_type", "varchar(50)", None, "è¯é¢æ¥æºï¼é»è®¤èªå½é¢"), |
| | | col("stem", "text", "NOT NULL", "é¢å¹²ï¼å¯ææ¬"), |
| | | col("analysis", "text", None, "çæ¡è§£æ/夿³¨ï¼éé¢å¯æ¾ç¤º"), |
| | | col("admin_user_id", "varchar(50)", None, "管çå"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'open'", "open弿¾ / closedä¸å¼æ¾ / invalidåºå¼"), |
| | | ], indexes=[ |
| | | ("idx", "idx_tms_question_bank", ["bank_id", "question_type", "biz_status"], False), |
| | | ]) |
| | | |
| | | add("tms_question_option", "è¯é¢é项ãåéåéä¸ï¼å¤éå¯å¤éä¸ï¼å¤æå¯åæA对Béã", [ |
| | | col("sort_no", "int", None, "åºå·"), |
| | | col("option_label", "varchar(10)", None, "A/B/C/D..."), |
| | | col("option_content", "text", None, "é项å
容"), |
| | | col("is_correct", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦æ£ç¡®çæ¡ 1æ¯ 0å¦"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_qopt_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_paper", "è¯å·ã失æè¯å·ä¸å¾åç¨äºæ°ä»»å¡ï¼æ¹å·ä¸å½±åå·²èè®°å½ã", [ |
| | | col("paper_name", "varchar(300)", "NOT NULL", "è¯å·åç§°"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'open'", "open弿¾ / closedä¸å¼æ¾ / invalid失æ"), |
| | | col("duration_min", "int", "NOT NULL DEFAULT 60", "èè¯æ¶é¿ï¼åéï¼"), |
| | | col("exam_start", "timestamp", None, "è¯å·çº§å¼èæ¶é´ï¼å¯ç©ºï¼ä»»å¡ä¸å设"), |
| | | col("exam_end", "timestamp", None, "è¯å·çº§ç»èæ¶é´ï¼å¯ç©º"), |
| | | col("score_publish_time", "timestamp", None, "æç»©å
¬å¸æ¶é´ï¼ç©º=ç«å³å
¬å¸"), |
| | | col("pass_score", "numeric(8,1)", None, "åæ ¼åæ°"), |
| | | col("total_score", "numeric(8,1)", None, "è¯å·æ»å"), |
| | | col("sort_mode", "varchar(20)", "NOT NULL DEFAULT 'paper'", "paperè¯å·èªèº«é¡ºåº / randoméæº"), |
| | | col("has_subjective", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦å«ä¸»è§é¢ï¼ç»å·æ¶åå"), |
| | | col("remark", "text", None, "夿³¨"), |
| | | ], indexes=[("idx", "idx_tms_paper_status", ["biz_status"], False)]) |
| | | |
| | | add("tms_paper_section", "è¯å·ç« èï¼å¯æé¢åå½ç±»", [ |
| | | col("section_name", "varchar(100)", None, "ç« èåï¼å¦ ä¸ãåéé¢"), |
| | | col("question_type", "varchar(20)", None, "é»è®¤é¢å"), |
| | | col("sort_no", "int", None, "æåº"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_psec_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_paper_question", "è¯å·ç»æè¯é¢ï¼å½åçæ¬ï¼ãå·²èè¯å·èµ° tms_exam_item å¿«ç
§ã", [ |
| | | col("section_id", "varchar(50)", None, "ç« èID"), |
| | | col("question_id", "varchar(50)", "NOT NULL", "è¯é¢ID"), |
| | | col("score", "numeric(8,1)", None, "æ¬é¢åå¼"), |
| | | col("sort_no", "int", None, "èªå®ä¹æåº"), |
| | | ], child=True, delete_user=False, indexes=[ |
| | | ("idx", "idx_tms_pq_fid", ["f_foreign_id"], False), |
| | | ("idx", "idx_tms_pq_qid", ["question_id"], False), |
| | | ]) |
| | | |
| | | # ===== 3 å²ä½/年度计å ===== |
| | | add("tms_post_catalog", "å²ä½å¹è®ç®å½ãæ¯æåçãåºå¼ã审æ¹éè¿å坿´åå¤å¶ã", [ |
| | | col("catalog_no", "varchar(50)", None, "ç®å½ç¼å·"), |
| | | col("post_id", "varchar(50)", "NOT NULL", "å²ä½"), |
| | | col("post_name", "varchar(100)", None, "å²ä½åç§°åä½"), |
| | | col("dept_id", "varchar(50)", None, "æå±é¨é¨"), |
| | | col("version_no", "int", "NOT NULL DEFAULT 1", "çæ¬å·ï¼åç+1"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'valid'", "validææ / revokedåºå¼"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], flow=True, indexes=[ |
| | | ("idx", "idx_tms_pcat_post", ["post_id", "biz_status"], False), |
| | | ]) |
| | | |
| | | add("tms_post_catalog_item", "å²ä½å¹è®ç®å½å
容è¡ï¼æ¯æå车å¤è¡ãæå¨æåº", [ |
| | | col("sort_no", "int", None, "顺åº"), |
| | | col("subject", "varchar(500)", None, "å¹è®å
容"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼"), |
| | | col("hours", "numeric(8,1)", None, "课æ¶"), |
| | | col("eval_mode", "varchar(50)", None, "èæ ¸æ¹å¼"), |
| | | col("material_id", "varchar(50)", None, "ææ"), |
| | | col("course_id", "varchar(50)", None, "课ç¨"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_pcati_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_post_plan", "å²ä½å¹è®è®¡åãç±ç®å½æ¨éï¼å¯çæä¸ªäººå²ä½å¹è®åå¹è®ä»»å¡ã", [ |
| | | col("plan_no", "varchar(50)", "NOT NULL", "计åç¼å· JP+YYYYMM+4ï¼å¦ JP2026090012"), |
| | | col("post_id", "varchar(50)", None, "å²ä½ç¼ç /ID"), |
| | | col("post_name", "varchar(100)", None, "å²ä½åç§°"), |
| | | col("dept_id", "varchar(50)", None, "æå±é¨é¨"), |
| | | col("plan_end_time", "date", None, "计åç»ææ¶é´ï¼å¸¦å
¥ä¸ªäººå²ä½å¹è®"), |
| | | col("post_desc", "text", None, "å²ä½æè¿°"), |
| | | col("trainees", "text", None, "å¹è®å¯¹è±¡ï¼ç¨æ·å¤é"), |
| | | col("catalog_id", "varchar(50)", None, "æ¥æºç®å½"), |
| | | col("publish_status", "varchar(20)", "NOT NULL DEFAULT 'draft'", "draftæªåå¸ / publishedå·²åå¸"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], flow=True, indexes=[ |
| | | ("uk", "uk_tms_pplan_no", ["plan_no"], True), |
| | | ("idx", "idx_tms_pplan_post", ["post_id", "publish_status"], False), |
| | | ]) |
| | | |
| | | add("tms_post_plan_item", "å²ä½å¹è®è®¡åæç»", [ |
| | | col("plan_time", "date", None, "å¹è®è®¡åæ¶é´"), |
| | | col("teacher_id", "varchar(50)", None, "å¹è®å¸"), |
| | | col("subject", "varchar(500)", None, "å¹è®å
容"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼"), |
| | | col("hours", "numeric(8,1)", None, "å¹è®è¯¾æ¶"), |
| | | col("eval_mode", "varchar(50)", None, "èæ ¸æ¹å¼"), |
| | | col("material_id", "varchar(50)", None, "ææ"), |
| | | col("task_id", "varchar(50)", None, "çæçå¹è®ä»»å¡ID"), |
| | | col("line_status", "varchar(20)", None, "pendingå¾
åå¸ / publishedå·²åå¸ / done已宿"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_pplani_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_person_post", "个人å²ä½å¹è®æ¸
åãè½¬å²æ¶å表æ è®°å·²å¹è®è¿åä¸çæä»»å¡ã", [ |
| | | col("plan_id", "varchar(50)", None, "å²ä½å¹è®è®¡åID"), |
| | | col("catalog_id", "varchar(50)", None, "ç®å½ID"), |
| | | col("user_id", "varchar(50)", "NOT NULL", "å¹è®å¯¹è±¡"), |
| | | col("post_id", "varchar(50)", None, "å²ä½"), |
| | | col("plan_end_time", "date", None, "计åç»ææ¶é´ï¼ç±è®¡å带åºï¼"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'doing'", "doingæ§è¡ä¸ / done宿 / returnedéå"), |
| | | col("person_remark", "varchar(500)", None, "ä¸ªäººå¤æ³¨"), |
| | | col("audit_remark", "varchar(500)", None, "å®¡æ ¸å¤æ³¨"), |
| | | col("approve_remark", "varchar(500)", None, "审æ¹å¤æ³¨"), |
| | | ], flow=True, indexes=[ |
| | | ("idx", "idx_tms_ppost_user", ["user_id", "biz_status"], False), |
| | | ("idx", "idx_tms_ppost_plan", ["plan_id"], False), |
| | | ]) |
| | | |
| | | add("tms_person_post_item", "个人å²ä½å¹è®æç»", [ |
| | | col("subject", "varchar(500)", None, "å¹è®å
容"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼"), |
| | | col("hours", "numeric(8,1)", None, "课æ¶"), |
| | | col("eval_mode", "varchar(50)", None, "èæ ¸æ¹å¼"), |
| | | col("already_trained", "varchar(10)", "NOT NULL DEFAULT '0'", "转å²ï¼æ¯å¦å·²å¹è®è¿ï¼æ¯åä¸çæä»»å¡"), |
| | | col("task_id", "varchar(50)", None, "çæçå¹è®ä»»å¡"), |
| | | col("line_status", "varchar(20)", None, "ç¶æ"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_pposti_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_annual_plan", "年度å¹è®è®¡åï¼å
¬å¸/é¨é¨ï¼ãåç»åçæå¹è®ä»»å¡ãæµç¨ï¼é¨é¨è´è´£äººâQAè´è´£äººã", [ |
| | | col("plan_year", "int", "NOT NULL", "年份ï¼å¶å®æ¶é»è®¤å½åå¹´+1"), |
| | | col("plan_no", "varchar(50)", "NOT NULL", "计åç¼å·ï¼å¦ 20260001"), |
| | | col("plan_type", "varchar(20)", None, "companyå
¬å¸çº§ / depté¨é¨çº§"), |
| | | col("author_id", "varchar(50)", None, "å¶å®äºº"), |
| | | col("author_dept_id", "varchar(50)", None, "å¶å®é¨é¨"), |
| | | col("author_date", "date", None, "å¶å®æ¥æ"), |
| | | col("version_no", "int", "NOT NULL DEFAULT 1", "çæ¬"), |
| | | col("dept_leader_id", "varchar(50)", None, "é¨é¨è´è´£äººï¼ç¾æ ¸å±ç¤ºï¼"), |
| | | col("qa_leader_id", "varchar(50)", None, "QAé¨è´è´£äºº"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'draft'", "draftè稿 / approving审æ¹ä¸ / approvedå·²æ¹å"), |
| | | col("remark", "text", None, "夿³¨"), |
| | | ], flow=True, indexes=[ |
| | | ("uk", "uk_tms_aplan_no", ["plan_no"], True), |
| | | ("idx", "idx_tms_aplan_year", ["plan_year", "plan_type", "author_dept_id"], False), |
| | | ]) |
| | | |
| | | add("tms_annual_plan_item", "年度å¹è®è®¡åæç»", [ |
| | | col("train_month", "varchar(6)", None, "å¹è®æä»½ YYYYMMï¼å¦ 202609"), |
| | | col("subject", "varchar(500)", None, "å¹è®å
容"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼"), |
| | | col("trainees", "text", None, "å¹è®å¯¹è±¡"), |
| | | col("hours", "numeric(8,1)", None, "å¹è®è¯¾æ¶"), |
| | | col("teacher_id", "varchar(50)", None, "å¹è®å¸"), |
| | | col("eval_mode", "varchar(50)", None, "èæ ¸æ¹å¼"), |
| | | col("course_id", "varchar(50)", None, "å¹è®è¯¾ç¨"), |
| | | col("line_status", "varchar(20)", "NOT NULL DEFAULT 'pending'", "pendingå¾
æ§è¡ / taskedå·²çæä»»å¡ / done已宿 / delayed已延æ"), |
| | | col("task_id", "varchar(50)", None, "çæçå¹è®ä»»å¡"), |
| | | ], child=True, delete_user=False, indexes=[ |
| | | ("idx", "idx_tms_aplani_fid", ["f_foreign_id"], False), |
| | | ("idx", "idx_tms_aplani_month", ["train_month"], False), |
| | | ]) |
| | | |
| | | add("tms_annual_delay", "年度å¹è®è®¡åå»¶æç³è¯·", [ |
| | | col("plan_id", "varchar(50)", "NOT NULL", "年度计åID"), |
| | | col("item_id", "varchar(50)", None, "计åæç»ID"), |
| | | col("old_month", "varchar(6)", None, "åæä»½"), |
| | | col("new_month", "varchar(6)", None, "å»¶æè³æä»½"), |
| | | col("reason", "text", None, "å»¶æåå "), |
| | | col("biz_status", "varchar(20)", None, "审æ¹ç¶æ"), |
| | | ], flow=True, indexes=[("idx", "idx_tms_adelay_plan", ["plan_id"], False)]) |
| | | |
| | | # ===== 4 å¹è®ä»»å¡ / è®°å½ ===== |
| | | add("tms_task", "å¹è®ä»»å¡ï¼æ ¸å¿ï¼ãæ¥æºï¼å²ä½è®¡å/年度计å/æä»¶çæ/临æ¶/å¤åº/åç»´æ¤ã", [ |
| | | col("task_no", "varchar(50)", "NOT NULL", "ä»»å¡ç¼å· TT+YYYYMM+4ï¼å¦ TT2026090618"), |
| | | col("category", "varchar(50)", None, "å¹è®åç±»ï¼ä¸´æ¶å¹è®/å²ä½å¹è®è®¡å/年度å¹è®è®¡å/æä»¶çæå¹è®/å¤åºå¹è®/åç»´æ¤"), |
| | | col("train_type", "varchar(50)", None, "å¹è®ç±»åï¼åè¡¨åæ®µï¼å¯ä¸å类并åï¼"), |
| | | col("source_type", "varchar(50)", None, "æ¥æºç±»åç¼ç "), |
| | | col("source_plan_no", "varchar(50)", None, "æ¥æºè®¡åç¼å·"), |
| | | col("source_id", "varchar(50)", None, "æ¥æºä¸»è¡¨ID"), |
| | | col("source_item_id", "varchar(50)", None, "æ¥æºæç»IDï¼å½æ¡£åå"), |
| | | col("subject", "text", None, "å¹è®ä¸»é¢"), |
| | | col("key_points", "text", None, "å¹è®è¦ç¹ï¼ç¾å°å强å¶é
读"), |
| | | col("material_id", "varchar(50)", None, "å¹è®ææ"), |
| | | col("material_no", "varchar(50)", None, "ææç¼å·åä½"), |
| | | col("place_id", "varchar(50)", None, "å¹è®å°ç¹"), |
| | | col("place_no", "varchar(50)", None, "å°ç¹ç¼å·åä½"), |
| | | col("place_name", "varchar(200)", None, "å°ç¹åç§°åä½"), |
| | | col("start_time", "timestamp", None, "å¹è®å¼å§æ¶é´"), |
| | | col("end_time", "timestamp", None, "å¹è®ç»ææ¶é´"), |
| | | col("close_time", "timestamp", None, "ä»»å¡å
³éæ¶é´ï¼å°è¾¾åè®°å½è¿å¾
彿¡£"), |
| | | col("paper_id", "varchar(50)", None, "è¯å·"), |
| | | col("paper_name", "varchar(300)", None, "è¯å·åç§°åä½"), |
| | | col("exam_start", "timestamp", None, "èè¯å¼å§æ¶é´"), |
| | | col("exam_end", "timestamp", None, "èè¯ç»ææ¶é´"), |
| | | col("teacher_id", "text", None, "å¹è®å¸ï¼å¯å¤é"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼"), |
| | | col("eval_mode", "varchar(50)", None, "å¹è®ææè¯ä¼°æ¹å¼/èæ ¸æ¹å¼"), |
| | | col("trainees", "text", None, "å¹è®å¯¹è±¡ï¼ç¨æ·å¤éï¼å叿¶æä¸ªäººä»»å¡"), |
| | | col("task_kind", "varchar(20)", None, "ä»»å¡ç±»åï¼newæ°å¢ / continueç»§ç»(åç»´æ¤)"), |
| | | col("prev_task_no", "varchar(50)", None, "ä¸ä¸æ¬¡å¹è®ä»»å¡ç¼å·"), |
| | | col("publish_status", "varchar(20)", "NOT NULL DEFAULT 'draft'", "draftæªåå¸ / publishedå·²åå¸ / cancelled已忶 / done已宿"), |
| | | col("publish_time", "timestamp", None, "å叿¶é´"), |
| | | col("retake_limit", "int", "NOT NULL DEFAULT 1", "ä¸åæ ¼å¯éèæ¬¡æ°"), |
| | | col("pass_score", "numeric(8,1)", None, "éè¿åæ°ï¼ç©ºåç¨è¯å·"), |
| | | col("quiz_ratio", "int", None, "æé®æ¯ä¾0-100ï¼èªå¨ç®åºæé®äººæ°"), |
| | | col("sign_rate", "int", None, "ç¾å°ç%ï¼åæ´èå°æ°"), |
| | | col("pass_rate", "int", None, "åæ ¼ç%ï¼åæ´èå°æ°"), |
| | | col("unfinished_rate", "int", None, "æªå®æç%"), |
| | | col("overdue_remind", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦é¾ææéé¨é¨é¢å¯¼"), |
| | | col("invite_flag", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦åéå¹è®é请"), |
| | | col("dms_file_id", "varchar(50)", None, "æä»¶çæèªå¨å¼å
¥çéä»¶"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], flow=True, indexes=[ |
| | | ("uk", "uk_tms_task_no", ["task_no"], True), |
| | | ("idx", "idx_tms_task_status", ["publish_status", "start_time"], False), |
| | | ("idx", "idx_tms_task_place", ["place_id", "start_time", "end_time"], False), |
| | | ("idx", "idx_tms_task_source", ["source_type", "source_id"], False), |
| | | ("idx", "idx_tms_task_teacher", ["teacher_id"], False), |
| | | ]) |
| | | |
| | | add("tms_task_file", "å¹è®ä»»å¡ææ/éä»¶æ¸
åï¼åå¸å忥å°å¹è®è®°å½", [ |
| | | col("file_no", "varchar(50)", None, "ç¼å·"), |
| | | col("file_name", "varchar(300)", None, "æä»¶åç§°"), |
| | | col("material_id", "varchar(50)", None, "æ¥æºææ"), |
| | | col("file_json", "text", None, "éä»¶"), |
| | | col("can_download", "varchar(10)", "NOT NULL DEFAULT '0'", "å¼ç¨ææé»è®¤ä¸å¯ä¸è½½æå°"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_tfile_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_task_quiz", "å¹è®ä»»å¡æé®é¢è®¾é®é¢åçæ¡ï¼ç¾å°åå¼¹åº", [ |
| | | col("sort_no", "int", None, "åºå·"), |
| | | col("question", "text", None, "é®é¢"), |
| | | col("answer", "text", None, "åèçæ¡"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_tquiz_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_person_task", "个人å¹è®ä»»å¡ãå叿¶æäººæè¡ï¼å¦å端èªå¦/ç¾å°/èè¯å
¥å£ã", [ |
| | | col("task_id", "varchar(50)", "NOT NULL", "å¹è®ä»»å¡ID"), |
| | | col("task_no", "varchar(50)", None, "ä»»å¡ç¼å·åä½"), |
| | | col("user_id", "varchar(50)", "NOT NULL", "å¹è®å¯¹è±¡"), |
| | | col("dept_id", "varchar(50)", None, "彿¶é¨é¨å¿«ç
§"), |
| | | col("hours", "numeric(8,1)", None, "妿¶"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'todo'", "todoæªå®æ / signedå·²ç¾å° / done已宿 / expiredå·²è¿æ / cancelled已忶"), |
| | | col("sign_time", "timestamp", None, "ç¾å°æ¶é´"), |
| | | col("sign_mode", "varchar(20)", None, "ç¾å°æ¹å¼"), |
| | | col("learn_seconds", "int", None, "å¨çº¿å¦ä¹ æ¶é¿ç§"), |
| | | col("exam_score", "numeric(8,1)", None, "èè¯æç»©"), |
| | | col("pass_flag", "varchar(20)", None, "passåæ ¼ / failä¸åæ ¼ / naæ éèæ ¸"), |
| | | col("guest_flag", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦ååå¤ç¾å°"), |
| | | ], indexes=[ |
| | | ("idx", "idx_tms_ptask_user", ["user_id", "biz_status"], False), |
| | | ("idx", "idx_tms_ptask_task", ["task_id"], False), |
| | | ("uk", "uk_tms_ptask_task_user", ["task_id", "user_id"], True), |
| | | ]) |
| | | |
| | | add("tms_record", "å¹è®è®°å½ãä»»å¡åå¸åçæï¼å
³éæ¶é´å°è¾¾è¿å¾
彿¡£ã", [ |
| | | col("record_no", "varchar(50)", None, "è®°å½ç¼å·ï¼é»è®¤åä»»å¡ç¼å·"), |
| | | col("task_id", "varchar(50)", "NOT NULL", "å¹è®ä»»å¡ID"), |
| | | col("task_no", "varchar(50)", None, "ä»»å¡ç¼å·"), |
| | | col("category", "varchar(50)", None, "å¹è®åç±»"), |
| | | col("subject", "text", None, "å¹è®ä¸»é¢"), |
| | | col("teacher_id", "text", None, "å¹è®å¸"), |
| | | col("train_type", "varchar(50)", None, "å¹è®ç±»å"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼"), |
| | | col("eval_mode", "varchar(50)", None, "èæ ¸æ¹å¼"), |
| | | col("start_time", "timestamp", None, "å¹è®å¼å§æ¶é´ï¼å¥ææ¨¡æ¿ææ¤ç´¢å¼çæ¬"), |
| | | col("end_time", "timestamp", None, "å¹è®ç»ææ¶é´"), |
| | | col("close_time", "timestamp", None, "å
³éæ¶é´"), |
| | | col("archive_status", "varchar(20)", "NOT NULL DEFAULT 'pending'", "pendingå¾
彿¡£ / readyå¯å½æ¡£ / archived已彿¡£ / invalidæ æ"), |
| | | col("archive_time", "timestamp", None, "彿¡£æ¶é´"), |
| | | col("archiver_id", "varchar(50)", None, "彿¡£äºº"), |
| | | col("sign_rate", "int", None, "åä¸/ç¾å°ç% åæ´èå°æ°"), |
| | | col("pass_rate", "int", None, "åæ ¼ç%"), |
| | | col("lecture_file", "text", None, "å¹è®è®²ä¹éä»¶"), |
| | | col("paper_sign_file", "text", None, "纸质ç¾å°è¡¨éä»¶"), |
| | | col("print_tpl_id", "varchar(50)", None, "æå°æ¨¡æ¿çæ¬"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[ |
| | | ("uk", "uk_tms_record_task", ["task_id"], True), |
| | | ("idx", "idx_tms_record_arch", ["archive_status", "start_time"], False), |
| | | ]) |
| | | |
| | | add("tms_record_sign", "å¹è®è®°å½ç¾å°/ç»ææç»ï¼ä¸äººä¸è¡ï¼", [ |
| | | col("user_id", "varchar(50)", "NOT NULL", "å¹è®å¯¹è±¡"), |
| | | col("user_name", "varchar(100)", None, "å§åå¿«ç
§"), |
| | | col("dept_id", "varchar(50)", None, "é¨é¨å¿«ç
§"), |
| | | col("sign_time", "timestamp", None, "ç¾å°æ¶é´"), |
| | | col("sign_mode", "varchar(20)", None, "ç¾å°æ¹å¼"), |
| | | col("guest_flag", "varchar(10)", "NOT NULL DEFAULT '0'", "ååå¤ç¾å°"), |
| | | col("result_flag", "varchar(20)", None, "passåæ ¼ / failä¸åæ ¼ / absentæªåå / naæ éèæ ¸"), |
| | | col("exam_score", "numeric(8,1)", None, "èè¯æç»©"), |
| | | col("practice_score", "numeric(8,1)", None, "宿æç»©"), |
| | | col("quiz_score", "numeric(8,1)", None, "æé®æç»©"), |
| | | col("exam_id", "varchar(50)", None, "çå·ID"), |
| | | col("judge_user_id", "varchar(50)", None, "ç»æå¤å®äººï¼å¹è®å¸ï¼"), |
| | | col("judge_time", "timestamp", None, "å¤å®æ¶é´"), |
| | | ], child=True, delete_user=False, indexes=[ |
| | | ("idx", "idx_tms_rsign_fid", ["f_foreign_id"], False), |
| | | ("idx", "idx_tms_rsign_user", ["user_id"], False), |
| | | ]) |
| | | |
| | | add("tms_record_change", "å¹è®è®°å½åæ´ï¼æ¹ç»ææ¶é´ãå¢å å¹è®äººåãå¹è®å¸åèµ·âé¨é¨é¢å¯¼ï¼é¢å¯¼å³å¹è®å¸åè·³è¿ï¼ã", [ |
| | | col("record_id", "varchar(50)", "NOT NULL", "å¹è®è®°å½ID"), |
| | | col("task_id", "varchar(50)", None, "ä»»å¡ID"), |
| | | col("change_type", "varchar(20)", None, "end_timeæ¹ç»ææ¶é´ / add_userå¢å 人å"), |
| | | col("old_end_time", "timestamp", None, "åç»ææ¶é´"), |
| | | col("new_end_time", "timestamp", None, "æ°ç»ææ¶é´"), |
| | | col("add_users", "text", None, "æ°å¢äººå"), |
| | | col("reason", "text", None, "åæ´åå "), |
| | | col("biz_status", "varchar(20)", None, "审æ¹ç¶æ"), |
| | | ], flow=True, indexes=[("idx", "idx_tms_rchg_rec", ["record_id"], False)]) |
| | | |
| | | add("tms_archive_file", "å¹è®èµæå½æ¡£ï¼çµå/纸质/å®æè®°å½åç»åï¼", [ |
| | | col("record_id", "varchar(50)", "NOT NULL", "å¹è®è®°å½ID"), |
| | | col("task_id", "varchar(50)", None, "ä»»å¡ID"), |
| | | col("archive_type", "varchar(20)", None, "electronicçµå / paper纸质 / practiceå®ææ¡£æ¡"), |
| | | col("file_json", "text", None, "彿¡£èµæ"), |
| | | col("archive_time", "timestamp", None, "彿¡£æ¶é´"), |
| | | col("archiver_id", "varchar(50)", None, "彿¡£äºº"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[("idx", "idx_tms_afile_rec", ["record_id"], False)]) |
| | | |
| | | # ===== 5 èè¯æ§è¡ ===== |
| | | add("tms_exam", "å¨çº¿èè¯çå·ãä¸ééåºå¯ç»èï¼æäº¤å客è§é¢èªå¨è¯åï¼æä¸»è§é¢è¿é
å·ã", [ |
| | | col("task_id", "varchar(50)", "NOT NULL", "å¹è®ä»»å¡"), |
| | | col("person_task_id", "varchar(50)", None, "个人任å¡"), |
| | | col("record_id", "varchar(50)", None, "å¹è®è®°å½"), |
| | | col("paper_id", "varchar(50)", None, "彿¶è¯å·ID"), |
| | | col("paper_name", "varchar(300)", None, "è¯å·åç§°å¿«ç
§"), |
| | | col("user_id", "varchar(50)", "NOT NULL", "èç"), |
| | | col("attempt_no", "int", "NOT NULL DEFAULT 1", "ç¬¬å æ¬¡èè¯"), |
| | | col("start_time", "timestamp", None, "å¼å§ä½ç"), |
| | | col("submit_time", "timestamp", None, "äº¤å·æ¶é´"), |
| | | col("duration_min", "int", None, "彿¶æ¶é¿å¿«ç
§"), |
| | | col("objective_score", "numeric(8,1)", None, "客è§é¢å¾å"), |
| | | col("subjective_score", "numeric(8,1)", None, "主è§é¢å¾å"), |
| | | col("total_score", "numeric(8,1)", None, "æ»å"), |
| | | col("pass_score", "numeric(8,1)", None, "彿¶åæ ¼åå¿«ç
§"), |
| | | col("pass_flag", "varchar(20)", None, "pass/fail"), |
| | | col("grade_status", "varchar(20)", "NOT NULL DEFAULT 'auto'", "autoæ éé
å· / pendingå¾
æ¹æ¹ / gradedå·²æ¹æ¹"), |
| | | col("grader_id", "varchar(50)", None, "é
å·èå¸"), |
| | | col("grade_time", "timestamp", None, "é
å·æ¶é´"), |
| | | col("exam_status", "varchar(20)", "NOT NULL DEFAULT 'doing'", "doingèè¯ä¸ / submittedå·²äº¤å· / cancelled已忶"), |
| | | ], indexes=[ |
| | | ("idx", "idx_tms_exam_task_user", ["task_id", "user_id", "attempt_no"], False), |
| | | ("idx", "idx_tms_exam_grade", ["grade_status"], False), |
| | | ("idx", "idx_tms_exam_user", ["user_id"], False), |
| | | ]) |
| | | |
| | | add("tms_exam_item", "çå·è¯é¢å¿«ç
§ï¼é¢ç®/é项/çæ¡/åæ°ä¿çèè¯å½æ¶ç¶æï¼åç»æ¹é¢æ¹å·ä¸å½±åã", [ |
| | | col("question_id", "varchar(50)", None, "åè¯é¢ID"), |
| | | col("question_type", "varchar(20)", None, "é¢åå¿«ç
§"), |
| | | col("stem", "text", None, "é¢å¹²å¿«ç
§"), |
| | | col("options_json", "text", None, "é项快ç
§ JSON"), |
| | | col("correct_answer", "text", None, "彿¶æ£ç¡®çæ¡"), |
| | | col("user_answer", "text", None, "èçä½ç"), |
| | | col("score", "numeric(8,1)", None, "æ¬é¢æ»¡å"), |
| | | col("got_score", "numeric(8,1)", None, "å¾å"), |
| | | col("is_subjective", "varchar(10)", "NOT NULL DEFAULT '0'", "æ¯å¦ä¸»è§é¢"), |
| | | col("analysis", "text", None, "è§£æå¿«ç
§"), |
| | | col("sort_no", "int", None, "è¯å·å
顺åº"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_eitem_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_practice", "å®æèæ ¸ä¸»è¡¨ï¼ä¿ååååå¹è®è®°å½", [ |
| | | col("task_id", "varchar(50)", "NOT NULL", "å¹è®ä»»å¡"), |
| | | col("record_id", "varchar(50)", None, "å¹è®è®°å½"), |
| | | col("teacher_id", "varchar(50)", None, "èæ ¸äºº"), |
| | | col("practice_time", "timestamp", None, "èæ ¸æ¶é´"), |
| | | col("remark", "varchar(500)", None, "夿³¨"), |
| | | ], indexes=[("idx", "idx_tms_prac_task", ["task_id"], False)]) |
| | | |
| | | add("tms_practice_item", "å®æèæ ¸æç»", [ |
| | | col("user_id", "varchar(50)", "NOT NULL", "å¹è®å¯¹è±¡"), |
| | | col("content", "text", None, "èæ ¸å
容"), |
| | | col("score", "numeric(8,1)", None, "åæ°"), |
| | | col("result_flag", "varchar(20)", None, "åæ ¼/ä¸åæ ¼"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_praci_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_quiz_score", "ç°åºæé®èæ ¸æåï¼ä¿ååååå¹è®è®°å½", [ |
| | | col("task_id", "varchar(50)", "NOT NULL", "å¹è®ä»»å¡"), |
| | | col("record_id", "varchar(50)", None, "å¹è®è®°å½"), |
| | | col("user_id", "varchar(50)", "NOT NULL", "å¹è®å¯¹è±¡"), |
| | | col("question", "text", None, "æé®å
容"), |
| | | col("answer", "text", None, "åç"), |
| | | col("score", "numeric(8,1)", None, "åæ°"), |
| | | col("teacher_id", "varchar(50)", None, "æé®äºº"), |
| | | col("quiz_time", "timestamp", None, "æ¶é´"), |
| | | ], indexes=[ |
| | | ("idx", "idx_tms_qscore_task", ["task_id"], False), |
| | | ("idx", "idx_tms_qscore_user", ["user_id"], False), |
| | | ]) |
| | | |
| | | # ===== 6 æ¡£æ¡ ===== |
| | | add("tms_person_file", "个人å¹è®æ¡£æ¡ãå
¥èèªå¨å»ºæ¡£ï¼ä¸äººä¸æ¡£ã", [ |
| | | col("archive_no", "varchar(50)", "NOT NULL", "æ¡£æ¡ç¼å· AR+YYYY+4"), |
| | | col("archive_date", "date", None, "建档æ¶é´"), |
| | | col("user_id", "varchar(50)", "NOT NULL", "åå·¥"), |
| | | col("user_name", "varchar(100)", None, "å§ååä½"), |
| | | col("dept_id", "varchar(50)", None, "æå±é¨é¨"), |
| | | col("hire_date", "date", None, "å
¥èæ¶é´"), |
| | | col("leave_date", "date", None, "ç¦»èæ¶é´"), |
| | | col("main_post_id", "varchar(50)", None, "主è¦å²ä½"), |
| | | col("part_post_id", "varchar(50)", None, "å
¼èå²ä½"), |
| | | col("biz_status", "varchar(20)", "NOT NULL DEFAULT 'valid'", "validå¨è / left离è"), |
| | | ], indexes=[ |
| | | ("uk", "uk_tms_pfile_user", ["user_id"], True), |
| | | ("uk", "uk_tms_pfile_no", ["archive_no"], True), |
| | | ]) |
| | | |
| | | add("tms_person_work", "个人å¹è®æ¡£æ¡-å·¥ä½å±¥å", [ |
| | | col("company_name", "varchar(200)", None, "å
¬å¸åç§°"), |
| | | col("post_name", "varchar(100)", None, "ä»»èå²ä½"), |
| | | col("hire_date", "date", None, "å
¥èæ¶é´"), |
| | | col("leave_date", "date", None, "ç¦»èæ¶é´"), |
| | | ], child=True, delete_user=False, indexes=[("idx", "idx_tms_pwork_fid", ["f_foreign_id"], False)]) |
| | | |
| | | add("tms_person_cert", "èµè´¨æä»¶/è·å¾è¯ä¹¦ãèµè´¨æä»¶ç®¡ç䏿¡£æ¡å表å
±ç¨æ¤è¡¨ã", [ |
| | | col("archive_id", "varchar(50)", None, "个人档æ¡IDï¼æ å¤é®å段æ¶ç±ä¸»ä»åå
¥f_foreign_id"), |
| | | col("user_id", "varchar(50)", None, "åå·¥ï¼å表模åç¨"), |
| | | col("cert_no", "varchar(100)", None, "è¯ä¹¦ç¼å·"), |
| | | col("cert_name", "varchar(200)", None, "è¯ä¹¦åç§°"), |
| | | col("gain_date", "date", None, "è·å¾æ¶é´"), |
| | | col("expire_date", "date", None, "æææè³"), |
| | | col("cert_file", "text", None, "è¯ä¹¦éä»¶"), |
| | | col("cert_status", "varchar(20)", None, "validææ / nearè¿ææ / invalidæ æ"), |
| | | ], child=True, indexes=[ |
| | | ("idx", "idx_tms_pcert_fid", ["f_foreign_id"], False), |
| | | ("idx", "idx_tms_pcert_user", ["user_id"], False), |
| | | ]) |
| | | |
| | | add("tms_person_train", "个人å¹è®ç®å½ï¼å½æ¡£å¿«ç
§ï¼ãè®°å½å½æ¡£ååå
¥ï¼æ»¡è¶³å®¡è®¡ã", [ |
| | | col("archive_id", "varchar(50)", "NOT NULL", "个人档æ¡ID"), |
| | | col("user_id", "varchar(50)", "NOT NULL", "åå·¥"), |
| | | col("record_id", "varchar(50)", None, "å¹è®è®°å½ID"), |
| | | col("record_no", "varchar(50)", None, "å¹è®è®°å½ç¼å·"), |
| | | col("category", "varchar(50)", None, "å¹è®ç±»å/åç±»"), |
| | | col("subject", "text", None, "å¹è®å
容"), |
| | | col("train_mode", "varchar(50)", None, "å¹è®æ¹å¼"), |
| | | col("teacher_id", "text", None, "å¹è®å¸"), |
| | | col("eval_mode", "varchar(50)", None, "èæ ¸æ¹å¼"), |
| | | col("pass_flag", "varchar(20)", None, "æ¯å¦åæ ¼"), |
| | | col("start_time", "timestamp", None, "å¹è®å¼å§æ¶é´"), |
| | | col("end_time", "timestamp", None, "å¹è®ç»ææ¶é´"), |
| | | col("hours", "numeric(8,1)", None, "妿¶"), |
| | | ], indexes=[ |
| | | ("idx", "idx_tms_ptrain_user", ["user_id"], False), |
| | | ("idx", "idx_tms_ptrain_arch", ["archive_id"], False), |
| | | ("idx", "idx_tms_ptrain_rec", ["record_id"], False), |
| | | ]) |
| | | |
| | | # ===== 7 å
¶ä»æµç¨ ===== |
| | | add("tms_out_train", "å¤åºå¹è®", [ |
| | | col("apply_no", "varchar(50)", None, "ç³è¯·åå·"), |
| | | col("applicant_id", "varchar(50)", None, "ç³è¯·äºº"), |
| | | col("apply_dept_id", "varchar(50)", None, "ç³è¯·é¨é¨"), |
| | | col("org_name", "varchar(200)", None, "å¤é¨æºæ"), |
| | | col("subject", "varchar(500)", None, "å¹è®ä¸»é¢"), |
| | | col("start_time", "timestamp", None, "å¼å§"), |
| | | col("end_time", "timestamp", None, "ç»æ"), |
| | | col("hours", "numeric(8,1)", None, "妿¶"), |
| | | col("file_json", "text", None, "èµæéä»¶"), |
| | | col("biz_status", "varchar(20)", None, "审æ¹ç¶æ"), |
| | | ], flow=True, indexes=[("uk", "uk_tms_out_no", ["apply_no"], True)]) |
| | | |
| | | add("tms_transfer_eval", "转å²äººåèæ ¸é´å®", [ |
| | | col("user_id", "varchar(50)", "NOT NULL", "转å²äººå"), |
| | | col("from_post_id", "varchar(50)", None, "åå²ä½"), |
| | | col("to_post_id", "varchar(50)", None, "æ°å²ä½"), |
| | | col("eval_result", "varchar(50)", None, "é´å®ç»è®º"), |
| | | col("remark", "text", None, "说æ"), |
| | | col("biz_status", "varchar(20)", None, "审æ¹ç¶æ"), |
| | | ], flow=True, indexes=[("idx", "idx_tms_teval_user", ["user_id"], False)]) |
| | | |
| | | add("tms_newcomer_eval", "æ°åå·¥å¹è®ææèè¯", [ |
| | | col("user_id", "varchar(50)", "NOT NULL", "æ°åå·¥"), |
| | | col("eval_result", "varchar(50)", None, "èè¯ç»è®º"), |
| | | col("remark", "text", None, "说æ"), |
| | | col("biz_status", "varchar(20)", None, "审æ¹ç¶æ"), |
| | | ], flow=True, indexes=[("idx", "idx_tms_neval_user", ["user_id"], False)]) |
| | | |
| | | add("tms_return_eval", "å¤å²åå·¥å¹è®ææèè¯", [ |
| | | col("user_id", "varchar(50)", "NOT NULL", "å¤å²åå·¥"), |
| | | col("eval_result", "varchar(50)", None, "èè¯ç»è®º"), |
| | | col("remark", "text", None, "说æ"), |
| | | col("biz_status", "varchar(20)", None, "审æ¹ç¶æ"), |
| | | ], flow=True, indexes=[("idx", "idx_tms_reval_user", ["user_id"], False)]) |
| | | |
| | | add("tms_print_template", "å¹è®è®°å½å¥ææ¨¡æ¿çæ¬ãæå¹è®å¼å§æ¶é´å¹é
çæçæ¬ã", [ |
| | | col("tpl_code", "varchar(50)", "NOT NULL", "模æ¿ç¼ç ï¼å¦ TRAIN_RECORD"), |
| | | col("version_no", "int", "NOT NULL", "çæ¬å·"), |
| | | col("effective_from", "date", "NOT NULL", "çæèµ·å§ï¼æå¹è®å¼å§æ¶é´ç´¢å¼ï¼"), |
| | | col("effective_to", "date", None, "çææªæ¢ï¼ç©º=å½å"), |
| | | col("file_json", "text", None, "æ¨¡æ¿æä»¶"), |
| | | col("enabled", "varchar(10)", "NOT NULL DEFAULT '1'", "å¯ç¨"), |
| | | ], indexes=[("idx", "idx_tms_ptpl_code", ["tpl_code", "effective_from"], False)]) |
| | | |
| | | add("tms_remind_rule", "æéè§åï¼è®¡åå°æåä¸ä¸ªæãææå°æã个人å²ä½å¹è®æ¶éç", [ |
| | | col("rule_code", "varchar(50)", "NOT NULL", "è§åç¼ç "), |
| | | col("rule_name", "varchar(100)", None, "åç§°"), |
| | | col("biz_type", "varchar(50)", None, "annual_plan/admin_auth/person_post/task_overdue"), |
| | | col("days_before", "int", "NOT NULL DEFAULT 30", "æå天æ°"), |
| | | col("notify_roles", "varchar(200)", None, "éç¥è§è²ï¼é¨é¨å¹è®ç®¡çå,å¹è®å¸,é¨é¨é¢å¯¼"), |
| | | col("enabled", "varchar(10)", "NOT NULL DEFAULT '1'", "å¯ç¨"), |
| | | ], indexes=[("uk", "uk_tms_remind_code", ["rule_code"], True)]) |
| | | |
| | | |
| | | HEADER = '''-- ============================================================================= |
| | | -- ç»æé¬ TMS å¹è®ç®¡çç³»ç» Â· PostgreSQL 18 å»ºè¡¨èæ¬ |
| | | -- éç¨ï¼JNPF 6.xï¼åæ®µé£æ ¼å¯¹é½ç°æ lims_/dms_ è¡¨ï¼ |
| | | -- æ¥æºï¼ç»æé¬TMSåè½è®¾è®¡ä¹¦ V1 + èé£ä¼çé¢å段 |
| | | -- |
| | | -- ä½¿ç¨ |
| | | -- 1) æ¨èï¼JNPFãæ°æ®å»ºæ¨¡ãæè¡¨æ¸
å建表ï¼åç»è¡¨åï¼ç³»ç»å段ä¼èªå¨å¸¦ï¼ |
| | | -- 2) æå
æ§è¡æ¬èæ¬ï¼åå°æ°æ®å»ºæ¨¡ãåæ¥æ°æ®è¡¨ã |
| | | -- |
| | | -- çº¦å® |
| | | -- f_id ä¸»é® varchar(50)ï¼å表 f_foreign_id = 主表 f_id |
| | | -- æµç¨è¡¨åå« f_flow_id / f_flow_task_id / f_flow_state |
| | | -- ç¨æ·/ç»ç»/å²ä½å JNPF IDï¼å¤é textï¼éä»¶ text(JSON) |
| | | -- ä¸å¡ç¶æåç¼ç ï¼éé¡¹ç¨ JNPF åå
¸ |
| | | -- ============================================================================= |
| | | |
| | | BEGIN; |
| | | ''' |
| | | |
| | | FOOTER = ''' |
| | | -- ============================================================================= |
| | | -- é¢ç½®æ°æ®ï¼å¹è®æ¹å¼ / ç¾å°æ¹å¼ / è¯ä¼°æ¹å¼ / æéè§åï¼ |
| | | -- ============================================================================= |
| | | INSERT INTO tms_train_mode (f_id, mode_code, mode_name, sign_rule, allow_guest_sign, same_day_required, place_required, sort_no, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_mode_onsite', 'onsite', 'éä¸æè¯¾', 'scan', '1', '1', '1', 1, '1', 0), |
| | | ('tms_mode_practice', 'practice', 'æä½æè¯¾', 'scan', '0', '1', '1', 2, '1', 0), |
| | | ('tms_mode_online', 'online', 'å¨çº¿å¦ä¹ ', 'both', '0', '0', '0', 3, '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | INSERT INTO tms_sign_mode (f_id, mode_code, mode_name, tip_seconds, match_roster, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_sign_app', 'app_scan', 'APPæ«ç ', 30, '1', '1', 0), |
| | | ('tms_sign_wx', 'wx_scan', '微信æ«ç ', 30, '1', '1', 0), |
| | | ('tms_sign_online', 'online', 'å¨çº¿ç¾å°', 30, '1', '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | INSERT INTO tms_eval_mode (f_id, mode_code, mode_name, need_paper, need_quiz, need_practice, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_eval_quiz', 'quiz', 'æé®', '0', '1', '0', '1', 0), |
| | | ('tms_eval_practice', 'practice', 'ç°åºæä½', '0', '0', '1', '1', 0), |
| | | ('tms_eval_exam', 'exam', 'å¨çº¿èè¯', '1', '0', '0', '1', 0), |
| | | ('tms_eval_none', 'none', 'æ éèæ ¸', '0', '0', '0', '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | INSERT INTO tms_remind_rule (f_id, rule_code, rule_name, biz_type, days_before, notify_roles, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_rm_annual', 'annual_due', '年度计åå°æåä¸ä¸ªæ', 'annual_plan', 30, 'é¨é¨å¹è®ç®¡çå,å¹è®å¸', '1', 0), |
| | | ('tms_rm_auth', 'auth_due', '管çåææå°æåä¸ä¸ªæ', 'admin_auth', 30, 'å¹è®ç®¡çå,å¹è®å¸', '1', 0), |
| | | ('tms_rm_overdue','task_overdue','å¹è®é¾ææéé¨é¨é¢å¯¼', 'task_overdue', 0, 'é¨é¨é¢å¯¼', '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | COMMIT; |
| | | ''' |
| | | |
| | | def sql_type_line(c): |
| | | name, typ, extra, _ = c |
| | | extra_s = f" {extra}" if extra else "" |
| | | return f" {name:<24} {typ}{extra_s}" |
| | | |
| | | def emit_table(t): |
| | | lines = [] |
| | | lines.append(f"-- {t['comment']}") |
| | | lines.append(f"CREATE TABLE IF NOT EXISTS {t['name']} (") |
| | | col_lines = [] |
| | | for c in t["cols"]: |
| | | col_lines.append(sql_type_line(c)) |
| | | col_lines.append(f" CONSTRAINT pk_{t['name']} PRIMARY KEY (f_id)") |
| | | lines.append(",\n".join(col_lines)) |
| | | lines.append(");") |
| | | lines.append(f"COMMENT ON TABLE {t['name']} IS '{t['comment'].replace(chr(39), chr(39)*2)}';") |
| | | for c in t["cols"]: |
| | | if c[3]: |
| | | cmt = c[3].replace("'", "''") |
| | | lines.append(f"COMMENT ON COLUMN {t['name']}.{c[0]} IS '{cmt}';") |
| | | for kind, iname, cols, uniqueish in t["indexes"]: |
| | | colsql = ", ".join(cols) |
| | | if kind == "uk": |
| | | # unique among not-deleted; nullable columns allowed multiple NULL in PG unique, extra WHERE keeps it simple |
| | | lines.append(f"CREATE UNIQUE INDEX IF NOT EXISTS {iname} ON {t['name']} ({colsql}) WHERE f_delete_mark = 0;") |
| | | else: |
| | | lines.append(f"CREATE INDEX IF NOT EXISTS {iname} ON {t['name']} ({colsql});") |
| | | lines.append("") |
| | | return "\n".join(lines) |
| | | |
| | | out = [HEADER] |
| | | groups = [ |
| | | ("1. åºç¡è®¾ç½®", ["tms_place","tms_trainer","tms_trainer_work","tms_trainer_exp","tms_admin_auth","tms_train_mode","tms_sign_mode","tms_eval_mode","tms_course","tms_material"]), |
| | | ("2. é¢åºè¯å·", ["tms_question_bank","tms_question","tms_question_option","tms_paper","tms_paper_section","tms_paper_question"]), |
| | | ("3. å²ä½/年度计å", ["tms_post_catalog","tms_post_catalog_item","tms_post_plan","tms_post_plan_item","tms_person_post","tms_person_post_item","tms_annual_plan","tms_annual_plan_item","tms_annual_delay"]), |
| | | ("4. å¹è®ä»»å¡ä¸è®°å½", ["tms_task","tms_task_file","tms_task_quiz","tms_person_task","tms_record","tms_record_sign","tms_record_change","tms_archive_file"]), |
| | | ("5. èè¯ä¸èæ ¸", ["tms_exam","tms_exam_item","tms_practice","tms_practice_item","tms_quiz_score"]), |
| | | ("6. 个人档æ¡", ["tms_person_file","tms_person_work","tms_person_cert","tms_person_train"]), |
| | | ("7. å
¶ä»æµç¨ä¸é
ç½®", ["tms_out_train","tms_transfer_eval","tms_newcomer_eval","tms_return_eval","tms_print_template","tms_remind_rule"]), |
| | | ] |
| | | by_name = {t["name"]: t for t in tables} |
| | | for title, names in groups: |
| | | out.append(f"-- ---------------------------------------------------------------------------") |
| | | out.append(f"-- {title}") |
| | | out.append(f"-- ---------------------------------------------------------------------------") |
| | | for n in names: |
| | | out.append(emit_table(by_name[n])) |
| | | out.append(FOOTER) |
| | | |
| | | sql_path = Path(r"D:/qiansheng/demo/flowApi/docs/tms/tms_schema_pg.sql") |
| | | sql_path.write_text("\n".join(out), encoding="utf-8") |
| | | print("tables", len(tables), "bytes", sql_path.stat().st_size) |
| New file |
| | |
| | | # -*- coding: utf-8 -*- |
| | | from pathlib import Path |
| | | import re |
| | | from openpyxl import Workbook |
| | | from openpyxl.styles import Font, PatternFill, Alignment, Border, Side |
| | | from openpyxl.utils import get_column_letter |
| | | |
| | | sql = Path(r"D:/qiansheng/demo/flowApi/docs/tms/tms_schema_pg.sql").read_text(encoding="utf-8") |
| | | tables = [] |
| | | current = None |
| | | block = None |
| | | create_map = {} |
| | | for line in sql.splitlines(): |
| | | m = re.match(r"CREATE TABLE IF NOT EXISTS (\w+)", line) |
| | | if m: |
| | | current = {"name": m.group(1), "comment": "", "cols": []} |
| | | tables.append(current) |
| | | block = [line] |
| | | continue |
| | | if block is not None: |
| | | block.append(line) |
| | | if line.startswith(");"): |
| | | cols = [] |
| | | for ln in block[1:]: |
| | | if "CONSTRAINT" in ln or ln.strip().startswith(");") or not ln.strip(): |
| | | continue |
| | | ln2 = ln.strip().rstrip(",") |
| | | parts = ln2.split() |
| | | if len(parts) >= 2: |
| | | cols.append((parts[0], " ".join(parts[1:]))) |
| | | create_map[current["name"]] = cols |
| | | block = None |
| | | continue |
| | | if current is None: |
| | | continue |
| | | m = re.match(r"COMMENT ON TABLE (\w+) IS '(.+)';", line) |
| | | if m and current["name"] == m.group(1): |
| | | current["comment"] = m.group(2) |
| | | continue |
| | | m = re.match(r"COMMENT ON COLUMN (\w+)\.(\w+) IS '(.+)';", line) |
| | | if m and current["name"] == m.group(1): |
| | | current["cols"].append((m.group(2), m.group(3))) |
| | | |
| | | FORMS = { |
| | | "tms_place": ("å¹è®å°ç¹", "A+YYYYMM+4"), |
| | | "tms_trainer": ("å¹è®å¸æ¡£æ¡", "AR+YYYY+4"), |
| | | "tms_trainer_work": ("å¹è®å¸-å·¥ä½ç»å", ""), |
| | | "tms_trainer_exp": ("å¹è®å¸-å¹è®ç»å", ""), |
| | | "tms_admin_auth": ("å¹è®ç®¡çåææ", ""), |
| | | "tms_train_mode": ("å¹è®æ¹å¼", ""), |
| | | "tms_sign_mode": ("ç¾å°æ¹å¼", ""), |
| | | "tms_eval_mode": ("å¹è®ææè¯ä¼°æ¹å¼", ""), |
| | | "tms_course": ("å¹è®è¯¾ç¨", "KC+YYYYMM+4"), |
| | | "tms_material": ("å¹è®ææ", "TM+YYYYMM+4"), |
| | | "tms_question_bank": ("é¢åº", ""), |
| | | "tms_question": ("è¯é¢", ""), |
| | | "tms_question_option": ("è¯é¢é项", ""), |
| | | "tms_paper": ("è¯å·", ""), |
| | | "tms_paper_section": ("è¯å·ç« è", ""), |
| | | "tms_paper_question": ("è¯å·è¯é¢", ""), |
| | | "tms_post_catalog": ("å²ä½å¹è®ç®å½", ""), |
| | | "tms_post_catalog_item": ("å²ä½ç®å½æç»", ""), |
| | | "tms_post_plan": ("å²ä½å¹è®è®¡å", "JP+YYYYMM+4"), |
| | | "tms_post_plan_item": ("å²ä½è®¡åæç»", ""), |
| | | "tms_person_post": ("个人å²ä½å¹è®", ""), |
| | | "tms_person_post_item": ("个人å²ä½å¹è®æç»", ""), |
| | | "tms_annual_plan": ("年度å¹è®è®¡å", "YYYY+4使µæ°´"), |
| | | "tms_annual_plan_item": ("年度计åæç»", ""), |
| | | "tms_annual_delay": ("年度计åå»¶æ", ""), |
| | | "tms_task": ("å¹è®ä»»å¡", "TT+YYYYMM+4"), |
| | | "tms_task_file": ("任塿æéä»¶", ""), |
| | | "tms_task_quiz": ("任塿é®é¢è®¾", ""), |
| | | "tms_person_task": ("个人å¹è®ä»»å¡", ""), |
| | | "tms_record": ("å¹è®è®°å½", "é»è®¤åä»»å¡ç¼å·"), |
| | | "tms_record_sign": ("ç¾å°/ç»ææç»", ""), |
| | | "tms_record_change": ("å¹è®è®°å½åæ´", ""), |
| | | "tms_archive_file": ("å¹è®èµæå½æ¡£", ""), |
| | | "tms_exam": ("å¨çº¿èè¯çå·", ""), |
| | | "tms_exam_item": ("çå·è¯é¢å¿«ç
§", ""), |
| | | "tms_practice": ("å®æèæ ¸", ""), |
| | | "tms_practice_item": ("å®æèæ ¸æç»", ""), |
| | | "tms_quiz_score": ("ç°åºæé®èæ ¸", ""), |
| | | "tms_person_file": ("个人å¹è®æ¡£æ¡", "AR+YYYY+4"), |
| | | "tms_person_work": ("æ¡£æ¡-å·¥ä½å±¥å", ""), |
| | | "tms_person_cert": ("èµè´¨æä»¶/è¯ä¹¦", ""), |
| | | "tms_person_train": ("æ¡£æ¡-å¹è®ç®å½å¿«ç
§", ""), |
| | | "tms_out_train": ("å¤åºå¹è®", "WC+YYYYMM+4"), |
| | | "tms_transfer_eval": ("转å²èæ ¸é´å®", ""), |
| | | "tms_newcomer_eval": ("æ°åå·¥å¹è®ææèè¯", ""), |
| | | "tms_return_eval": ("å¤å²å¹è®ææèè¯", ""), |
| | | "tms_print_template": ("å¥ææ¨¡æ¿çæ¬", ""), |
| | | "tms_remind_rule": ("æéè§å", ""), |
| | | } |
| | | |
| | | CTRL = { |
| | | "user_id": "ç¨æ·", |
| | | "teacher_id": "ç¨æ·(å¯å¤é)", |
| | | "trainees": "ç¨æ·å¤é", |
| | | "admin_user_id": "ç¨æ·", |
| | | "applicant_id": "ç¨æ·", |
| | | "author_id": "ç¨æ·", |
| | | "registrar_id": "ç¨æ·", |
| | | "grader_id": "ç¨æ·", |
| | | "archiver_id": "ç¨æ·", |
| | | "dept_id": "ç»ç»", |
| | | "apply_dept_id": "ç»ç»", |
| | | "author_dept_id": "ç»ç»", |
| | | "scope_dept_id": "ç»ç»å¤é", |
| | | "post_id": "å²ä½", |
| | | "main_post_id": "å²ä½", |
| | | "part_post_id": "å²ä½", |
| | | "file_json": "éä»¶", |
| | | "cert_file": "éä»¶", |
| | | "lecture_file": "éä»¶", |
| | | "paper_sign_file": "éä»¶", |
| | | "stem": "坿æ¬", |
| | | "key_points": "å¤è¡", |
| | | "subject": "å¤è¡", |
| | | "start_time": "æ¥ææ¶é´", |
| | | "end_time": "æ¥ææ¶é´", |
| | | "close_time": "æ¥ææ¶é´", |
| | | "exam_start": "æ¥ææ¶é´", |
| | | "exam_end": "æ¥ææ¶é´", |
| | | "hire_date": "æ¥æ", |
| | | "enabled": "䏿/å¼å
³", |
| | | "biz_status": "䏿-åå
¸", |
| | | "publish_status": "䏿-åå
¸", |
| | | "train_mode": "䏿/å
³èå¹è®æ¹å¼", |
| | | "eval_mode": "䏿/å
³èè¯ä¼°æ¹å¼", |
| | | "place_id": "å
³è表å-å¹è®å°ç¹", |
| | | "material_id": "å
³è表å-å¹è®ææ", |
| | | "paper_id": "å
³è表å-è¯å·", |
| | | "bank_id": "å
³è表å-é¢åº", |
| | | "course_id": "å
³è表å-课ç¨", |
| | | "task_id": "å
³è表å-å¹è®ä»»å¡", |
| | | "record_id": "å
³è表å-å¹è®è®°å½", |
| | | } |
| | | |
| | | |
| | | def suggest_ctrl(name, typ): |
| | | if name in CTRL: |
| | | return CTRL[name] |
| | | if name.startswith("f_"): |
| | | return "ç³»ç»å段" |
| | | if "timestamp" in typ: |
| | | return "æ¥ææ¶é´" |
| | | if typ.startswith("date"): |
| | | return "æ¥æ" |
| | | if "numeric" in typ or typ.startswith("int"): |
| | | return "æ°å" |
| | | if name.endswith("_id"): |
| | | return "å
³è/ç¨æ·/ç»ç»" |
| | | if "text" in typ: |
| | | return "å¤è¡/éä»¶/JSON" |
| | | return "åè¡/䏿" |
| | | |
| | | |
| | | wb = Workbook() |
| | | ws = wb.active |
| | | ws.title = "表æ¸
å" |
| | | ws.append(["åºå·", "表å", "䏿å", "表说æ", "主ä»", "æµç¨", "åæ®è§å"]) |
| | | for i, t in enumerate(tables, 1): |
| | | child = any(c[0] == "f_foreign_id" for c in t["cols"]) |
| | | flow = any(c[0] == "f_flow_id" for c in t["cols"]) |
| | | form_name, rule = FORMS.get(t["name"], (t["comment"][:20], "")) |
| | | ws.append([i, t["name"], form_name, t["comment"], "å表" if child else "主表", "æ¯" if flow else "å¦", rule]) |
| | | |
| | | ws2 = wb.create_sheet("åæ®µæç»") |
| | | ws2.append(["表å", "䏿å", "åæ®µå", "ç±»å", "说æ", "JNPF建议æ§ä»¶"]) |
| | | for t in tables: |
| | | comments = {n: c for n, c in t["cols"]} |
| | | form_name = FORMS.get(t["name"], (t["comment"][:20], ""))[0] |
| | | for n, typ in create_map.get(t["name"], []): |
| | | ws2.append([t["name"], form_name, n, typ, comments.get(n, ""), suggest_ctrl(n, typ)]) |
| | | |
| | | ws3 = wb.create_sheet("åå
¸ä¸åæ®è§å") |
| | | ws3.append(["ç±»å", "åç§°", "é项æè§å", "ç¨é"]) |
| | | for row in [ |
| | | ("åå
¸", "ä»»å¡åå¸ç¶æ", "draftæªåå¸ / publishedå·²åå¸ / cancelled已忶 / done已宿", "tms_task.publish_status"), |
| | | ("åå
¸", "å¹è®åç±»", "临æ¶å¹è® / å²ä½å¹è®è®¡å / 年度å¹è®è®¡å / æä»¶çæå¹è® / å¤åºå¹è® / åç»´æ¤", "tms_task.category"), |
| | | ("åå
¸", "ä»»å¡ç±»å", "newæ°å¢ / continueç»§ç»", "tms_task.task_kind"), |
| | | ("åå
¸", "彿¡£ç¶æ", "pendingå¾
彿¡£ / readyå¯å½æ¡£ / archived已彿¡£ / invalidæ æ", "tms_record.archive_status"), |
| | | ("åå
¸", "个人任å¡ç¶æ", "todoæªå®æ / signedå·²ç¾å° / done已宿 / expiredå·²è¿æ / cancelled已忶", "tms_person_task.biz_status"), |
| | | ("åå
¸", "æ¯å¦åæ ¼", "passåæ ¼ / failä¸åæ ¼ / absentæªåå / naæ éèæ ¸", "ç¾å°ç»æ/èè¯"), |
| | | ("åå
¸", "é¢å", "singleåé / multiå¤é / judge夿 / blank填空 / essayé®ç", "è¯é¢"), |
| | | ("åå
¸", "è¯é¢è¯å·ç¶æ", "open弿¾ / closedä¸å¼æ¾ / invalidåºå¼", "é¢åºè¯å·"), |
| | | ("åå
¸", "é¾åº¦", "easyç®å / normalä¸è¬ / hardå°é¾", "è¯é¢"), |
| | | ("åå
¸", "é
å·ç¶æ", "autoæ éé
å· / pendingå¾
æ¹æ¹ / gradedå·²æ¹æ¹", "tms_exam.grade_status"), |
| | | ("åå
¸", "æææ¤é", "validæææå
/ revokedå·²æ¤é", "å¹è®å¸/ææ/ææ"), |
| | | ("åå
¸", "计åè¡ç¶æ", "pendingå¾
æ§è¡ / taskedå·²çæä»»å¡ / done已宿 / delayed已延æ", "年度计åæç»"), |
| | | ("åå
¸", "ææç±»å", "Word / PPT / Excel / PDF / è§é¢ / é³é¢", "ææ"), |
| | | ("åæ®è§å", "å°ç¹ç¼å·", "A + YYYYMM + 4使µæ°´", "tms_place.place_no ä¾ A2026090001"), |
| | | ("åæ®è§å", "æ¡£æ¡ç¼å·", "AR + YYYY + 4使µæ°´", "å¹è®å¸/ä¸ªäººæ¡£æ¡ ä¾ AR20260028"), |
| | | ("åæ®è§å", "ææç¼å·", "TM + YYYYMM + 4使µæ°´", "tms_material ä¾ TM2026090001"), |
| | | ("åæ®è§å", "å²ä½è®¡åç¼å·", "JP + YYYYMM + 4使µæ°´", "tms_post_plan ä¾ JP2026090012"), |
| | | ("åæ®è§å", "年度计åç¼å·", "年份4ä½ + 4使µæ°´", "tms_annual_plan ä¾ 20260001"), |
| | | ("åæ®è§å", "å¹è®ä»»å¡ç¼å·", "TT + YYYYMM + 4使µæ°´", "tms_task ä¾ TT2026090618"), |
| | | ]: |
| | | ws3.append(list(row)) |
| | | |
| | | header_fill = PatternFill("solid", fgColor="1F4E79") |
| | | header_font = Font(color="FFFFFF", bold=True) |
| | | thin = Border(*(Side(style="thin", color="D0D0D0"),) * 4) |
| | | for sheet in wb.worksheets: |
| | | for cell in sheet[1]: |
| | | cell.fill = header_fill |
| | | cell.font = header_font |
| | | cell.alignment = Alignment(horizontal="center") |
| | | sheet.freeze_panes = "A2" |
| | | sheet.auto_filter.ref = sheet.dimensions |
| | | widths = {} |
| | | for row in sheet.iter_rows(min_row=1, max_row=min(sheet.max_row, 80)): |
| | | for c in row: |
| | | c.border = thin |
| | | c.alignment = Alignment(wrap_text=True, vertical="center") |
| | | widths[c.column] = max(widths.get(c.column, 10), min(len(str(c.value or "")) + 4, 42)) |
| | | for col, w in widths.items(): |
| | | sheet.column_dimensions[get_column_letter(col)].width = w |
| | | |
| | | xlsx = Path(r"D:/qiansheng/demo/flowApi/docs/tms/ç»æé¬TMS-JNPFæ°æ®è¡¨å段æ¸
å.xlsx") |
| | | wb.save(xlsx) |
| | | print("tables", len(tables), "xlsx", xlsx.stat().st_size) |
| New file |
| | |
| | | -- ============================================================================= |
| | | -- ç»æé¬ TMS å¹è®ç®¡çç³»ç» Â· PostgreSQL 18 å»ºè¡¨èæ¬ |
| | | -- éç¨ï¼JNPF 6.xï¼åæ®µé£æ ¼å¯¹é½ç°æ lims_/dms_ è¡¨ï¼ |
| | | -- æ¥æºï¼ç»æé¬TMSåè½è®¾è®¡ä¹¦ V1 + èé£ä¼çé¢å段 |
| | | -- |
| | | -- ä½¿ç¨ |
| | | -- 1) æ¨èï¼JNPFãæ°æ®å»ºæ¨¡ãæè¡¨æ¸
å建表ï¼åç»è¡¨åï¼ç³»ç»å段ä¼èªå¨å¸¦ï¼ |
| | | -- 2) æå
æ§è¡æ¬èæ¬ï¼åå°æ°æ®å»ºæ¨¡ãåæ¥æ°æ®è¡¨ã |
| | | -- |
| | | -- çº¦å® |
| | | -- f_id ä¸»é® varchar(50)ï¼å表 f_foreign_id = 主表 f_id |
| | | -- æµç¨è¡¨åå« f_flow_id / f_flow_task_id / f_flow_state |
| | | -- ç¨æ·/ç»ç»/å²ä½å JNPF IDï¼å¤é textï¼éä»¶ text(JSON) |
| | | -- ä¸å¡ç¶æåç¼ç ï¼éé¡¹ç¨ JNPF åå
¸ |
| | | -- ============================================================================= |
| | | |
| | | BEGIN; |
| | | |
| | | -- --------------------------------------------------------------------------- |
| | | -- 1. åºç¡è®¾ç½® |
| | | -- --------------------------------------------------------------------------- |
| | | -- å¹è®å°ç¹ãå¨çº¿å¦ä¹ ä»»å¡å°ç¹å¯ç©ºï¼å ç¨æå°æ¶ä¸æªåæ¶ä»»å¡æ¶é´äº¤åæ ¡éªã |
| | | CREATE TABLE IF NOT EXISTS tms_place ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | place_no varchar(50) NOT NULL, |
| | | place_name varchar(200) NOT NULL, |
| | | place_group varchar(50), |
| | | enabled varchar(20) NOT NULL DEFAULT '1', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_place PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_place IS 'å¹è®å°ç¹ãå¨çº¿å¦ä¹ ä»»å¡å°ç¹å¯ç©ºï¼å ç¨æå°æ¶ä¸æªåæ¶ä»»å¡æ¶é´äº¤åæ ¡éªã'; |
| | | COMMENT ON COLUMN tms_place.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_place.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_place.place_no IS 'å°ç¹ç¼å·ï¼åæ®è§å A+YYYYMM+4ï¼å¦ A2026090001'; |
| | | COMMENT ON COLUMN tms_place.place_name IS 'å°ç¹åç§°'; |
| | | COMMENT ON COLUMN tms_place.place_group IS 'ç»å«/ååºï¼åå
¸ï¼åå
¬åº/ç产åº/Aåº/Båº'; |
| | | COMMENT ON COLUMN tms_place.enabled IS '1å¯ç¨ 0åç¨'; |
| | | COMMENT ON COLUMN tms_place.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_place.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_place.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_place.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_place.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_place.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_place.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_place.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_place_no ON tms_place (place_no) WHERE f_delete_mark = 0; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_place_group ON tms_place (place_group, enabled); |
| | | |
| | | -- å¹è®å¸æ¡£æ¡ï¼å
³èç³»ç»ç¨æ·ï¼éå¤å½å
¥æuser_idè¯å«ï¼è´¦å·æ³¨éåèªå¨åºå¼ã |
| | | CREATE TABLE IF NOT EXISTS tms_trainer ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | archive_no varchar(50), |
| | | user_id varchar(50) NOT NULL, |
| | | trainer_name varchar(100), |
| | | dept_id varchar(50), |
| | | post_id varchar(50), |
| | | school varchar(200), |
| | | education varchar(50), |
| | | major varchar(100), |
| | | tech_title varchar(100), |
| | | hire_date date, |
| | | license varchar(200), |
| | | work_years varchar(50), |
| | | trainer_level varchar(50), |
| | | biz_status varchar(20) NOT NULL DEFAULT 'valid', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_trainer PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_trainer IS 'å¹è®å¸æ¡£æ¡ï¼å
³èç³»ç»ç¨æ·ï¼éå¤å½å
¥æuser_idè¯å«ï¼è´¦å·æ³¨éåèªå¨åºå¼ã'; |
| | | COMMENT ON COLUMN tms_trainer.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_trainer.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_trainer.archive_no IS 'æ¡£æ¡ç¼å· AR+YYYY+4ï¼å¯ä¸ä¸ªäººå¹è®æ¡£æ¡å
±ç¨'; |
| | | COMMENT ON COLUMN tms_trainer.user_id IS 'ç³»ç»ç¨æ·ID'; |
| | | COMMENT ON COLUMN tms_trainer.trainer_name IS 'å§åï¼åä½ï¼ä¾¿äºå表ï¼'; |
| | | COMMENT ON COLUMN tms_trainer.dept_id IS 'é¨é¨'; |
| | | COMMENT ON COLUMN tms_trainer.post_id IS 'å²ä½'; |
| | | COMMENT ON COLUMN tms_trainer.school IS 'æ¯ä¸é¢æ ¡'; |
| | | COMMENT ON COLUMN tms_trainer.education IS 'å¦å'; |
| | | COMMENT ON COLUMN tms_trainer.major IS 'ä¸ä¸'; |
| | | COMMENT ON COLUMN tms_trainer.tech_title IS 'ææ¯èç§°'; |
| | | COMMENT ON COLUMN tms_trainer.hire_date IS 'å
¥èæ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer.license IS 'æ§ä¸è¯ä¹¦'; |
| | | COMMENT ON COLUMN tms_trainer.work_years IS 'å·¥ä½å¹´é'; |
| | | COMMENT ON COLUMN tms_trainer.trainer_level IS 'å¹è®å¸çº§å«'; |
| | | COMMENT ON COLUMN tms_trainer.biz_status IS 'validæææå
/ revokedå·²æ¤é'; |
| | | COMMENT ON COLUMN tms_trainer.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_trainer.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_trainer.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_trainer.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_trainer.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_trainer.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_trainer_user ON tms_trainer (user_id) WHERE f_delete_mark = 0; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_trainer_no ON tms_trainer (archive_no) WHERE f_delete_mark = 0; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_trainer_status ON tms_trainer (biz_status); |
| | | |
| | | -- å¹è®å¸ä¸ªäººå·¥ä½ç»åå表 |
| | | CREATE TABLE IF NOT EXISTS tms_trainer_work ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | sort_no int, |
| | | hire_date date, |
| | | leave_date date, |
| | | company_name varchar(200), |
| | | post_name varchar(100), |
| | | leave_reason varchar(200), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_trainer_work PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_trainer_work IS 'å¹è®å¸ä¸ªäººå·¥ä½ç»åå表'; |
| | | COMMENT ON COLUMN tms_trainer_work.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_trainer_work.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_trainer_work.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_trainer_work.sort_no IS 'åºå·'; |
| | | COMMENT ON COLUMN tms_trainer_work.hire_date IS 'å
¥èæ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer_work.leave_date IS 'ç¦»èæ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer_work.company_name IS 'å
¬å¸åç§°'; |
| | | COMMENT ON COLUMN tms_trainer_work.post_name IS 'ä»»èå²ä½'; |
| | | COMMENT ON COLUMN tms_trainer_work.leave_reason IS '离èåå '; |
| | | COMMENT ON COLUMN tms_trainer_work.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_trainer_work.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer_work.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_trainer_work.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer_work.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_trainer_work_fid ON tms_trainer_work (f_foreign_id); |
| | | |
| | | -- å¹è®å¸ä¸ªäººå¹è®ç»åå表 |
| | | CREATE TABLE IF NOT EXISTS tms_trainer_exp ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | sort_no int, |
| | | train_date date, |
| | | org_name varchar(200), |
| | | cert_name varchar(200), |
| | | cert_file text, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_trainer_exp PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_trainer_exp IS 'å¹è®å¸ä¸ªäººå¹è®ç»åå表'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_trainer_exp.sort_no IS 'åºå·'; |
| | | COMMENT ON COLUMN tms_trainer_exp.train_date IS 'å¹è®æ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer_exp.org_name IS 'å¹è®æºæ'; |
| | | COMMENT ON COLUMN tms_trainer_exp.cert_name IS 'å¹è®è¯ä¹¦'; |
| | | COMMENT ON COLUMN tms_trainer_exp.cert_file IS 'è¯ä¹¦éä»¶'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_trainer_exp.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_trainer_exp_fid ON tms_trainer_exp (f_foreign_id); |
| | | |
| | | -- å¹è®ç®¡çåè·¨é¨é¨ææãå°æåä¸ä¸ªææé管çå/å¹è®å¸ã |
| | | CREATE TABLE IF NOT EXISTS tms_admin_auth ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | admin_user_id varchar(50) NOT NULL, |
| | | scope_dept_id text NOT NULL, |
| | | include_child varchar(10) NOT NULL DEFAULT '1', |
| | | registrar_id varchar(50), |
| | | register_date date, |
| | | expire_date date, |
| | | biz_status varchar(20) NOT NULL DEFAULT 'valid', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_admin_auth PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_admin_auth IS 'å¹è®ç®¡çåè·¨é¨é¨ææãå°æåä¸ä¸ªææé管çå/å¹è®å¸ã'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_admin_auth.admin_user_id IS 'å¹è®ç®¡çå'; |
| | | COMMENT ON COLUMN tms_admin_auth.scope_dept_id IS '管çèå´ï¼ç»ç»å¤é'; |
| | | COMMENT ON COLUMN tms_admin_auth.include_child IS 'æ¯å¦å
å«ä¸çº§é¨é¨ 1æ¯ 0å¦'; |
| | | COMMENT ON COLUMN tms_admin_auth.registrar_id IS 'ç»è®°äºº'; |
| | | COMMENT ON COLUMN tms_admin_auth.register_date IS 'ç»è®°æ¥æ'; |
| | | COMMENT ON COLUMN tms_admin_auth.expire_date IS 'ææå°ææ¥ï¼å¯ç©ºè¡¨ç¤ºé¿æ'; |
| | | COMMENT ON COLUMN tms_admin_auth.biz_status IS 'validææ / revokedåºå¼'; |
| | | COMMENT ON COLUMN tms_admin_auth.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_admin_auth.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_admin_auth_user ON tms_admin_auth (admin_user_id, biz_status); |
| | | |
| | | -- å¹è®æ¹å¼é
ç½®ï¼å«ç¾å°è§åï¼ä¸ä»
æ¯åå
¸ï¼ |
| | | CREATE TABLE IF NOT EXISTS tms_train_mode ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | mode_code varchar(50) NOT NULL, |
| | | mode_name varchar(100) NOT NULL, |
| | | sign_rule varchar(20) NOT NULL DEFAULT 'both', |
| | | allow_guest_sign varchar(10) NOT NULL DEFAULT '0', |
| | | same_day_required varchar(10) NOT NULL DEFAULT '0', |
| | | place_required varchar(10) NOT NULL DEFAULT '1', |
| | | sort_no int, |
| | | enabled varchar(10) NOT NULL DEFAULT '1', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_train_mode PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_train_mode IS 'å¹è®æ¹å¼é
ç½®ï¼å«ç¾å°è§åï¼ä¸ä»
æ¯åå
¸ï¼'; |
| | | COMMENT ON COLUMN tms_train_mode.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_train_mode.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_train_mode.mode_code IS 'ç¼ç ï¼onsite/practice/online'; |
| | | COMMENT ON COLUMN tms_train_mode.mode_name IS 'åç§°ï¼éä¸æè¯¾/æä½æè¯¾/å¨çº¿å¦ä¹ '; |
| | | COMMENT ON COLUMN tms_train_mode.sign_rule IS 'scanä»
æ«ç / bothæ«ç +å¨çº¿'; |
| | | COMMENT ON COLUMN tms_train_mode.allow_guest_sign IS 'å
许ååå¤ç¾å°ï¼éä¸æè¯¾=1'; |
| | | COMMENT ON COLUMN tms_train_mode.same_day_required IS 'å¼å§ç»æå¿
é¡»åä¸å¤©ï¼éä¸/æä½=1'; |
| | | COMMENT ON COLUMN tms_train_mode.place_required IS 'å°ç¹å¿
å¡«ï¼å¨çº¿å¦ä¹ =0'; |
| | | COMMENT ON COLUMN tms_train_mode.sort_no IS 'æåº'; |
| | | COMMENT ON COLUMN tms_train_mode.enabled IS 'å¯ç¨'; |
| | | COMMENT ON COLUMN tms_train_mode.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_train_mode.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_train_mode.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_train_mode.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_train_mode.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_train_mode.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_train_mode.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_train_mode.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_train_mode_code ON tms_train_mode (mode_code) WHERE f_delete_mark = 0; |
| | | |
| | | -- ç¾å°æ¹å¼ï¼APPæ«ç / 微信æ«ç / å¨çº¿ç¾å° |
| | | CREATE TABLE IF NOT EXISTS tms_sign_mode ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | mode_code varchar(50) NOT NULL, |
| | | mode_name varchar(100) NOT NULL, |
| | | tip_seconds int NOT NULL DEFAULT 30, |
| | | match_roster varchar(10) NOT NULL DEFAULT '1', |
| | | enabled varchar(10) NOT NULL DEFAULT '1', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_sign_mode PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_sign_mode IS 'ç¾å°æ¹å¼ï¼APPæ«ç / 微信æ«ç / å¨çº¿ç¾å°'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_sign_mode.mode_code IS 'ç¼ç ï¼app_scan/wx_scan/online'; |
| | | COMMENT ON COLUMN tms_sign_mode.mode_name IS 'åç§°'; |
| | | COMMENT ON COLUMN tms_sign_mode.tip_seconds IS 'æå¹è®è¦ç¹æ¶å¼ºå¶é
è¯»ç§æ°ï¼ITå¯è°'; |
| | | COMMENT ON COLUMN tms_sign_mode.match_roster IS 'æ¯å¦å¿
é¡»å¹é
å¹è®å¯¹è±¡åå'; |
| | | COMMENT ON COLUMN tms_sign_mode.enabled IS 'å¯ç¨'; |
| | | COMMENT ON COLUMN tms_sign_mode.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_sign_mode.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_sign_mode_code ON tms_sign_mode (mode_code) WHERE f_delete_mark = 0; |
| | | |
| | | -- å¹è®ææè¯ä¼°æ¹å¼ï¼æé® / ç°åºæä½ / å¨çº¿èè¯ / æ éèæ ¸ |
| | | CREATE TABLE IF NOT EXISTS tms_eval_mode ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | mode_code varchar(50) NOT NULL, |
| | | mode_name varchar(100) NOT NULL, |
| | | need_paper varchar(10) NOT NULL DEFAULT '0', |
| | | need_quiz varchar(10) NOT NULL DEFAULT '0', |
| | | need_practice varchar(10) NOT NULL DEFAULT '0', |
| | | enabled varchar(10) NOT NULL DEFAULT '1', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_eval_mode PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_eval_mode IS 'å¹è®ææè¯ä¼°æ¹å¼ï¼æé® / ç°åºæä½ / å¨çº¿èè¯ / æ éèæ ¸'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_eval_mode.mode_code IS 'ç¼ç ï¼quiz/practice/exam/none'; |
| | | COMMENT ON COLUMN tms_eval_mode.mode_name IS 'åç§°'; |
| | | COMMENT ON COLUMN tms_eval_mode.need_paper IS 'æ¯å¦éè¦è¯å·'; |
| | | COMMENT ON COLUMN tms_eval_mode.need_quiz IS 'æ¯å¦éè¦æé®é¢è®¾'; |
| | | COMMENT ON COLUMN tms_eval_mode.need_practice IS 'æ¯å¦éè¦å®æè¯å'; |
| | | COMMENT ON COLUMN tms_eval_mode.enabled IS 'å¯ç¨'; |
| | | COMMENT ON COLUMN tms_eval_mode.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_eval_mode.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_eval_mode_code ON tms_eval_mode (mode_code) WHERE f_delete_mark = 0; |
| | | |
| | | -- å¹è®è¯¾ç¨ä¸»æ°æ®ï¼è®¡å/ä»»å¡å¯å¼ç¨ |
| | | CREATE TABLE IF NOT EXISTS tms_course ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | course_no varchar(50), |
| | | course_name varchar(200) NOT NULL, |
| | | category varchar(50), |
| | | train_mode varchar(50), |
| | | eval_mode varchar(50), |
| | | paper_id varchar(50), |
| | | hours numeric(8,1), |
| | | enabled varchar(10) NOT NULL DEFAULT '1', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_course PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_course IS 'å¹è®è¯¾ç¨ä¸»æ°æ®ï¼è®¡å/ä»»å¡å¯å¼ç¨'; |
| | | COMMENT ON COLUMN tms_course.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_course.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_course.course_no IS '课ç¨ç¼å·'; |
| | | COMMENT ON COLUMN tms_course.course_name IS '课ç¨åç§°'; |
| | | COMMENT ON COLUMN tms_course.category IS '课ç¨åç±»'; |
| | | COMMENT ON COLUMN tms_course.train_mode IS 'å¹è®æ¹å¼ç¼ç '; |
| | | COMMENT ON COLUMN tms_course.eval_mode IS 'èæ ¸æ¹å¼ç¼ç '; |
| | | COMMENT ON COLUMN tms_course.paper_id IS 'å
³èè¯å·'; |
| | | COMMENT ON COLUMN tms_course.hours IS '妿¶'; |
| | | COMMENT ON COLUMN tms_course.enabled IS 'å¯ç¨'; |
| | | COMMENT ON COLUMN tms_course.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_course.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_course.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_course.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_course.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_course.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_course.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_course.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_course_no ON tms_course (course_no) WHERE f_delete_mark = 0; |
| | | |
| | | -- å¹è®ææ/ä¼ä¸ç¥è¯åºãå¯ä¸ä¼ æ¬å°æå¼ç¨DMSï¼éé´æï¼ãæ¤éåä¸å¯åå¼ç¨ã |
| | | CREATE TABLE IF NOT EXISTS tms_material ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | material_no varchar(50) NOT NULL, |
| | | material_name varchar(500) NOT NULL, |
| | | file_type varchar(50), |
| | | apply_time date, |
| | | applicant_id varchar(50), |
| | | apply_dept_id varchar(50), |
| | | file_json text, |
| | | dms_file_id varchar(50), |
| | | quote_count int NOT NULL DEFAULT 0, |
| | | biz_status varchar(20) NOT NULL DEFAULT 'valid', |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_material PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_material IS 'å¹è®ææ/ä¼ä¸ç¥è¯åºãå¯ä¸ä¼ æ¬å°æå¼ç¨DMSï¼éé´æï¼ãæ¤éåä¸å¯åå¼ç¨ã'; |
| | | COMMENT ON COLUMN tms_material.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_material.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_material.material_no IS 'ææç¼å· TM+YYYYMM+4'; |
| | | COMMENT ON COLUMN tms_material.material_name IS 'ææåç§°'; |
| | | COMMENT ON COLUMN tms_material.file_type IS 'Word/PPT/Excel/PDF/è§é¢/é³é¢'; |
| | | COMMENT ON COLUMN tms_material.apply_time IS 'ç³è¯·æ¶é´'; |
| | | COMMENT ON COLUMN tms_material.applicant_id IS 'ä¸ä¼ ç³è¯·äºº'; |
| | | COMMENT ON COLUMN tms_material.apply_dept_id IS 'ç³è¯·äººé¨é¨'; |
| | | COMMENT ON COLUMN tms_material.file_json IS 'ææéä»¶ï¼JNPFéä»¶JSONï¼'; |
| | | COMMENT ON COLUMN tms_material.dms_file_id IS 'å¼ç¨çDMSæä»¶ID'; |
| | | COMMENT ON COLUMN tms_material.quote_count IS '被任å¡å¼ç¨æ¬¡æ°'; |
| | | COMMENT ON COLUMN tms_material.biz_status IS 'validææ / revokedå·²æ¤é'; |
| | | COMMENT ON COLUMN tms_material.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_material.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_material.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_material.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_material.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_material.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_material.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_material.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_material_no ON tms_material (material_no) WHERE f_delete_mark = 0; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_material_type ON tms_material (file_type, biz_status); |
| | | |
| | | -- --------------------------------------------------------------------------- |
| | | -- 2. é¢åºè¯å· |
| | | -- --------------------------------------------------------------------------- |
| | | -- é¢åº |
| | | CREATE TABLE IF NOT EXISTS tms_question_bank ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | bank_name varchar(200) NOT NULL, |
| | | question_count int NOT NULL DEFAULT 0, |
| | | biz_status varchar(20) NOT NULL DEFAULT 'normal', |
| | | remark text, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_question_bank PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_question_bank IS 'é¢åº'; |
| | | COMMENT ON COLUMN tms_question_bank.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_question_bank.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_question_bank.bank_name IS 'é¢åºåç§°'; |
| | | COMMENT ON COLUMN tms_question_bank.question_count IS 'è¯é¢æ°éï¼ç»´æ¤æ¶ååï¼'; |
| | | COMMENT ON COLUMN tms_question_bank.biz_status IS 'normalæ£å¸¸ / invalid失æ'; |
| | | COMMENT ON COLUMN tms_question_bank.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_question_bank.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_question_bank.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_question_bank.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_question_bank.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_question_bank.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_question_bank.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_question_bank.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_qbank_status ON tms_question_bank (biz_status); |
| | | |
| | | -- è¯é¢ãä¿®æ¹ä¸å½±å已宿èè¯å¿«ç
§ã |
| | | CREATE TABLE IF NOT EXISTS tms_question ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | question_no varchar(50), |
| | | bank_id varchar(50) NOT NULL, |
| | | question_type varchar(20) NOT NULL, |
| | | difficulty varchar(20), |
| | | source_type varchar(50), |
| | | stem text NOT NULL, |
| | | analysis text, |
| | | admin_user_id varchar(50), |
| | | biz_status varchar(20) NOT NULL DEFAULT 'open', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_question PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_question IS 'è¯é¢ãä¿®æ¹ä¸å½±å已宿èè¯å¿«ç
§ã'; |
| | | COMMENT ON COLUMN tms_question.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_question.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_question.question_no IS 'è¯é¢ç¼å·ï¼å¯æµæ°´'; |
| | | COMMENT ON COLUMN tms_question.bank_id IS 'æå±é¢åº tms_question_bank.f_id'; |
| | | COMMENT ON COLUMN tms_question.question_type IS 'singleåé / multiå¤é / judge夿 / blank填空 / essayé®ç'; |
| | | COMMENT ON COLUMN tms_question.difficulty IS 'easy/normal/hardï¼çé¢é»è®¤ä¸è¬'; |
| | | COMMENT ON COLUMN tms_question.source_type IS 'è¯é¢æ¥æºï¼é»è®¤èªå½é¢'; |
| | | COMMENT ON COLUMN tms_question.stem IS 'é¢å¹²ï¼å¯ææ¬'; |
| | | COMMENT ON COLUMN tms_question.analysis IS 'çæ¡è§£æ/夿³¨ï¼éé¢å¯æ¾ç¤º'; |
| | | COMMENT ON COLUMN tms_question.admin_user_id IS '管çå'; |
| | | COMMENT ON COLUMN tms_question.biz_status IS 'open弿¾ / closedä¸å¼æ¾ / invalidåºå¼'; |
| | | COMMENT ON COLUMN tms_question.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_question.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_question.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_question.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_question.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_question.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_question.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_question_bank ON tms_question (bank_id, question_type, biz_status); |
| | | |
| | | -- è¯é¢é项ãåéåéä¸ï¼å¤éå¯å¤éä¸ï¼å¤æå¯åæA对Béã |
| | | CREATE TABLE IF NOT EXISTS tms_question_option ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | sort_no int, |
| | | option_label varchar(10), |
| | | option_content text, |
| | | is_correct varchar(10) NOT NULL DEFAULT '0', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_question_option PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_question_option IS 'è¯é¢é项ãåéåéä¸ï¼å¤éå¯å¤éä¸ï¼å¤æå¯åæA对Béã'; |
| | | COMMENT ON COLUMN tms_question_option.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_question_option.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_question_option.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_question_option.sort_no IS 'åºå·'; |
| | | COMMENT ON COLUMN tms_question_option.option_label IS 'A/B/C/D...'; |
| | | COMMENT ON COLUMN tms_question_option.option_content IS 'é项å
容'; |
| | | COMMENT ON COLUMN tms_question_option.is_correct IS 'æ¯å¦æ£ç¡®çæ¡ 1æ¯ 0å¦'; |
| | | COMMENT ON COLUMN tms_question_option.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_question_option.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_question_option.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_question_option.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_question_option.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_qopt_fid ON tms_question_option (f_foreign_id); |
| | | |
| | | -- è¯å·ã失æè¯å·ä¸å¾åç¨äºæ°ä»»å¡ï¼æ¹å·ä¸å½±åå·²èè®°å½ã |
| | | CREATE TABLE IF NOT EXISTS tms_paper ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | paper_name varchar(300) NOT NULL, |
| | | biz_status varchar(20) NOT NULL DEFAULT 'open', |
| | | duration_min int NOT NULL DEFAULT 60, |
| | | exam_start timestamp, |
| | | exam_end timestamp, |
| | | score_publish_time timestamp, |
| | | pass_score numeric(8,1), |
| | | total_score numeric(8,1), |
| | | sort_mode varchar(20) NOT NULL DEFAULT 'paper', |
| | | has_subjective varchar(10) NOT NULL DEFAULT '0', |
| | | remark text, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_paper PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_paper IS 'è¯å·ã失æè¯å·ä¸å¾åç¨äºæ°ä»»å¡ï¼æ¹å·ä¸å½±åå·²èè®°å½ã'; |
| | | COMMENT ON COLUMN tms_paper.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_paper.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_paper.paper_name IS 'è¯å·åç§°'; |
| | | COMMENT ON COLUMN tms_paper.biz_status IS 'open弿¾ / closedä¸å¼æ¾ / invalid失æ'; |
| | | COMMENT ON COLUMN tms_paper.duration_min IS 'èè¯æ¶é¿ï¼åéï¼'; |
| | | COMMENT ON COLUMN tms_paper.exam_start IS 'è¯å·çº§å¼èæ¶é´ï¼å¯ç©ºï¼ä»»å¡ä¸å设'; |
| | | COMMENT ON COLUMN tms_paper.exam_end IS 'è¯å·çº§ç»èæ¶é´ï¼å¯ç©º'; |
| | | COMMENT ON COLUMN tms_paper.score_publish_time IS 'æç»©å
¬å¸æ¶é´ï¼ç©º=ç«å³å
¬å¸'; |
| | | COMMENT ON COLUMN tms_paper.pass_score IS 'åæ ¼åæ°'; |
| | | COMMENT ON COLUMN tms_paper.total_score IS 'è¯å·æ»å'; |
| | | COMMENT ON COLUMN tms_paper.sort_mode IS 'paperè¯å·èªèº«é¡ºåº / randoméæº'; |
| | | COMMENT ON COLUMN tms_paper.has_subjective IS 'æ¯å¦å«ä¸»è§é¢ï¼ç»å·æ¶åå'; |
| | | COMMENT ON COLUMN tms_paper.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_paper.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_paper.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_paper.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_paper.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_paper.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_paper.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_paper.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_paper_status ON tms_paper (biz_status); |
| | | |
| | | -- è¯å·ç« èï¼å¯æé¢åå½ç±» |
| | | CREATE TABLE IF NOT EXISTS tms_paper_section ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | section_name varchar(100), |
| | | question_type varchar(20), |
| | | sort_no int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_paper_section PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_paper_section IS 'è¯å·ç« èï¼å¯æé¢åå½ç±»'; |
| | | COMMENT ON COLUMN tms_paper_section.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_paper_section.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_paper_section.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_paper_section.section_name IS 'ç« èåï¼å¦ ä¸ãåéé¢'; |
| | | COMMENT ON COLUMN tms_paper_section.question_type IS 'é»è®¤é¢å'; |
| | | COMMENT ON COLUMN tms_paper_section.sort_no IS 'æåº'; |
| | | COMMENT ON COLUMN tms_paper_section.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_paper_section.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_paper_section.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_paper_section.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_paper_section.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_psec_fid ON tms_paper_section (f_foreign_id); |
| | | |
| | | -- è¯å·ç»æè¯é¢ï¼å½åçæ¬ï¼ãå·²èè¯å·èµ° tms_exam_item å¿«ç
§ã |
| | | CREATE TABLE IF NOT EXISTS tms_paper_question ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | section_id varchar(50), |
| | | question_id varchar(50) NOT NULL, |
| | | score numeric(8,1), |
| | | sort_no int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_paper_question PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_paper_question IS 'è¯å·ç»æè¯é¢ï¼å½åçæ¬ï¼ãå·²èè¯å·èµ° tms_exam_item å¿«ç
§ã'; |
| | | COMMENT ON COLUMN tms_paper_question.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_paper_question.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_paper_question.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_paper_question.section_id IS 'ç« èID'; |
| | | COMMENT ON COLUMN tms_paper_question.question_id IS 'è¯é¢ID'; |
| | | COMMENT ON COLUMN tms_paper_question.score IS 'æ¬é¢åå¼'; |
| | | COMMENT ON COLUMN tms_paper_question.sort_no IS 'èªå®ä¹æåº'; |
| | | COMMENT ON COLUMN tms_paper_question.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_paper_question.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_paper_question.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_paper_question.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_paper_question.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pq_fid ON tms_paper_question (f_foreign_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pq_qid ON tms_paper_question (question_id); |
| | | |
| | | -- --------------------------------------------------------------------------- |
| | | -- 3. å²ä½/年度计å |
| | | -- --------------------------------------------------------------------------- |
| | | -- å²ä½å¹è®ç®å½ãæ¯æåçãåºå¼ã审æ¹éè¿å坿´åå¤å¶ã |
| | | CREATE TABLE IF NOT EXISTS tms_post_catalog ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | catalog_no varchar(50), |
| | | post_id varchar(50) NOT NULL, |
| | | post_name varchar(100), |
| | | dept_id varchar(50), |
| | | version_no int NOT NULL DEFAULT 1, |
| | | biz_status varchar(20) NOT NULL DEFAULT 'valid', |
| | | remark varchar(500), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_post_catalog PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_post_catalog IS 'å²ä½å¹è®ç®å½ãæ¯æåçãåºå¼ã审æ¹éè¿å坿´åå¤å¶ã'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_post_catalog.catalog_no IS 'ç®å½ç¼å·'; |
| | | COMMENT ON COLUMN tms_post_catalog.post_id IS 'å²ä½'; |
| | | COMMENT ON COLUMN tms_post_catalog.post_name IS 'å²ä½åç§°åä½'; |
| | | COMMENT ON COLUMN tms_post_catalog.dept_id IS 'æå±é¨é¨'; |
| | | COMMENT ON COLUMN tms_post_catalog.version_no IS 'çæ¬å·ï¼åç+1'; |
| | | COMMENT ON COLUMN tms_post_catalog.biz_status IS 'validææ / revokedåºå¼'; |
| | | COMMENT ON COLUMN tms_post_catalog.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_post_catalog.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pcat_post ON tms_post_catalog (post_id, biz_status); |
| | | |
| | | -- å²ä½å¹è®ç®å½å
容è¡ï¼æ¯æå车å¤è¡ãæå¨æåº |
| | | CREATE TABLE IF NOT EXISTS tms_post_catalog_item ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | sort_no int, |
| | | subject varchar(500), |
| | | train_mode varchar(50), |
| | | hours numeric(8,1), |
| | | eval_mode varchar(50), |
| | | material_id varchar(50), |
| | | course_id varchar(50), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_post_catalog_item PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_post_catalog_item IS 'å²ä½å¹è®ç®å½å
容è¡ï¼æ¯æå车å¤è¡ãæå¨æåº'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.sort_no IS '顺åº'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.subject IS 'å¹è®å
容'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.train_mode IS 'å¹è®æ¹å¼'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.hours IS '课æ¶'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.eval_mode IS 'èæ ¸æ¹å¼'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.material_id IS 'ææ'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.course_id IS '课ç¨'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_catalog_item.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pcati_fid ON tms_post_catalog_item (f_foreign_id); |
| | | |
| | | -- å²ä½å¹è®è®¡åãç±ç®å½æ¨éï¼å¯çæä¸ªäººå²ä½å¹è®åå¹è®ä»»å¡ã |
| | | CREATE TABLE IF NOT EXISTS tms_post_plan ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | plan_no varchar(50) NOT NULL, |
| | | post_id varchar(50), |
| | | post_name varchar(100), |
| | | dept_id varchar(50), |
| | | plan_end_time date, |
| | | post_desc text, |
| | | trainees text, |
| | | catalog_id varchar(50), |
| | | publish_status varchar(20) NOT NULL DEFAULT 'draft', |
| | | remark varchar(500), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_post_plan PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_post_plan IS 'å²ä½å¹è®è®¡åãç±ç®å½æ¨éï¼å¯çæä¸ªäººå²ä½å¹è®åå¹è®ä»»å¡ã'; |
| | | COMMENT ON COLUMN tms_post_plan.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_post_plan.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_post_plan.plan_no IS '计åç¼å· JP+YYYYMM+4ï¼å¦ JP2026090012'; |
| | | COMMENT ON COLUMN tms_post_plan.post_id IS 'å²ä½ç¼ç /ID'; |
| | | COMMENT ON COLUMN tms_post_plan.post_name IS 'å²ä½åç§°'; |
| | | COMMENT ON COLUMN tms_post_plan.dept_id IS 'æå±é¨é¨'; |
| | | COMMENT ON COLUMN tms_post_plan.plan_end_time IS '计åç»ææ¶é´ï¼å¸¦å
¥ä¸ªäººå²ä½å¹è®'; |
| | | COMMENT ON COLUMN tms_post_plan.post_desc IS 'å²ä½æè¿°'; |
| | | COMMENT ON COLUMN tms_post_plan.trainees IS 'å¹è®å¯¹è±¡ï¼ç¨æ·å¤é'; |
| | | COMMENT ON COLUMN tms_post_plan.catalog_id IS 'æ¥æºç®å½'; |
| | | COMMENT ON COLUMN tms_post_plan.publish_status IS 'draftæªåå¸ / publishedå·²åå¸'; |
| | | COMMENT ON COLUMN tms_post_plan.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_post_plan.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_post_plan.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_post_plan.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_post_plan.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_post_plan.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_plan.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_post_plan.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_plan.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_post_plan.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_post_plan.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_pplan_no ON tms_post_plan (plan_no) WHERE f_delete_mark = 0; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pplan_post ON tms_post_plan (post_id, publish_status); |
| | | |
| | | -- å²ä½å¹è®è®¡åæç» |
| | | CREATE TABLE IF NOT EXISTS tms_post_plan_item ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | plan_time date, |
| | | teacher_id varchar(50), |
| | | subject varchar(500), |
| | | train_mode varchar(50), |
| | | hours numeric(8,1), |
| | | eval_mode varchar(50), |
| | | material_id varchar(50), |
| | | task_id varchar(50), |
| | | line_status varchar(20), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_post_plan_item PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_post_plan_item IS 'å²ä½å¹è®è®¡åæç»'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_post_plan_item.plan_time IS 'å¹è®è®¡åæ¶é´'; |
| | | COMMENT ON COLUMN tms_post_plan_item.teacher_id IS 'å¹è®å¸'; |
| | | COMMENT ON COLUMN tms_post_plan_item.subject IS 'å¹è®å
容'; |
| | | COMMENT ON COLUMN tms_post_plan_item.train_mode IS 'å¹è®æ¹å¼'; |
| | | COMMENT ON COLUMN tms_post_plan_item.hours IS 'å¹è®è¯¾æ¶'; |
| | | COMMENT ON COLUMN tms_post_plan_item.eval_mode IS 'èæ ¸æ¹å¼'; |
| | | COMMENT ON COLUMN tms_post_plan_item.material_id IS 'ææ'; |
| | | COMMENT ON COLUMN tms_post_plan_item.task_id IS 'çæçå¹è®ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_post_plan_item.line_status IS 'pendingå¾
åå¸ / publishedå·²åå¸ / done已宿'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_post_plan_item.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pplani_fid ON tms_post_plan_item (f_foreign_id); |
| | | |
| | | -- 个人å²ä½å¹è®æ¸
åãè½¬å²æ¶å表æ è®°å·²å¹è®è¿åä¸çæä»»å¡ã |
| | | CREATE TABLE IF NOT EXISTS tms_person_post ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | plan_id varchar(50), |
| | | catalog_id varchar(50), |
| | | user_id varchar(50) NOT NULL, |
| | | post_id varchar(50), |
| | | plan_end_time date, |
| | | biz_status varchar(20) NOT NULL DEFAULT 'doing', |
| | | person_remark varchar(500), |
| | | audit_remark varchar(500), |
| | | approve_remark varchar(500), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_person_post PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_person_post IS '个人å²ä½å¹è®æ¸
åãè½¬å²æ¶å表æ è®°å·²å¹è®è¿åä¸çæä»»å¡ã'; |
| | | COMMENT ON COLUMN tms_person_post.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_person_post.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_person_post.plan_id IS 'å²ä½å¹è®è®¡åID'; |
| | | COMMENT ON COLUMN tms_person_post.catalog_id IS 'ç®å½ID'; |
| | | COMMENT ON COLUMN tms_person_post.user_id IS 'å¹è®å¯¹è±¡'; |
| | | COMMENT ON COLUMN tms_person_post.post_id IS 'å²ä½'; |
| | | COMMENT ON COLUMN tms_person_post.plan_end_time IS '计åç»ææ¶é´ï¼ç±è®¡å带åºï¼'; |
| | | COMMENT ON COLUMN tms_person_post.biz_status IS 'doingæ§è¡ä¸ / done宿 / returnedéå'; |
| | | COMMENT ON COLUMN tms_person_post.person_remark IS 'ä¸ªäººå¤æ³¨'; |
| | | COMMENT ON COLUMN tms_person_post.audit_remark IS 'å®¡æ ¸å¤æ³¨'; |
| | | COMMENT ON COLUMN tms_person_post.approve_remark IS '审æ¹å¤æ³¨'; |
| | | COMMENT ON COLUMN tms_person_post.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_person_post.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_person_post.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_person_post.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_person_post.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_post.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_person_post.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_post.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_person_post.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_person_post.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ppost_user ON tms_person_post (user_id, biz_status); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ppost_plan ON tms_person_post (plan_id); |
| | | |
| | | -- 个人å²ä½å¹è®æç» |
| | | CREATE TABLE IF NOT EXISTS tms_person_post_item ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | subject varchar(500), |
| | | train_mode varchar(50), |
| | | hours numeric(8,1), |
| | | eval_mode varchar(50), |
| | | already_trained varchar(10) NOT NULL DEFAULT '0', |
| | | task_id varchar(50), |
| | | line_status varchar(20), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_person_post_item PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_person_post_item IS '个人å²ä½å¹è®æç»'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_person_post_item.subject IS 'å¹è®å
容'; |
| | | COMMENT ON COLUMN tms_person_post_item.train_mode IS 'å¹è®æ¹å¼'; |
| | | COMMENT ON COLUMN tms_person_post_item.hours IS '课æ¶'; |
| | | COMMENT ON COLUMN tms_person_post_item.eval_mode IS 'èæ ¸æ¹å¼'; |
| | | COMMENT ON COLUMN tms_person_post_item.already_trained IS '转å²ï¼æ¯å¦å·²å¹è®è¿ï¼æ¯åä¸çæä»»å¡'; |
| | | COMMENT ON COLUMN tms_person_post_item.task_id IS 'çæçå¹è®ä»»å¡'; |
| | | COMMENT ON COLUMN tms_person_post_item.line_status IS 'ç¶æ'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_post_item.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pposti_fid ON tms_person_post_item (f_foreign_id); |
| | | |
| | | -- 年度å¹è®è®¡åï¼å
¬å¸/é¨é¨ï¼ãåç»åçæå¹è®ä»»å¡ãæµç¨ï¼é¨é¨è´è´£äººâQAè´è´£äººã |
| | | CREATE TABLE IF NOT EXISTS tms_annual_plan ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | plan_year int NOT NULL, |
| | | plan_no varchar(50) NOT NULL, |
| | | plan_type varchar(20), |
| | | author_id varchar(50), |
| | | author_dept_id varchar(50), |
| | | author_date date, |
| | | version_no int NOT NULL DEFAULT 1, |
| | | dept_leader_id varchar(50), |
| | | qa_leader_id varchar(50), |
| | | biz_status varchar(20) NOT NULL DEFAULT 'draft', |
| | | remark text, |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_annual_plan PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_annual_plan IS '年度å¹è®è®¡åï¼å
¬å¸/é¨é¨ï¼ãåç»åçæå¹è®ä»»å¡ãæµç¨ï¼é¨é¨è´è´£äººâQAè´è´£äººã'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_annual_plan.plan_year IS '年份ï¼å¶å®æ¶é»è®¤å½åå¹´+1'; |
| | | COMMENT ON COLUMN tms_annual_plan.plan_no IS '计åç¼å·ï¼å¦ 20260001'; |
| | | COMMENT ON COLUMN tms_annual_plan.plan_type IS 'companyå
¬å¸çº§ / depté¨é¨çº§'; |
| | | COMMENT ON COLUMN tms_annual_plan.author_id IS 'å¶å®äºº'; |
| | | COMMENT ON COLUMN tms_annual_plan.author_dept_id IS 'å¶å®é¨é¨'; |
| | | COMMENT ON COLUMN tms_annual_plan.author_date IS 'å¶å®æ¥æ'; |
| | | COMMENT ON COLUMN tms_annual_plan.version_no IS 'çæ¬'; |
| | | COMMENT ON COLUMN tms_annual_plan.dept_leader_id IS 'é¨é¨è´è´£äººï¼ç¾æ ¸å±ç¤ºï¼'; |
| | | COMMENT ON COLUMN tms_annual_plan.qa_leader_id IS 'QAé¨è´è´£äºº'; |
| | | COMMENT ON COLUMN tms_annual_plan.biz_status IS 'draftè稿 / approving审æ¹ä¸ / approvedå·²æ¹å'; |
| | | COMMENT ON COLUMN tms_annual_plan.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_annual_plan.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_aplan_no ON tms_annual_plan (plan_no) WHERE f_delete_mark = 0; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_aplan_year ON tms_annual_plan (plan_year, plan_type, author_dept_id); |
| | | |
| | | -- 年度å¹è®è®¡åæç» |
| | | CREATE TABLE IF NOT EXISTS tms_annual_plan_item ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | train_month varchar(6), |
| | | subject varchar(500), |
| | | train_mode varchar(50), |
| | | trainees text, |
| | | hours numeric(8,1), |
| | | teacher_id varchar(50), |
| | | eval_mode varchar(50), |
| | | course_id varchar(50), |
| | | line_status varchar(20) NOT NULL DEFAULT 'pending', |
| | | task_id varchar(50), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_annual_plan_item PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_annual_plan_item IS '年度å¹è®è®¡åæç»'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.train_month IS 'å¹è®æä»½ YYYYMMï¼å¦ 202609'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.subject IS 'å¹è®å
容'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.train_mode IS 'å¹è®æ¹å¼'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.trainees IS 'å¹è®å¯¹è±¡'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.hours IS 'å¹è®è¯¾æ¶'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.teacher_id IS 'å¹è®å¸'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.eval_mode IS 'èæ ¸æ¹å¼'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.course_id IS 'å¹è®è¯¾ç¨'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.line_status IS 'pendingå¾
æ§è¡ / taskedå·²çæä»»å¡ / done已宿 / delayed已延æ'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.task_id IS 'çæçå¹è®ä»»å¡'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_annual_plan_item.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_aplani_fid ON tms_annual_plan_item (f_foreign_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_aplani_month ON tms_annual_plan_item (train_month); |
| | | |
| | | -- 年度å¹è®è®¡åå»¶æç³è¯· |
| | | CREATE TABLE IF NOT EXISTS tms_annual_delay ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | plan_id varchar(50) NOT NULL, |
| | | item_id varchar(50), |
| | | old_month varchar(6), |
| | | new_month varchar(6), |
| | | reason text, |
| | | biz_status varchar(20), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_annual_delay PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_annual_delay IS '年度å¹è®è®¡åå»¶æç³è¯·'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_annual_delay.plan_id IS '年度计åID'; |
| | | COMMENT ON COLUMN tms_annual_delay.item_id IS '计åæç»ID'; |
| | | COMMENT ON COLUMN tms_annual_delay.old_month IS 'åæä»½'; |
| | | COMMENT ON COLUMN tms_annual_delay.new_month IS 'å»¶æè³æä»½'; |
| | | COMMENT ON COLUMN tms_annual_delay.reason IS 'å»¶æåå '; |
| | | COMMENT ON COLUMN tms_annual_delay.biz_status IS '审æ¹ç¶æ'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_annual_delay.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_adelay_plan ON tms_annual_delay (plan_id); |
| | | |
| | | -- --------------------------------------------------------------------------- |
| | | -- 4. å¹è®ä»»å¡ä¸è®°å½ |
| | | -- --------------------------------------------------------------------------- |
| | | -- å¹è®ä»»å¡ï¼æ ¸å¿ï¼ãæ¥æºï¼å²ä½è®¡å/年度计å/æä»¶çæ/临æ¶/å¤åº/åç»´æ¤ã |
| | | CREATE TABLE IF NOT EXISTS tms_task ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | task_no varchar(50) NOT NULL, |
| | | category varchar(50), |
| | | train_type varchar(50), |
| | | source_type varchar(50), |
| | | source_plan_no varchar(50), |
| | | source_id varchar(50), |
| | | source_item_id varchar(50), |
| | | subject text, |
| | | key_points text, |
| | | material_id varchar(50), |
| | | material_no varchar(50), |
| | | place_id varchar(50), |
| | | place_no varchar(50), |
| | | place_name varchar(200), |
| | | start_time timestamp, |
| | | end_time timestamp, |
| | | close_time timestamp, |
| | | paper_id varchar(50), |
| | | paper_name varchar(300), |
| | | exam_start timestamp, |
| | | exam_end timestamp, |
| | | teacher_id text, |
| | | train_mode varchar(50), |
| | | eval_mode varchar(50), |
| | | trainees text, |
| | | task_kind varchar(20), |
| | | prev_task_no varchar(50), |
| | | publish_status varchar(20) NOT NULL DEFAULT 'draft', |
| | | publish_time timestamp, |
| | | retake_limit int NOT NULL DEFAULT 1, |
| | | pass_score numeric(8,1), |
| | | quiz_ratio int, |
| | | sign_rate int, |
| | | pass_rate int, |
| | | unfinished_rate int, |
| | | overdue_remind varchar(10) NOT NULL DEFAULT '0', |
| | | invite_flag varchar(10) NOT NULL DEFAULT '0', |
| | | dms_file_id varchar(50), |
| | | remark varchar(500), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_task PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_task IS 'å¹è®ä»»å¡ï¼æ ¸å¿ï¼ãæ¥æºï¼å²ä½è®¡å/年度计å/æä»¶çæ/临æ¶/å¤åº/åç»´æ¤ã'; |
| | | COMMENT ON COLUMN tms_task.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_task.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_task.task_no IS 'ä»»å¡ç¼å· TT+YYYYMM+4ï¼å¦ TT2026090618'; |
| | | COMMENT ON COLUMN tms_task.category IS 'å¹è®åç±»ï¼ä¸´æ¶å¹è®/å²ä½å¹è®è®¡å/年度å¹è®è®¡å/æä»¶çæå¹è®/å¤åºå¹è®/åç»´æ¤'; |
| | | COMMENT ON COLUMN tms_task.train_type IS 'å¹è®ç±»åï¼åè¡¨åæ®µï¼å¯ä¸å类并åï¼'; |
| | | COMMENT ON COLUMN tms_task.source_type IS 'æ¥æºç±»åç¼ç '; |
| | | COMMENT ON COLUMN tms_task.source_plan_no IS 'æ¥æºè®¡åç¼å·'; |
| | | COMMENT ON COLUMN tms_task.source_id IS 'æ¥æºä¸»è¡¨ID'; |
| | | COMMENT ON COLUMN tms_task.source_item_id IS 'æ¥æºæç»IDï¼å½æ¡£åå'; |
| | | COMMENT ON COLUMN tms_task.subject IS 'å¹è®ä¸»é¢'; |
| | | COMMENT ON COLUMN tms_task.key_points IS 'å¹è®è¦ç¹ï¼ç¾å°å强å¶é
读'; |
| | | COMMENT ON COLUMN tms_task.material_id IS 'å¹è®ææ'; |
| | | COMMENT ON COLUMN tms_task.material_no IS 'ææç¼å·åä½'; |
| | | COMMENT ON COLUMN tms_task.place_id IS 'å¹è®å°ç¹'; |
| | | COMMENT ON COLUMN tms_task.place_no IS 'å°ç¹ç¼å·åä½'; |
| | | COMMENT ON COLUMN tms_task.place_name IS 'å°ç¹åç§°åä½'; |
| | | COMMENT ON COLUMN tms_task.start_time IS 'å¹è®å¼å§æ¶é´'; |
| | | COMMENT ON COLUMN tms_task.end_time IS 'å¹è®ç»ææ¶é´'; |
| | | COMMENT ON COLUMN tms_task.close_time IS 'ä»»å¡å
³éæ¶é´ï¼å°è¾¾åè®°å½è¿å¾
彿¡£'; |
| | | COMMENT ON COLUMN tms_task.paper_id IS 'è¯å·'; |
| | | COMMENT ON COLUMN tms_task.paper_name IS 'è¯å·åç§°åä½'; |
| | | COMMENT ON COLUMN tms_task.exam_start IS 'èè¯å¼å§æ¶é´'; |
| | | COMMENT ON COLUMN tms_task.exam_end IS 'èè¯ç»ææ¶é´'; |
| | | COMMENT ON COLUMN tms_task.teacher_id IS 'å¹è®å¸ï¼å¯å¤é'; |
| | | COMMENT ON COLUMN tms_task.train_mode IS 'å¹è®æ¹å¼'; |
| | | COMMENT ON COLUMN tms_task.eval_mode IS 'å¹è®ææè¯ä¼°æ¹å¼/èæ ¸æ¹å¼'; |
| | | COMMENT ON COLUMN tms_task.trainees IS 'å¹è®å¯¹è±¡ï¼ç¨æ·å¤éï¼å叿¶æä¸ªäººä»»å¡'; |
| | | COMMENT ON COLUMN tms_task.task_kind IS 'ä»»å¡ç±»åï¼newæ°å¢ / continueç»§ç»(åç»´æ¤)'; |
| | | COMMENT ON COLUMN tms_task.prev_task_no IS 'ä¸ä¸æ¬¡å¹è®ä»»å¡ç¼å·'; |
| | | COMMENT ON COLUMN tms_task.publish_status IS 'draftæªåå¸ / publishedå·²åå¸ / cancelled已忶 / done已宿'; |
| | | COMMENT ON COLUMN tms_task.publish_time IS 'å叿¶é´'; |
| | | COMMENT ON COLUMN tms_task.retake_limit IS 'ä¸åæ ¼å¯éèæ¬¡æ°'; |
| | | COMMENT ON COLUMN tms_task.pass_score IS 'éè¿åæ°ï¼ç©ºåç¨è¯å·'; |
| | | COMMENT ON COLUMN tms_task.quiz_ratio IS 'æé®æ¯ä¾0-100ï¼èªå¨ç®åºæé®äººæ°'; |
| | | COMMENT ON COLUMN tms_task.sign_rate IS 'ç¾å°ç%ï¼åæ´èå°æ°'; |
| | | COMMENT ON COLUMN tms_task.pass_rate IS 'åæ ¼ç%ï¼åæ´èå°æ°'; |
| | | COMMENT ON COLUMN tms_task.unfinished_rate IS 'æªå®æç%'; |
| | | COMMENT ON COLUMN tms_task.overdue_remind IS 'æ¯å¦é¾ææéé¨é¨é¢å¯¼'; |
| | | COMMENT ON COLUMN tms_task.invite_flag IS 'æ¯å¦åéå¹è®é请'; |
| | | COMMENT ON COLUMN tms_task.dms_file_id IS 'æä»¶çæèªå¨å¼å
¥çéä»¶'; |
| | | COMMENT ON COLUMN tms_task.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_task.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_task.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_task.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_task.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_task.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_task.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_task.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_task.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_task.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_task.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_task_no ON tms_task (task_no) WHERE f_delete_mark = 0; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_task_status ON tms_task (publish_status, start_time); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_task_place ON tms_task (place_id, start_time, end_time); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_task_source ON tms_task (source_type, source_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_task_teacher ON tms_task (teacher_id); |
| | | |
| | | -- å¹è®ä»»å¡ææ/éä»¶æ¸
åï¼åå¸å忥å°å¹è®è®°å½ |
| | | CREATE TABLE IF NOT EXISTS tms_task_file ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | file_no varchar(50), |
| | | file_name varchar(300), |
| | | material_id varchar(50), |
| | | file_json text, |
| | | can_download varchar(10) NOT NULL DEFAULT '0', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_task_file PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_task_file IS 'å¹è®ä»»å¡ææ/éä»¶æ¸
åï¼åå¸å忥å°å¹è®è®°å½'; |
| | | COMMENT ON COLUMN tms_task_file.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_task_file.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_task_file.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_task_file.file_no IS 'ç¼å·'; |
| | | COMMENT ON COLUMN tms_task_file.file_name IS 'æä»¶åç§°'; |
| | | COMMENT ON COLUMN tms_task_file.material_id IS 'æ¥æºææ'; |
| | | COMMENT ON COLUMN tms_task_file.file_json IS 'éä»¶'; |
| | | COMMENT ON COLUMN tms_task_file.can_download IS 'å¼ç¨ææé»è®¤ä¸å¯ä¸è½½æå°'; |
| | | COMMENT ON COLUMN tms_task_file.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_task_file.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_task_file.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_task_file.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_task_file.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_tfile_fid ON tms_task_file (f_foreign_id); |
| | | |
| | | -- å¹è®ä»»å¡æé®é¢è®¾é®é¢åçæ¡ï¼ç¾å°åå¼¹åº |
| | | CREATE TABLE IF NOT EXISTS tms_task_quiz ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | sort_no int, |
| | | question text, |
| | | answer text, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_task_quiz PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_task_quiz IS 'å¹è®ä»»å¡æé®é¢è®¾é®é¢åçæ¡ï¼ç¾å°åå¼¹åº'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_task_quiz.sort_no IS 'åºå·'; |
| | | COMMENT ON COLUMN tms_task_quiz.question IS 'é®é¢'; |
| | | COMMENT ON COLUMN tms_task_quiz.answer IS 'åèçæ¡'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_task_quiz.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_tquiz_fid ON tms_task_quiz (f_foreign_id); |
| | | |
| | | -- 个人å¹è®ä»»å¡ãå叿¶æäººæè¡ï¼å¦å端èªå¦/ç¾å°/èè¯å
¥å£ã |
| | | CREATE TABLE IF NOT EXISTS tms_person_task ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | task_id varchar(50) NOT NULL, |
| | | task_no varchar(50), |
| | | user_id varchar(50) NOT NULL, |
| | | dept_id varchar(50), |
| | | hours numeric(8,1), |
| | | biz_status varchar(20) NOT NULL DEFAULT 'todo', |
| | | sign_time timestamp, |
| | | sign_mode varchar(20), |
| | | learn_seconds int, |
| | | exam_score numeric(8,1), |
| | | pass_flag varchar(20), |
| | | guest_flag varchar(10) NOT NULL DEFAULT '0', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_person_task PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_person_task IS '个人å¹è®ä»»å¡ãå叿¶æäººæè¡ï¼å¦å端èªå¦/ç¾å°/èè¯å
¥å£ã'; |
| | | COMMENT ON COLUMN tms_person_task.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_person_task.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_person_task.task_id IS 'å¹è®ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_person_task.task_no IS 'ä»»å¡ç¼å·åä½'; |
| | | COMMENT ON COLUMN tms_person_task.user_id IS 'å¹è®å¯¹è±¡'; |
| | | COMMENT ON COLUMN tms_person_task.dept_id IS '彿¶é¨é¨å¿«ç
§'; |
| | | COMMENT ON COLUMN tms_person_task.hours IS '妿¶'; |
| | | COMMENT ON COLUMN tms_person_task.biz_status IS 'todoæªå®æ / signedå·²ç¾å° / done已宿 / expiredå·²è¿æ / cancelled已忶'; |
| | | COMMENT ON COLUMN tms_person_task.sign_time IS 'ç¾å°æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_task.sign_mode IS 'ç¾å°æ¹å¼'; |
| | | COMMENT ON COLUMN tms_person_task.learn_seconds IS 'å¨çº¿å¦ä¹ æ¶é¿ç§'; |
| | | COMMENT ON COLUMN tms_person_task.exam_score IS 'èè¯æç»©'; |
| | | COMMENT ON COLUMN tms_person_task.pass_flag IS 'passåæ ¼ / failä¸åæ ¼ / naæ éèæ ¸'; |
| | | COMMENT ON COLUMN tms_person_task.guest_flag IS 'æ¯å¦ååå¤ç¾å°'; |
| | | COMMENT ON COLUMN tms_person_task.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_person_task.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_task.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_person_task.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_task.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_person_task.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_person_task.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ptask_user ON tms_person_task (user_id, biz_status); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ptask_task ON tms_person_task (task_id); |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_ptask_task_user ON tms_person_task (task_id, user_id) WHERE f_delete_mark = 0; |
| | | |
| | | -- å¹è®è®°å½ãä»»å¡åå¸åçæï¼å
³éæ¶é´å°è¾¾è¿å¾
彿¡£ã |
| | | CREATE TABLE IF NOT EXISTS tms_record ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | record_no varchar(50), |
| | | task_id varchar(50) NOT NULL, |
| | | task_no varchar(50), |
| | | category varchar(50), |
| | | subject text, |
| | | teacher_id text, |
| | | train_type varchar(50), |
| | | train_mode varchar(50), |
| | | eval_mode varchar(50), |
| | | start_time timestamp, |
| | | end_time timestamp, |
| | | close_time timestamp, |
| | | archive_status varchar(20) NOT NULL DEFAULT 'pending', |
| | | archive_time timestamp, |
| | | archiver_id varchar(50), |
| | | sign_rate int, |
| | | pass_rate int, |
| | | lecture_file text, |
| | | paper_sign_file text, |
| | | print_tpl_id varchar(50), |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_record PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_record IS 'å¹è®è®°å½ãä»»å¡åå¸åçæï¼å
³éæ¶é´å°è¾¾è¿å¾
彿¡£ã'; |
| | | COMMENT ON COLUMN tms_record.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_record.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_record.record_no IS 'è®°å½ç¼å·ï¼é»è®¤åä»»å¡ç¼å·'; |
| | | COMMENT ON COLUMN tms_record.task_id IS 'å¹è®ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_record.task_no IS 'ä»»å¡ç¼å·'; |
| | | COMMENT ON COLUMN tms_record.category IS 'å¹è®åç±»'; |
| | | COMMENT ON COLUMN tms_record.subject IS 'å¹è®ä¸»é¢'; |
| | | COMMENT ON COLUMN tms_record.teacher_id IS 'å¹è®å¸'; |
| | | COMMENT ON COLUMN tms_record.train_type IS 'å¹è®ç±»å'; |
| | | COMMENT ON COLUMN tms_record.train_mode IS 'å¹è®æ¹å¼'; |
| | | COMMENT ON COLUMN tms_record.eval_mode IS 'èæ ¸æ¹å¼'; |
| | | COMMENT ON COLUMN tms_record.start_time IS 'å¹è®å¼å§æ¶é´ï¼å¥ææ¨¡æ¿ææ¤ç´¢å¼çæ¬'; |
| | | COMMENT ON COLUMN tms_record.end_time IS 'å¹è®ç»ææ¶é´'; |
| | | COMMENT ON COLUMN tms_record.close_time IS 'å
³éæ¶é´'; |
| | | COMMENT ON COLUMN tms_record.archive_status IS 'pendingå¾
彿¡£ / readyå¯å½æ¡£ / archived已彿¡£ / invalidæ æ'; |
| | | COMMENT ON COLUMN tms_record.archive_time IS '彿¡£æ¶é´'; |
| | | COMMENT ON COLUMN tms_record.archiver_id IS '彿¡£äºº'; |
| | | COMMENT ON COLUMN tms_record.sign_rate IS 'åä¸/ç¾å°ç% åæ´èå°æ°'; |
| | | COMMENT ON COLUMN tms_record.pass_rate IS 'åæ ¼ç%'; |
| | | COMMENT ON COLUMN tms_record.lecture_file IS 'å¹è®è®²ä¹éä»¶'; |
| | | COMMENT ON COLUMN tms_record.paper_sign_file IS '纸质ç¾å°è¡¨éä»¶'; |
| | | COMMENT ON COLUMN tms_record.print_tpl_id IS 'æå°æ¨¡æ¿çæ¬'; |
| | | COMMENT ON COLUMN tms_record.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_record.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_record.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_record.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_record.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_record.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_record.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_record.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_record_task ON tms_record (task_id) WHERE f_delete_mark = 0; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_record_arch ON tms_record (archive_status, start_time); |
| | | |
| | | -- å¹è®è®°å½ç¾å°/ç»ææç»ï¼ä¸äººä¸è¡ï¼ |
| | | CREATE TABLE IF NOT EXISTS tms_record_sign ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | user_id varchar(50) NOT NULL, |
| | | user_name varchar(100), |
| | | dept_id varchar(50), |
| | | sign_time timestamp, |
| | | sign_mode varchar(20), |
| | | guest_flag varchar(10) NOT NULL DEFAULT '0', |
| | | result_flag varchar(20), |
| | | exam_score numeric(8,1), |
| | | practice_score numeric(8,1), |
| | | quiz_score numeric(8,1), |
| | | exam_id varchar(50), |
| | | judge_user_id varchar(50), |
| | | judge_time timestamp, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_record_sign PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_record_sign IS 'å¹è®è®°å½ç¾å°/ç»ææç»ï¼ä¸äººä¸è¡ï¼'; |
| | | COMMENT ON COLUMN tms_record_sign.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_record_sign.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_record_sign.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_record_sign.user_id IS 'å¹è®å¯¹è±¡'; |
| | | COMMENT ON COLUMN tms_record_sign.user_name IS 'å§åå¿«ç
§'; |
| | | COMMENT ON COLUMN tms_record_sign.dept_id IS 'é¨é¨å¿«ç
§'; |
| | | COMMENT ON COLUMN tms_record_sign.sign_time IS 'ç¾å°æ¶é´'; |
| | | COMMENT ON COLUMN tms_record_sign.sign_mode IS 'ç¾å°æ¹å¼'; |
| | | COMMENT ON COLUMN tms_record_sign.guest_flag IS 'ååå¤ç¾å°'; |
| | | COMMENT ON COLUMN tms_record_sign.result_flag IS 'passåæ ¼ / failä¸åæ ¼ / absentæªåå / naæ éèæ ¸'; |
| | | COMMENT ON COLUMN tms_record_sign.exam_score IS 'èè¯æç»©'; |
| | | COMMENT ON COLUMN tms_record_sign.practice_score IS '宿æç»©'; |
| | | COMMENT ON COLUMN tms_record_sign.quiz_score IS 'æé®æç»©'; |
| | | COMMENT ON COLUMN tms_record_sign.exam_id IS 'çå·ID'; |
| | | COMMENT ON COLUMN tms_record_sign.judge_user_id IS 'ç»æå¤å®äººï¼å¹è®å¸ï¼'; |
| | | COMMENT ON COLUMN tms_record_sign.judge_time IS 'å¤å®æ¶é´'; |
| | | COMMENT ON COLUMN tms_record_sign.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_record_sign.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_record_sign.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_record_sign.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_record_sign.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_rsign_fid ON tms_record_sign (f_foreign_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_rsign_user ON tms_record_sign (user_id); |
| | | |
| | | -- å¹è®è®°å½åæ´ï¼æ¹ç»ææ¶é´ãå¢å å¹è®äººåãå¹è®å¸åèµ·âé¨é¨é¢å¯¼ï¼é¢å¯¼å³å¹è®å¸åè·³è¿ï¼ã |
| | | CREATE TABLE IF NOT EXISTS tms_record_change ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | record_id varchar(50) NOT NULL, |
| | | task_id varchar(50), |
| | | change_type varchar(20), |
| | | old_end_time timestamp, |
| | | new_end_time timestamp, |
| | | add_users text, |
| | | reason text, |
| | | biz_status varchar(20), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_record_change PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_record_change IS 'å¹è®è®°å½åæ´ï¼æ¹ç»ææ¶é´ãå¢å å¹è®äººåãå¹è®å¸åèµ·âé¨é¨é¢å¯¼ï¼é¢å¯¼å³å¹è®å¸åè·³è¿ï¼ã'; |
| | | COMMENT ON COLUMN tms_record_change.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_record_change.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_record_change.record_id IS 'å¹è®è®°å½ID'; |
| | | COMMENT ON COLUMN tms_record_change.task_id IS 'ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_record_change.change_type IS 'end_timeæ¹ç»ææ¶é´ / add_userå¢å 人å'; |
| | | COMMENT ON COLUMN tms_record_change.old_end_time IS 'åç»ææ¶é´'; |
| | | COMMENT ON COLUMN tms_record_change.new_end_time IS 'æ°ç»ææ¶é´'; |
| | | COMMENT ON COLUMN tms_record_change.add_users IS 'æ°å¢äººå'; |
| | | COMMENT ON COLUMN tms_record_change.reason IS 'åæ´åå '; |
| | | COMMENT ON COLUMN tms_record_change.biz_status IS '审æ¹ç¶æ'; |
| | | COMMENT ON COLUMN tms_record_change.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_record_change.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_record_change.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_record_change.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_record_change.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_record_change.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_record_change.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_record_change.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_record_change.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_record_change.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_rchg_rec ON tms_record_change (record_id); |
| | | |
| | | -- å¹è®èµæå½æ¡£ï¼çµå/纸质/å®æè®°å½åç»åï¼ |
| | | CREATE TABLE IF NOT EXISTS tms_archive_file ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | record_id varchar(50) NOT NULL, |
| | | task_id varchar(50), |
| | | archive_type varchar(20), |
| | | file_json text, |
| | | archive_time timestamp, |
| | | archiver_id varchar(50), |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_archive_file PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_archive_file IS 'å¹è®èµæå½æ¡£ï¼çµå/纸质/å®æè®°å½åç»åï¼'; |
| | | COMMENT ON COLUMN tms_archive_file.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_archive_file.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_archive_file.record_id IS 'å¹è®è®°å½ID'; |
| | | COMMENT ON COLUMN tms_archive_file.task_id IS 'ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_archive_file.archive_type IS 'electronicçµå / paper纸质 / practiceå®ææ¡£æ¡'; |
| | | COMMENT ON COLUMN tms_archive_file.file_json IS '彿¡£èµæ'; |
| | | COMMENT ON COLUMN tms_archive_file.archive_time IS '彿¡£æ¶é´'; |
| | | COMMENT ON COLUMN tms_archive_file.archiver_id IS '彿¡£äºº'; |
| | | COMMENT ON COLUMN tms_archive_file.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_archive_file.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_archive_file.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_archive_file.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_archive_file.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_archive_file.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_archive_file.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_archive_file.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_afile_rec ON tms_archive_file (record_id); |
| | | |
| | | -- --------------------------------------------------------------------------- |
| | | -- 5. èè¯ä¸èæ ¸ |
| | | -- --------------------------------------------------------------------------- |
| | | -- å¨çº¿èè¯çå·ãä¸ééåºå¯ç»èï¼æäº¤å客è§é¢èªå¨è¯åï¼æä¸»è§é¢è¿é
å·ã |
| | | CREATE TABLE IF NOT EXISTS tms_exam ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | task_id varchar(50) NOT NULL, |
| | | person_task_id varchar(50), |
| | | record_id varchar(50), |
| | | paper_id varchar(50), |
| | | paper_name varchar(300), |
| | | user_id varchar(50) NOT NULL, |
| | | attempt_no int NOT NULL DEFAULT 1, |
| | | start_time timestamp, |
| | | submit_time timestamp, |
| | | duration_min int, |
| | | objective_score numeric(8,1), |
| | | subjective_score numeric(8,1), |
| | | total_score numeric(8,1), |
| | | pass_score numeric(8,1), |
| | | pass_flag varchar(20), |
| | | grade_status varchar(20) NOT NULL DEFAULT 'auto', |
| | | grader_id varchar(50), |
| | | grade_time timestamp, |
| | | exam_status varchar(20) NOT NULL DEFAULT 'doing', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_exam PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_exam IS 'å¨çº¿èè¯çå·ãä¸ééåºå¯ç»èï¼æäº¤å客è§é¢èªå¨è¯åï¼æä¸»è§é¢è¿é
å·ã'; |
| | | COMMENT ON COLUMN tms_exam.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_exam.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_exam.task_id IS 'å¹è®ä»»å¡'; |
| | | COMMENT ON COLUMN tms_exam.person_task_id IS '个人任å¡'; |
| | | COMMENT ON COLUMN tms_exam.record_id IS 'å¹è®è®°å½'; |
| | | COMMENT ON COLUMN tms_exam.paper_id IS '彿¶è¯å·ID'; |
| | | COMMENT ON COLUMN tms_exam.paper_name IS 'è¯å·åç§°å¿«ç
§'; |
| | | COMMENT ON COLUMN tms_exam.user_id IS 'èç'; |
| | | COMMENT ON COLUMN tms_exam.attempt_no IS 'ç¬¬å æ¬¡èè¯'; |
| | | COMMENT ON COLUMN tms_exam.start_time IS 'å¼å§ä½ç'; |
| | | COMMENT ON COLUMN tms_exam.submit_time IS 'äº¤å·æ¶é´'; |
| | | COMMENT ON COLUMN tms_exam.duration_min IS '彿¶æ¶é¿å¿«ç
§'; |
| | | COMMENT ON COLUMN tms_exam.objective_score IS '客è§é¢å¾å'; |
| | | COMMENT ON COLUMN tms_exam.subjective_score IS '主è§é¢å¾å'; |
| | | COMMENT ON COLUMN tms_exam.total_score IS 'æ»å'; |
| | | COMMENT ON COLUMN tms_exam.pass_score IS '彿¶åæ ¼åå¿«ç
§'; |
| | | COMMENT ON COLUMN tms_exam.pass_flag IS 'pass/fail'; |
| | | COMMENT ON COLUMN tms_exam.grade_status IS 'autoæ éé
å· / pendingå¾
æ¹æ¹ / gradedå·²æ¹æ¹'; |
| | | COMMENT ON COLUMN tms_exam.grader_id IS 'é
å·èå¸'; |
| | | COMMENT ON COLUMN tms_exam.grade_time IS 'é
å·æ¶é´'; |
| | | COMMENT ON COLUMN tms_exam.exam_status IS 'doingèè¯ä¸ / submittedå·²äº¤å· / cancelled已忶'; |
| | | COMMENT ON COLUMN tms_exam.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_exam.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_exam.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_exam.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_exam.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_exam.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_exam.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_exam_task_user ON tms_exam (task_id, user_id, attempt_no); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_exam_grade ON tms_exam (grade_status); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_exam_user ON tms_exam (user_id); |
| | | |
| | | -- çå·è¯é¢å¿«ç
§ï¼é¢ç®/é项/çæ¡/åæ°ä¿çèè¯å½æ¶ç¶æï¼åç»æ¹é¢æ¹å·ä¸å½±åã |
| | | CREATE TABLE IF NOT EXISTS tms_exam_item ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | question_id varchar(50), |
| | | question_type varchar(20), |
| | | stem text, |
| | | options_json text, |
| | | correct_answer text, |
| | | user_answer text, |
| | | score numeric(8,1), |
| | | got_score numeric(8,1), |
| | | is_subjective varchar(10) NOT NULL DEFAULT '0', |
| | | analysis text, |
| | | sort_no int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_exam_item PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_exam_item IS 'çå·è¯é¢å¿«ç
§ï¼é¢ç®/é项/çæ¡/åæ°ä¿çèè¯å½æ¶ç¶æï¼åç»æ¹é¢æ¹å·ä¸å½±åã'; |
| | | COMMENT ON COLUMN tms_exam_item.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_exam_item.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_exam_item.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_exam_item.question_id IS 'åè¯é¢ID'; |
| | | COMMENT ON COLUMN tms_exam_item.question_type IS 'é¢åå¿«ç
§'; |
| | | COMMENT ON COLUMN tms_exam_item.stem IS 'é¢å¹²å¿«ç
§'; |
| | | COMMENT ON COLUMN tms_exam_item.options_json IS 'é项快ç
§ JSON'; |
| | | COMMENT ON COLUMN tms_exam_item.correct_answer IS '彿¶æ£ç¡®çæ¡'; |
| | | COMMENT ON COLUMN tms_exam_item.user_answer IS 'èçä½ç'; |
| | | COMMENT ON COLUMN tms_exam_item.score IS 'æ¬é¢æ»¡å'; |
| | | COMMENT ON COLUMN tms_exam_item.got_score IS 'å¾å'; |
| | | COMMENT ON COLUMN tms_exam_item.is_subjective IS 'æ¯å¦ä¸»è§é¢'; |
| | | COMMENT ON COLUMN tms_exam_item.analysis IS 'è§£æå¿«ç
§'; |
| | | COMMENT ON COLUMN tms_exam_item.sort_no IS 'è¯å·å
顺åº'; |
| | | COMMENT ON COLUMN tms_exam_item.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_exam_item.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_exam_item.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_exam_item.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_exam_item.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_eitem_fid ON tms_exam_item (f_foreign_id); |
| | | |
| | | -- å®æèæ ¸ä¸»è¡¨ï¼ä¿ååååå¹è®è®°å½ |
| | | CREATE TABLE IF NOT EXISTS tms_practice ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | task_id varchar(50) NOT NULL, |
| | | record_id varchar(50), |
| | | teacher_id varchar(50), |
| | | practice_time timestamp, |
| | | remark varchar(500), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_practice PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_practice IS 'å®æèæ ¸ä¸»è¡¨ï¼ä¿ååååå¹è®è®°å½'; |
| | | COMMENT ON COLUMN tms_practice.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_practice.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_practice.task_id IS 'å¹è®ä»»å¡'; |
| | | COMMENT ON COLUMN tms_practice.record_id IS 'å¹è®è®°å½'; |
| | | COMMENT ON COLUMN tms_practice.teacher_id IS 'èæ ¸äºº'; |
| | | COMMENT ON COLUMN tms_practice.practice_time IS 'èæ ¸æ¶é´'; |
| | | COMMENT ON COLUMN tms_practice.remark IS '夿³¨'; |
| | | COMMENT ON COLUMN tms_practice.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_practice.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_practice.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_practice.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_practice.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_practice.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_practice.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_prac_task ON tms_practice (task_id); |
| | | |
| | | -- å®æèæ ¸æç» |
| | | CREATE TABLE IF NOT EXISTS tms_practice_item ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | user_id varchar(50) NOT NULL, |
| | | content text, |
| | | score numeric(8,1), |
| | | result_flag varchar(20), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_practice_item PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_practice_item IS 'å®æèæ ¸æç»'; |
| | | COMMENT ON COLUMN tms_practice_item.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_practice_item.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_practice_item.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_practice_item.user_id IS 'å¹è®å¯¹è±¡'; |
| | | COMMENT ON COLUMN tms_practice_item.content IS 'èæ ¸å
容'; |
| | | COMMENT ON COLUMN tms_practice_item.score IS 'åæ°'; |
| | | COMMENT ON COLUMN tms_practice_item.result_flag IS 'åæ ¼/ä¸åæ ¼'; |
| | | COMMENT ON COLUMN tms_practice_item.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_practice_item.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_practice_item.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_practice_item.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_practice_item.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_praci_fid ON tms_practice_item (f_foreign_id); |
| | | |
| | | -- ç°åºæé®èæ ¸æåï¼ä¿ååååå¹è®è®°å½ |
| | | CREATE TABLE IF NOT EXISTS tms_quiz_score ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | task_id varchar(50) NOT NULL, |
| | | record_id varchar(50), |
| | | user_id varchar(50) NOT NULL, |
| | | question text, |
| | | answer text, |
| | | score numeric(8,1), |
| | | teacher_id varchar(50), |
| | | quiz_time timestamp, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_quiz_score PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_quiz_score IS 'ç°åºæé®èæ ¸æåï¼ä¿ååååå¹è®è®°å½'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_quiz_score.task_id IS 'å¹è®ä»»å¡'; |
| | | COMMENT ON COLUMN tms_quiz_score.record_id IS 'å¹è®è®°å½'; |
| | | COMMENT ON COLUMN tms_quiz_score.user_id IS 'å¹è®å¯¹è±¡'; |
| | | COMMENT ON COLUMN tms_quiz_score.question IS 'æé®å
容'; |
| | | COMMENT ON COLUMN tms_quiz_score.answer IS 'åç'; |
| | | COMMENT ON COLUMN tms_quiz_score.score IS 'åæ°'; |
| | | COMMENT ON COLUMN tms_quiz_score.teacher_id IS 'æé®äºº'; |
| | | COMMENT ON COLUMN tms_quiz_score.quiz_time IS 'æ¶é´'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_quiz_score.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_qscore_task ON tms_quiz_score (task_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_qscore_user ON tms_quiz_score (user_id); |
| | | |
| | | -- --------------------------------------------------------------------------- |
| | | -- 6. ä¸ªäººæ¡£æ¡ |
| | | -- --------------------------------------------------------------------------- |
| | | -- 个人å¹è®æ¡£æ¡ãå
¥èèªå¨å»ºæ¡£ï¼ä¸äººä¸æ¡£ã |
| | | CREATE TABLE IF NOT EXISTS tms_person_file ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | archive_no varchar(50) NOT NULL, |
| | | archive_date date, |
| | | user_id varchar(50) NOT NULL, |
| | | user_name varchar(100), |
| | | dept_id varchar(50), |
| | | hire_date date, |
| | | leave_date date, |
| | | main_post_id varchar(50), |
| | | part_post_id varchar(50), |
| | | biz_status varchar(20) NOT NULL DEFAULT 'valid', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_person_file PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_person_file IS '个人å¹è®æ¡£æ¡ãå
¥èèªå¨å»ºæ¡£ï¼ä¸äººä¸æ¡£ã'; |
| | | COMMENT ON COLUMN tms_person_file.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_person_file.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_person_file.archive_no IS 'æ¡£æ¡ç¼å· AR+YYYY+4'; |
| | | COMMENT ON COLUMN tms_person_file.archive_date IS '建档æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_file.user_id IS 'åå·¥'; |
| | | COMMENT ON COLUMN tms_person_file.user_name IS 'å§ååä½'; |
| | | COMMENT ON COLUMN tms_person_file.dept_id IS 'æå±é¨é¨'; |
| | | COMMENT ON COLUMN tms_person_file.hire_date IS 'å
¥èæ¶é´'; |
| | | COMMENT ON COLUMN tms_person_file.leave_date IS 'ç¦»èæ¶é´'; |
| | | COMMENT ON COLUMN tms_person_file.main_post_id IS '主è¦å²ä½'; |
| | | COMMENT ON COLUMN tms_person_file.part_post_id IS 'å
¼èå²ä½'; |
| | | COMMENT ON COLUMN tms_person_file.biz_status IS 'validå¨è / left离è'; |
| | | COMMENT ON COLUMN tms_person_file.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_person_file.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_file.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_person_file.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_file.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_person_file.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_person_file.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_pfile_user ON tms_person_file (user_id) WHERE f_delete_mark = 0; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_pfile_no ON tms_person_file (archive_no) WHERE f_delete_mark = 0; |
| | | |
| | | -- 个人å¹è®æ¡£æ¡-å·¥ä½å±¥å |
| | | CREATE TABLE IF NOT EXISTS tms_person_work ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | company_name varchar(200), |
| | | post_name varchar(100), |
| | | hire_date date, |
| | | leave_date date, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | CONSTRAINT pk_tms_person_work PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_person_work IS '个人å¹è®æ¡£æ¡-å·¥ä½å±¥å'; |
| | | COMMENT ON COLUMN tms_person_work.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_person_work.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_person_work.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_person_work.company_name IS 'å
¬å¸åç§°'; |
| | | COMMENT ON COLUMN tms_person_work.post_name IS 'ä»»èå²ä½'; |
| | | COMMENT ON COLUMN tms_person_work.hire_date IS 'å
¥èæ¶é´'; |
| | | COMMENT ON COLUMN tms_person_work.leave_date IS 'ç¦»èæ¶é´'; |
| | | COMMENT ON COLUMN tms_person_work.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_person_work.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_work.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_person_work.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_work.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pwork_fid ON tms_person_work (f_foreign_id); |
| | | |
| | | -- èµè´¨æä»¶/è·å¾è¯ä¹¦ãèµè´¨æä»¶ç®¡ç䏿¡£æ¡å表å
±ç¨æ¤è¡¨ã |
| | | CREATE TABLE IF NOT EXISTS tms_person_cert ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | f_foreign_id varchar(50) NOT NULL, |
| | | archive_id varchar(50), |
| | | user_id varchar(50), |
| | | cert_no varchar(100), |
| | | cert_name varchar(200), |
| | | gain_date date, |
| | | expire_date date, |
| | | cert_file text, |
| | | cert_status varchar(20), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_person_cert PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_person_cert IS 'èµè´¨æä»¶/è·å¾è¯ä¹¦ãèµè´¨æä»¶ç®¡ç䏿¡£æ¡å表å
±ç¨æ¤è¡¨ã'; |
| | | COMMENT ON COLUMN tms_person_cert.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_person_cert.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_person_cert.f_foreign_id IS '主表f_id'; |
| | | COMMENT ON COLUMN tms_person_cert.archive_id IS '个人档æ¡IDï¼æ å¤é®å段æ¶ç±ä¸»ä»åå
¥f_foreign_id'; |
| | | COMMENT ON COLUMN tms_person_cert.user_id IS 'åå·¥ï¼å表模åç¨'; |
| | | COMMENT ON COLUMN tms_person_cert.cert_no IS 'è¯ä¹¦ç¼å·'; |
| | | COMMENT ON COLUMN tms_person_cert.cert_name IS 'è¯ä¹¦åç§°'; |
| | | COMMENT ON COLUMN tms_person_cert.gain_date IS 'è·å¾æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_cert.expire_date IS 'æææè³'; |
| | | COMMENT ON COLUMN tms_person_cert.cert_file IS 'è¯ä¹¦éä»¶'; |
| | | COMMENT ON COLUMN tms_person_cert.cert_status IS 'validææ / nearè¿ææ / invalidæ æ'; |
| | | COMMENT ON COLUMN tms_person_cert.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_person_cert.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_cert.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_person_cert.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_cert.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_person_cert.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_person_cert.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pcert_fid ON tms_person_cert (f_foreign_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_pcert_user ON tms_person_cert (user_id); |
| | | |
| | | -- 个人å¹è®ç®å½ï¼å½æ¡£å¿«ç
§ï¼ãè®°å½å½æ¡£ååå
¥ï¼æ»¡è¶³å®¡è®¡ã |
| | | CREATE TABLE IF NOT EXISTS tms_person_train ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | archive_id varchar(50) NOT NULL, |
| | | user_id varchar(50) NOT NULL, |
| | | record_id varchar(50), |
| | | record_no varchar(50), |
| | | category varchar(50), |
| | | subject text, |
| | | train_mode varchar(50), |
| | | teacher_id text, |
| | | eval_mode varchar(50), |
| | | pass_flag varchar(20), |
| | | start_time timestamp, |
| | | end_time timestamp, |
| | | hours numeric(8,1), |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_person_train PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_person_train IS '个人å¹è®ç®å½ï¼å½æ¡£å¿«ç
§ï¼ãè®°å½å½æ¡£ååå
¥ï¼æ»¡è¶³å®¡è®¡ã'; |
| | | COMMENT ON COLUMN tms_person_train.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_person_train.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_person_train.archive_id IS '个人档æ¡ID'; |
| | | COMMENT ON COLUMN tms_person_train.user_id IS 'åå·¥'; |
| | | COMMENT ON COLUMN tms_person_train.record_id IS 'å¹è®è®°å½ID'; |
| | | COMMENT ON COLUMN tms_person_train.record_no IS 'å¹è®è®°å½ç¼å·'; |
| | | COMMENT ON COLUMN tms_person_train.category IS 'å¹è®ç±»å/åç±»'; |
| | | COMMENT ON COLUMN tms_person_train.subject IS 'å¹è®å
容'; |
| | | COMMENT ON COLUMN tms_person_train.train_mode IS 'å¹è®æ¹å¼'; |
| | | COMMENT ON COLUMN tms_person_train.teacher_id IS 'å¹è®å¸'; |
| | | COMMENT ON COLUMN tms_person_train.eval_mode IS 'èæ ¸æ¹å¼'; |
| | | COMMENT ON COLUMN tms_person_train.pass_flag IS 'æ¯å¦åæ ¼'; |
| | | COMMENT ON COLUMN tms_person_train.start_time IS 'å¹è®å¼å§æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_train.end_time IS 'å¹è®ç»ææ¶é´'; |
| | | COMMENT ON COLUMN tms_person_train.hours IS '妿¶'; |
| | | COMMENT ON COLUMN tms_person_train.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_person_train.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_train.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_person_train.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_person_train.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_person_train.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_person_train.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ptrain_user ON tms_person_train (user_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ptrain_arch ON tms_person_train (archive_id); |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ptrain_rec ON tms_person_train (record_id); |
| | | |
| | | -- --------------------------------------------------------------------------- |
| | | -- 7. å
¶ä»æµç¨ä¸é
ç½® |
| | | -- --------------------------------------------------------------------------- |
| | | -- å¤åºå¹è® |
| | | CREATE TABLE IF NOT EXISTS tms_out_train ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | apply_no varchar(50), |
| | | applicant_id varchar(50), |
| | | apply_dept_id varchar(50), |
| | | org_name varchar(200), |
| | | subject varchar(500), |
| | | start_time timestamp, |
| | | end_time timestamp, |
| | | hours numeric(8,1), |
| | | file_json text, |
| | | biz_status varchar(20), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_out_train PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_out_train IS 'å¤åºå¹è®'; |
| | | COMMENT ON COLUMN tms_out_train.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_out_train.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_out_train.apply_no IS 'ç³è¯·åå·'; |
| | | COMMENT ON COLUMN tms_out_train.applicant_id IS 'ç³è¯·äºº'; |
| | | COMMENT ON COLUMN tms_out_train.apply_dept_id IS 'ç³è¯·é¨é¨'; |
| | | COMMENT ON COLUMN tms_out_train.org_name IS 'å¤é¨æºæ'; |
| | | COMMENT ON COLUMN tms_out_train.subject IS 'å¹è®ä¸»é¢'; |
| | | COMMENT ON COLUMN tms_out_train.start_time IS 'å¼å§'; |
| | | COMMENT ON COLUMN tms_out_train.end_time IS 'ç»æ'; |
| | | COMMENT ON COLUMN tms_out_train.hours IS '妿¶'; |
| | | COMMENT ON COLUMN tms_out_train.file_json IS 'èµæéä»¶'; |
| | | COMMENT ON COLUMN tms_out_train.biz_status IS '审æ¹ç¶æ'; |
| | | COMMENT ON COLUMN tms_out_train.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_out_train.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_out_train.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_out_train.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_out_train.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_out_train.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_out_train.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_out_train.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_out_train.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_out_train.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_out_no ON tms_out_train (apply_no) WHERE f_delete_mark = 0; |
| | | |
| | | -- 转å²äººåèæ ¸é´å® |
| | | CREATE TABLE IF NOT EXISTS tms_transfer_eval ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | user_id varchar(50) NOT NULL, |
| | | from_post_id varchar(50), |
| | | to_post_id varchar(50), |
| | | eval_result varchar(50), |
| | | remark text, |
| | | biz_status varchar(20), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_transfer_eval PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_transfer_eval IS '转å²äººåèæ ¸é´å®'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_transfer_eval.user_id IS '转å²äººå'; |
| | | COMMENT ON COLUMN tms_transfer_eval.from_post_id IS 'åå²ä½'; |
| | | COMMENT ON COLUMN tms_transfer_eval.to_post_id IS 'æ°å²ä½'; |
| | | COMMENT ON COLUMN tms_transfer_eval.eval_result IS 'é´å®ç»è®º'; |
| | | COMMENT ON COLUMN tms_transfer_eval.remark IS '说æ'; |
| | | COMMENT ON COLUMN tms_transfer_eval.biz_status IS '审æ¹ç¶æ'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_transfer_eval.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_teval_user ON tms_transfer_eval (user_id); |
| | | |
| | | -- æ°åå·¥å¹è®ææèè¯ |
| | | CREATE TABLE IF NOT EXISTS tms_newcomer_eval ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | user_id varchar(50) NOT NULL, |
| | | eval_result varchar(50), |
| | | remark text, |
| | | biz_status varchar(20), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_newcomer_eval PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_newcomer_eval IS 'æ°åå·¥å¹è®ææèè¯'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.user_id IS 'æ°åå·¥'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.eval_result IS 'èè¯ç»è®º'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.remark IS '说æ'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.biz_status IS '审æ¹ç¶æ'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_newcomer_eval.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_neval_user ON tms_newcomer_eval (user_id); |
| | | |
| | | -- å¤å²åå·¥å¹è®ææèè¯ |
| | | CREATE TABLE IF NOT EXISTS tms_return_eval ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | user_id varchar(50) NOT NULL, |
| | | eval_result varchar(50), |
| | | remark text, |
| | | biz_status varchar(20), |
| | | f_flow_id varchar(50), |
| | | f_flow_task_id varchar(50), |
| | | f_flow_state int, |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_return_eval PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_return_eval IS 'å¤å²åå·¥å¹è®ææèè¯'; |
| | | COMMENT ON COLUMN tms_return_eval.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_return_eval.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_return_eval.user_id IS 'å¤å²åå·¥'; |
| | | COMMENT ON COLUMN tms_return_eval.eval_result IS 'èè¯ç»è®º'; |
| | | COMMENT ON COLUMN tms_return_eval.remark IS '说æ'; |
| | | COMMENT ON COLUMN tms_return_eval.biz_status IS '审æ¹ç¶æ'; |
| | | COMMENT ON COLUMN tms_return_eval.f_flow_id IS 'æµç¨æ¨¡æ¿ID'; |
| | | COMMENT ON COLUMN tms_return_eval.f_flow_task_id IS 'æµç¨ä»»å¡ID'; |
| | | COMMENT ON COLUMN tms_return_eval.f_flow_state IS 'æµç¨ç¶æ'; |
| | | COMMENT ON COLUMN tms_return_eval.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_return_eval.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_return_eval.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_return_eval.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_return_eval.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_return_eval.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_return_eval.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_reval_user ON tms_return_eval (user_id); |
| | | |
| | | -- å¹è®è®°å½å¥ææ¨¡æ¿çæ¬ãæå¹è®å¼å§æ¶é´å¹é
çæçæ¬ã |
| | | CREATE TABLE IF NOT EXISTS tms_print_template ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | tpl_code varchar(50) NOT NULL, |
| | | version_no int NOT NULL, |
| | | effective_from date NOT NULL, |
| | | effective_to date, |
| | | file_json text, |
| | | enabled varchar(10) NOT NULL DEFAULT '1', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_print_template PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_print_template IS 'å¹è®è®°å½å¥ææ¨¡æ¿çæ¬ãæå¹è®å¼å§æ¶é´å¹é
çæçæ¬ã'; |
| | | COMMENT ON COLUMN tms_print_template.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_print_template.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_print_template.tpl_code IS '模æ¿ç¼ç ï¼å¦ TRAIN_RECORD'; |
| | | COMMENT ON COLUMN tms_print_template.version_no IS 'çæ¬å·'; |
| | | COMMENT ON COLUMN tms_print_template.effective_from IS 'çæèµ·å§ï¼æå¹è®å¼å§æ¶é´ç´¢å¼ï¼'; |
| | | COMMENT ON COLUMN tms_print_template.effective_to IS 'çææªæ¢ï¼ç©º=å½å'; |
| | | COMMENT ON COLUMN tms_print_template.file_json IS 'æ¨¡æ¿æä»¶'; |
| | | COMMENT ON COLUMN tms_print_template.enabled IS 'å¯ç¨'; |
| | | COMMENT ON COLUMN tms_print_template.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_print_template.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_print_template.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_print_template.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_print_template.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_print_template.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_print_template.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE INDEX IF NOT EXISTS idx_tms_ptpl_code ON tms_print_template (tpl_code, effective_from); |
| | | |
| | | -- æéè§åï¼è®¡åå°æåä¸ä¸ªæãææå°æã个人å²ä½å¹è®æ¶éç |
| | | CREATE TABLE IF NOT EXISTS tms_remind_rule ( |
| | | f_id varchar(50) NOT NULL, |
| | | f_tenant_id varchar(50), |
| | | rule_code varchar(50) NOT NULL, |
| | | rule_name varchar(100), |
| | | biz_type varchar(50), |
| | | days_before int NOT NULL DEFAULT 30, |
| | | notify_roles varchar(200), |
| | | enabled varchar(10) NOT NULL DEFAULT '1', |
| | | f_creator_user_id varchar(50), |
| | | f_creator_time timestamp, |
| | | f_last_modify_user_id varchar(50), |
| | | f_last_modify_time timestamp, |
| | | f_delete_mark int NOT NULL DEFAULT 0, |
| | | f_delete_user_id varchar(50), |
| | | f_delete_time timestamp, |
| | | CONSTRAINT pk_tms_remind_rule PRIMARY KEY (f_id) |
| | | ); |
| | | COMMENT ON TABLE tms_remind_rule IS 'æéè§åï¼è®¡åå°æåä¸ä¸ªæãææå°æã个人å²ä½å¹è®æ¶éç'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_id IS '主é®'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_tenant_id IS 'ç§æ·'; |
| | | COMMENT ON COLUMN tms_remind_rule.rule_code IS 'è§åç¼ç '; |
| | | COMMENT ON COLUMN tms_remind_rule.rule_name IS 'åç§°'; |
| | | COMMENT ON COLUMN tms_remind_rule.biz_type IS 'annual_plan/admin_auth/person_post/task_overdue'; |
| | | COMMENT ON COLUMN tms_remind_rule.days_before IS 'æå天æ°'; |
| | | COMMENT ON COLUMN tms_remind_rule.notify_roles IS 'éç¥è§è²ï¼é¨é¨å¹è®ç®¡çå,å¹è®å¸,é¨é¨é¢å¯¼'; |
| | | COMMENT ON COLUMN tms_remind_rule.enabled IS 'å¯ç¨'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_creator_user_id IS 'å建人'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_creator_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_last_modify_user_id IS 'ä¿®æ¹äºº'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_last_modify_time IS 'ä¿®æ¹æ¶é´'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_delete_mark IS 'å 餿 è®° 0æ£å¸¸ 1å é¤'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_delete_user_id IS 'å é¤äºº'; |
| | | COMMENT ON COLUMN tms_remind_rule.f_delete_time IS 'å 餿¶é´'; |
| | | CREATE UNIQUE INDEX IF NOT EXISTS uk_tms_remind_code ON tms_remind_rule (rule_code) WHERE f_delete_mark = 0; |
| | | |
| | | |
| | | -- ============================================================================= |
| | | -- é¢ç½®æ°æ®ï¼å¹è®æ¹å¼ / ç¾å°æ¹å¼ / è¯ä¼°æ¹å¼ / æéè§åï¼ |
| | | -- ============================================================================= |
| | | INSERT INTO tms_train_mode (f_id, mode_code, mode_name, sign_rule, allow_guest_sign, same_day_required, place_required, sort_no, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_mode_onsite', 'onsite', 'éä¸æè¯¾', 'scan', '1', '1', '1', 1, '1', 0), |
| | | ('tms_mode_practice', 'practice', 'æä½æè¯¾', 'scan', '0', '1', '1', 2, '1', 0), |
| | | ('tms_mode_online', 'online', 'å¨çº¿å¦ä¹ ', 'both', '0', '0', '0', 3, '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | INSERT INTO tms_sign_mode (f_id, mode_code, mode_name, tip_seconds, match_roster, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_sign_app', 'app_scan', 'APPæ«ç ', 30, '1', '1', 0), |
| | | ('tms_sign_wx', 'wx_scan', '微信æ«ç ', 30, '1', '1', 0), |
| | | ('tms_sign_online', 'online', 'å¨çº¿ç¾å°', 30, '1', '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | INSERT INTO tms_eval_mode (f_id, mode_code, mode_name, need_paper, need_quiz, need_practice, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_eval_quiz', 'quiz', 'æé®', '0', '1', '0', '1', 0), |
| | | ('tms_eval_practice', 'practice', 'ç°åºæä½', '0', '0', '1', '1', 0), |
| | | ('tms_eval_exam', 'exam', 'å¨çº¿èè¯', '1', '0', '0', '1', 0), |
| | | ('tms_eval_none', 'none', 'æ éèæ ¸', '0', '0', '0', '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | INSERT INTO tms_remind_rule (f_id, rule_code, rule_name, biz_type, days_before, notify_roles, enabled, f_delete_mark) |
| | | VALUES |
| | | ('tms_rm_annual', 'annual_due', '年度计åå°æåä¸ä¸ªæ', 'annual_plan', 30, 'é¨é¨å¹è®ç®¡çå,å¹è®å¸', '1', 0), |
| | | ('tms_rm_auth', 'auth_due', '管çåææå°æåä¸ä¸ªæ', 'admin_auth', 30, 'å¹è®ç®¡çå,å¹è®å¸', '1', 0), |
| | | ('tms_rm_overdue','task_overdue','å¹è®é¾ææéé¨é¨é¢å¯¼', 'task_overdue', 0, 'é¨é¨é¢å¯¼', '1', 0) |
| | | ON CONFLICT (f_id) DO NOTHING; |
| | | |
| | | COMMIT; |
| New file |
| | |
| | | # ç»æé¬ TMS · JNPF / PostgreSQL æ°æ®è¡¨è®¾è®¡ |
| | | |
| | | 便®ãç»æé¬TMSåè½è®¾è®¡ä¹¦ V1ãåèé£ä¼çé¢å段设计ï¼ç» JNPF 6.x + PostgreSQL 18 ç¨ã |
| | | 飿 ¼å¯¹é½ç°æ `lims_*` / `dms_*`ï¼ä¸»é® `f_id`ï¼å表 `f_foreign_id`ï¼æµç¨ `f_flow_id`ï¼ä¸å¡åæ®µè±æèå½¢ãä¸å `f_`ã |
| | | |
| | | 交ä»ç©ï¼ |
| | | |
| | | - å»ºè¡¨èæ¬ï¼`docs/tms/tms_schema_pg.sql`ï¼48 å¼ è¡¨ + é¢ç½®æ°æ®ï¼ |
| | | - åæ®µæ¸
åï¼`docs/tms/ç»æé¬TMS-JNPFæ°æ®è¡¨å段æ¸
å.xlsx` |
| | | |
| | | --- |
| | | |
| | | ## 1. æä¹å¨ JNPF 建 |
| | | |
| | | æ¨è顺åºï¼ |
| | | |
| | | 1. å
é
åå
¸ååæ®è§åï¼ç¬¬ 3ã4 èï¼ |
| | | 2. æ°æ®å»ºæ¨¡æç¬¬ 2 è顺åºå»ºè¡¨ï¼æå
è· SQLï¼åãåæ¥æ°æ®è¡¨ãï¼ |
| | | 3. åºç¡æ¡£æ¡è¡¨å â é¢åºè¯å· â 计å â ä»»å¡/è®°å½ â æ¡£æ¡ |
| | | 4. ç¨æ·ãç»ç»ãå²ä½ãéä»¶ä¸å¾ç¨å¹³å°æ§ä»¶ï¼ä¸è¦èªå»ºç¨æ·è¡¨ |
| | | 5. å¹è®å¯¹è±¡ãå¹è®å¸å¤éåç¨æ· IDï¼å叿¶åæäººæ `tms_person_task` |
| | | |
| | | ç³»ç»å段æ¯å¼ è¡¨é½æï¼è®¾è®¡å¨ä¼å¸¦åºï¼ä¸å¿
å¨ä¸å¡å段ééå¤ï¼ |
| | | |
| | | | åæ®µ | ç¨é | |
| | | |---|---| |
| | | | `f_id` | ä¸»é® | |
| | | | `f_tenant_id` | ç§æ· | |
| | | | `f_foreign_id` | å表æå主表 | |
| | | | `f_flow_id` / `f_flow_task_id` / `f_flow_state` | æµç¨è¡¨å | |
| | | | `f_creator_user_id` / `f_creator_time` | å建 | |
| | | | `f_last_modify_user_id` / `f_last_modify_time` | ä¿®æ¹ | |
| | | | `f_delete_mark` | é»è¾å é¤ | |
| | | |
| | | --- |
| | | |
| | | ## 2. 表å
³ç³»ï¼ä¸»é¾è·¯ï¼ |
| | | |
| | | ```mermaid |
| | | flowchart LR |
| | | subgraph base [åºç¡] |
| | | P[tms_place å°ç¹] |
| | | T[tms_trainer å¹è®å¸] |
| | | M[tms_material ææ] |
| | | C[tms_course 课ç¨] |
| | | A[tms_admin_auth ææ] |
| | | end |
| | | subgraph exameng [èè¯å¼æ] |
| | | QB[tms_question_bank é¢åº] |
| | | Q[tms_question è¯é¢] |
| | | PAP[tms_paper è¯å·] |
| | | end |
| | | subgraph plan [计å] |
| | | PC[tms_post_catalog å²ä½ç®å½] |
| | | PP[tms_post_plan å²ä½è®¡å] |
| | | PPP[tms_person_post 个人å²ä½å¹è®] |
| | | AP[tms_annual_plan 年度计å] |
| | | end |
| | | subgraph exec [æ§è¡] |
| | | TK[tms_task å¹è®ä»»å¡] |
| | | PT[tms_person_task 个人任å¡] |
| | | RC[tms_record å¹è®è®°å½] |
| | | EX[tms_exam çå·] |
| | | end |
| | | subgraph file [æ¡£æ¡] |
| | | PF[tms_person_file 个人档æ¡] |
| | | CERT[tms_person_cert èµè´¨è¯ä¹¦] |
| | | DIR[tms_person_train å¹è®ç®å½] |
| | | end |
| | | QB --> Q --> PAP |
| | | PC --> PP --> PPP |
| | | PP --> TK |
| | | AP --> TK |
| | | M --> TK |
| | | P --> TK |
| | | T --> TK |
| | | PAP --> TK |
| | | C --> AP |
| | | TK --> PT |
| | | TK --> RC |
| | | TK --> EX |
| | | PT --> EX |
| | | RC --> DIR |
| | | PF --> CERT |
| | | PF --> DIR |
| | | ``` |
| | | |
| | | 䏻鮿ä¹ä¸²ï¼ |
| | | |
| | | | ä» | å° | åæ®µ | |
| | | |---|---|---| |
| | | | 年计åæç» / å²è®¡åæç» | ä»»å¡ | `source_id` + `source_item_id` | |
| | | | ä»»å¡ | ä¸ªäººä»»å¡ | `task_id` | |
| | | | ä»»å¡ | å¹è®è®°å½ | `task_id`ï¼ä¸å¯¹ä¸ï¼ | |
| | | | ä»»å¡ | çå· | `task_id` + `user_id` + `attempt_no` | |
| | | | è®°å½ç¾å°å表 | è®°å½ | `f_foreign_id` | |
| | | | è®°å½å½æ¡£ | 个人å¹è®ç®å½ | `record_id` + `user_id` | |
| | | |
| | | èçé¢éãå¹è®ä»»å¡ãåã个人任å¡ãåæ®µç æ··ç¨ï¼JNPF å¿
é¡»ææä¸¤å¼ 表ã |
| | | |
| | | --- |
| | | |
| | | ## 3. å
é
åå
¸ |
| | | |
| | | | åå
¸ | é项 | |
| | | |---|---| |
| | | | ä»»å¡åå¸ç¶æ | draft æªåå¸ / published å·²åå¸ / cancelled 已忶 / done 已宿 | |
| | | | å¹è®åç±» | 临æ¶å¹è® / å²ä½å¹è®è®¡å / 年度å¹è®è®¡å / æä»¶çæå¹è® / å¤åºå¹è® / åç»´æ¤ | |
| | | | ä»»å¡ç±»å | new æ°å¢ / continue ç»§ç»ï¼åç»´æ¤ï¼ | |
| | | | 彿¡£ç¶æ | pending å¾
彿¡£ / ready å¯å½æ¡£ / archived 已彿¡£ / invalid æ æ | |
| | | | 个人任å¡ç¶æ | todo æªå®æ / signed å·²ç¾å° / done 已宿 / expired å·²è¿æ / cancelled 已忶 | |
| | | | æ¯å¦åæ ¼ | pass åæ ¼ / fail ä¸åæ ¼ / absent æªåå / na æ éèæ ¸ | |
| | | | é¢å | single åé / multi å¤é / judge 夿 / blank 填空 / essay é®ç | |
| | | | è¯é¢è¯å·ç¶æ | open 弿¾ / closed ä¸å¼æ¾ / invalid åºå¼ | |
| | | | é¾åº¦ | easy ç®å / normal ä¸è¬ / hard å°é¾ | |
| | | | é
å·ç¶æ | auto æ éé
å· / pending å¾
æ¹æ¹ / graded å·²æ¹æ¹ | |
| | | | æææ¤é | valid æææå
/ revoked å·²æ¤é | |
| | | | 计åè¡ç¶æ | pending å¾
æ§è¡ / tasked å·²çæä»»å¡ / done 已宿 / delayed 已延æ | |
| | | | ææç±»å | Word / PPT / Excel / PDF / è§é¢ / é³é¢ | |
| | | |
| | | å¹è®æ¹å¼ãç¾å°æ¹å¼ãè¯ä¼°æ¹å¼åæ**ä¸å¡è¡¨**ï¼å¸¦è§åï¼ï¼ä¸è¦åªååå
¸ï¼ |
| | | |
| | | - éä¸æè¯¾ï¼ä»
æ«ç ãå
许ååå¤ç¾å°ãå¼å§ç»æåä¸å¤©ãå°ç¹å¿
å¡« |
| | | - æä½æè¯¾ï¼ä»
æ«ç ãä¸å
许ååå¤ãåä¸å¤©ãå°ç¹å¿
å¡« |
| | | - å¨çº¿å¦ä¹ ï¼æ«ç +å¨çº¿ãå°ç¹ä¸å¿
å¡«ãæ«ç å¿
é¡»å¹é
åå |
| | | |
| | | --- |
| | | |
| | | ## 4. åæ®è§åï¼å¯¹é½èç¼å·ï¼ |
| | | |
| | | | 对象 | è§å | èçé¢ç¤ºä¾ | |
| | | |---|---|---| |
| | | | å°ç¹ç¼å· `place_no` | `A` + YYYYMM + 4 ä½ | A2026090001 | |
| | | | æ¡£æ¡ç¼å· `archive_no` | `AR` + YYYY + 4 ä½ | AR20260028 | |
| | | | ææç¼å· `material_no` | `TM` + YYYYMM + 4 ä½ | TM2026090001 | |
| | | | å²ä½è®¡å `plan_no` | `JP` + YYYYMM + 4 ä½ | JP2026090012 | |
| | | | 年度计å `plan_no` | 年份 4 ä½ + 4 使µæ°´ | 20260001 | |
| | | | å¹è®ä»»å¡ `task_no` | `TT` + YYYYMM + 4 ä½ | TT2026090618 | |
| | | |
| | | å¹è®è®°å½ç¼å·é»è®¤çäºä»»å¡ç¼å·ï¼èæ¡£æ¡å¹è®ç®å½éå°±æ¯ TT å·ï¼ã |
| | | |
| | | --- |
| | | |
| | | ## 5. 表åä¸è¡¨ï¼æå»ºé¡ºåºï¼ |
| | | |
| | | ### 5.1 åºç¡è®¾ç½® |
| | | |
| | | | é¡ºåº | 表å | 表 | ä¸»ä» | æµç¨ | |
| | | |---|---|---|---|---| |
| | | | 1 | å¹è®å°ç¹ | `tms_place` | å¦ | å¦ | |
| | | | 2 | å¹è®å¸æ¡£æ¡ | `tms_trainer` | å·¥ä½ç»å / å¹è®ç»å | å¦ | |
| | | | 3 | å¹è®ç®¡çåææ | `tms_admin_auth` | å¦ | å¦ | |
| | | | 4 | å¹è®æ¹å¼ | `tms_train_mode` | å¦ | å¦ | |
| | | | 5 | ç¾å°æ¹å¼ | `tms_sign_mode` | å¦ | å¦ | |
| | | | 6 | è¯ä¼°æ¹å¼ | `tms_eval_mode` | å¦ | å¦ | |
| | | | 7 | å¹è®è¯¾ç¨ | `tms_course` | å¦ | å¦ | |
| | | | 8 | å¹è®ææ | `tms_material` | å¦ | å¦ | |
| | | |
| | | å°ç¹è¡¨æ¯èçé¢å¤äº `place_group`ï¼FDS è¦æ±æç»å«ååï¼ãå ç¨ä¸åç¬å表ï¼åå¸/ä¿å任塿¶ç¨æ¶é´äº¤åæ ¡éªã |
| | | |
| | | å¹è®å¸æ `user_id` å¯ä¸ï¼éå¤å½å
¥æç¤ºä¸æ¥éï¼åè¡¨ç¨ `biz_status` çãæææå
/ å·²æ¤éãã |
| | | |
| | | ### 5.2 é¢åºè¯å· |
| | | |
| | | | é¡ºåº | 表å | 表 | ä¸»ä» | |
| | | |---|---|---|---| |
| | | | 9 | é¢åº | `tms_question_bank` | å¦ | |
| | | | 10 | è¯é¢ | `tms_question` | é项 `tms_question_option` | |
| | | | 11 | è¯å· | `tms_paper` | ç« è + è¯å·è¯é¢ | |
| | | |
| | | èçé¢å段已è½å
¥ï¼é¢åºåç§°/ç¶æ/夿³¨ï¼è¯é¢ç±»åãæå±é¢åºãé¾åº¦ãç¶æï¼é»è®¤å¼æ¾ï¼ãæ¥æºãé¢å¹²ãé项 A-D å¯å¢å ï¼è¯å·åç§°ãç¶æãèè¯æ¶é¿ãæç»©å
¬å¸æ¶é´ãåæ ¼åæ°ãè¯é¢æåºï¼èªèº«é¡ºåº/éæºï¼ã |
| | | |
| | | **å
³é®çº¦æï¼GMPï¼**ï¼æ¹è¯é¢ãæ¹è¯å·ãæ¹çæ¡ï¼é½ä¸è½å¨å·²èè®°å½ãå·²èæ°æ®åªåå¨ `tms_exam` + `tms_exam_item` å¿«ç
§éã |
| | | |
| | | ### 5.3 å²ä½ / 年度计å |
| | | |
| | | | é¡ºåº | 表å | 表 | æµç¨ | |
| | | |---|---|---|---| |
| | | | 12 | å²ä½å¹è®ç®å½ | `tms_post_catalog` + item | å¯ | |
| | | | 13 | å²ä½å¹è®è®¡å | `tms_post_plan` + item | å¯ | |
| | | | 14 | 个人å²ä½å¹è® | `tms_person_post` + item | å¯éå | |
| | | | 15 | 年度å¹è®è®¡å | `tms_annual_plan` + item | é¨é¨è´è´£äºº â QA | |
| | | | 16 | 年度计åå»¶æ | `tms_annual_delay` | æ¯ | |
| | | |
| | | å²ä½è®¡å主表对é½èçé¢ï¼å²ä½ç¼ç /åç§°ãæå±é¨é¨ã计åç»ææ¶é´ãå²ä½æè¿°ãå¹è®å¯¹è±¡ï¼å表ï¼å¹è®è®¡åæ¶é´ãå¹è®å¸ãå¹è®å
容ãå¹è®æ¹å¼ã课æ¶ãèæ ¸æ¹å¼ã |
| | | |
| | | 年度计å对é½èçé¢ï¼å¹´ä»½ã计åç¼å·ã计åç±»åãå¶å®æ¥æ/人/é¨é¨ãçæ¬ï¼å表ï¼å¹è®æä»½ãå
å®¹ãæ¹å¼ã对象ã课æ¶ãå¹è®å¸ãèæ ¸æ¹å¼ãç¶æï¼è¡¨å°¾å¤æ³¨ãé¨é¨è´è´£äººãQA é¨è´è´£äººã |
| | | |
| | | 转å²ï¼`tms_person_post_item.already_trained=1` æ¶ä¸çæå¯¹åºå¹è®ä»»å¡ã |
| | | |
| | | ### 5.4 ä»»å¡ / è®°å½ / èè¯ |
| | | |
| | | | é¡ºåº | 表å | 表 | 说æ | |
| | | |---|---|---|---| |
| | | | 17 | å¹è®ä»»å¡ | `tms_task` + ææ + æé®é¢è®¾ | æ ¸å¿ï¼è·¨æ/临æ¶/å¨å²èµ°æµç¨ | |
| | | | 18 | 个人å¹è®ä»»å¡ | `tms_person_task` | å叿¶æäººçæï¼å¦åå
¥å£ | |
| | | | 19 | å¹è®è®°å½ | `tms_record` + ç¾å°æç» | å叿¶çæï¼å
³éæ¶é´å° â å¾
彿¡£ | |
| | | | 20 | å¹è®è®°å½åæ´ | `tms_record_change` | æ¹ç»ææ¶é´ / å 人 | |
| | | | 21 | å¹è®èµæå½æ¡£ | `tms_archive_file` | çµå/纸质/宿 | |
| | | | 22 | å¨çº¿èè¯ | `tms_exam` + å¿«ç
§ | å表/é
å·/个人èè¯è®°å½å
±ç¨ | |
| | | | 23 | å®æèæ ¸ | `tms_practice` + item | ååè®°å½ | |
| | | | 24 | ç°åºæé®èæ ¸ | `tms_quiz_score` | ååè®°å½ | |
| | | |
| | | å¹è®ä»»å¡ä¸»è¡¨å¯¹é½èçé¢ï¼ |
| | | |
| | | ç¼å·ãå¹è®åç±»ãæ¥æºè®¡åç¼å·ãå¹è®ä¸»é¢ãå¹è®è¦ç¹ãææç¼å·/éä»¶ãå°ç¹ç¼å·/åç§°ãå¼å§/ç»æãè¯å·ç¼å·/åç§°ãå¼è/ç»èãå¹è®å¸ãä»»å¡å
³éæ¶é´ãå¹è®æ¹å¼ãè¯ä¼°æ¹å¼ãå¹è®å¯¹è±¡ã |
| | | |
| | | åè¡¨å¦æï¼æ¯å¦å·²åå¸ãä»»å¡ç±»åï¼æ°å¢/ç»§ç»ï¼ãä¸ä¸æ¬¡ä»»å¡ç¼å·ãè¿äºé½å¨ `tms_task`ã |
| | | |
| | | è®°å½å°è´¦ä¸å¿
å建模ï¼ç¨ `tms_record.archive_status` çå¾
彿¡£ / å¯å½æ¡£ / 已彿¡£ã |
| | | |
| | | ### 5.5 æ¡£æ¡ä¸å
¶å®æµç¨ |
| | | |
| | | | é¡ºåº | 表å | 表 | |
| | | |---|---|---| |
| | | | 25 | 个人å¹è®æ¡£æ¡ | `tms_person_file` + å±¥å + è¯ä¹¦ + å¹è®ç®å½ | |
| | | | 26 | èµè´¨æä»¶ç®¡ç | å¤ç¨ `tms_person_file` å表ï¼è¯ä¹¦å表 `tms_person_cert` | |
| | | | 27 | å¤åºå¹è® | `tms_out_train` | |
| | | | 28 | è½¬å² / æ°åå·¥ / å¤å²èè¯ | `tms_transfer_eval` / `tms_newcomer_eval` / `tms_return_eval` | |
| | | | 29 | å¥ææ¨¡æ¿çæ¬ | `tms_print_template`ï¼æå¹è®å¼å§æ¶é´å¹é
çæ¬ï¼ | |
| | | | 30 | æéè§å | `tms_remind_rule` | |
| | | |
| | | 个人档æ¡å¯¹é½èçé¢ï¼æ¡£æ¡ç¼å·ã建档æ¶é´ãåå·¥å§åãæå±é¨é¨ãå
¥èæ¶é´ã主è¦å²ä½ãå
¼èå²ä½ï¼å表工ä½å±¥åï¼æ¥çé¡µè¿æå¤é¨å¹è®/è¯ä¹¦ãå¹è®ç®å½ï¼è®°å½ç¼å·ãç±»åãå
å®¹ãæ¹å¼ãå¹è®å¸ãèæ ¸æ¹å¼ãæ¯å¦åæ ¼ãå¼å§/ç»æï¼ã |
| | | |
| | | å
¥èèªå¨å»ºæ¡£ï¼äººäºç¨æ·æ°å¢æ¶æ `tms_person_file`ãä¸äººä¸æ¡£ï¼`user_id` å¯ä¸ã |
| | | |
| | | --- |
| | | |
| | | ## 6. å¿
é¡»åå¨äºä»¶/代ç éçè§å |
| | | |
| | | è¿äºä¸è¦é è¡¨ç»æç¡¬çº¦æï¼æ¾åå¸/ä¿å/彿¡£æé®ï¼ |
| | | |
| | | 1. **æ¶é´**ï¼`start_time <= end_time <= close_time`ï¼èè¯æ¶é´ä¸å¾æ©äºå¹è®å¼å§ï¼éä¸/æä½æè¯¾å¼å§ç»æå¿
é¡»åä¸å¤©ã |
| | | 2. **å°ç¹å ç¨**ï¼åä¸ `place_id`ï¼æªåæ¶ä»»å¡ç `[start,end)` æå°æ¶ä¸å¾äº¤åã |
| | | 3. **å¹è®å¸å²çª**ï¼éä¸/æä½æè¯¾ä¸ï¼åä¸å¹è®å¸å䏿¶æ®µä¸è½å¨ä¸¤ä¸ªä»»å¡ã |
| | | 4. **æäººç¾å°ä¸è½åæ¶**ï¼è¯¯åæ¶å¯æ¢å¤ï¼`cancelled â draft/published`ï¼ã |
| | | 5. **åå¸**ï¼æä¸ªäººä»»å¡ï¼çæå¹è®è®°å½ï¼èæ ¸æ¹å¼=å¨çº¿èè¯åçæ `tms_exam` å¾
èè¡ï¼åæ¥ææå°è®°å½ã |
| | | 6. **å
³éæ¶é´å°è¾¾** â è®°å½ `archive_status=pending`ã |
| | | 7. **彿¡£**ï¼è®¡ç®ç¾å°ç/åæ ¼çï¼åæ´èå°æ°ï¼ï¼æªå®æäººåçæåç»´æ¤ä»»å¡ï¼`task_kind=continue`ï¼`prev_task_no` æååä»»å¡ï¼ï¼åå
¥ `tms_person_train`ã |
| | | 8. **æ æä»»å¡**ï¼æ äººå®ææ¶å¯æ `invalid`ï¼å¹¶èªå¨çææ°ä»»å¡ã |
| | | 9. **æé®äººæ°**ï¼`ceil(ç¾å°äººæ° * quiz_ratio / 100)`ï¼åæ´ã |
| | | 10. **ææ/计åå°æå 30 天** æ `tms_remind_rule` æ¨éç»é¨é¨å¹è®ç®¡çååå¹è®å¸ã |
| | | |
| | | --- |
| | | |
| | | ## 7. è§è²åªé
æéï¼ä¸æ°å»ºè¡¨ |
| | | |
| | | | è§è² | æ°æ®èå´ | |
| | | |---|---| |
| | | | ç³»ç»ç®¡çå | åºç¡è®¾ç½® | |
| | | | å
¬å¸å¹è®ç®¡çå | å
¨å
¬å¸è®¡å/ä»»å¡/æ¡£æ¡ | |
| | | | é¨é¨å¹è®ç®¡çå | æ¬é¨é¨ + `tms_admin_auth` ææé¨é¨ï¼å¯å«ä¸çº§ï¼ | |
| | | | å¹è®å¸ | èªå·±çä»»å¡æè¯¾ãæåã宿ãé
å· | |
| | | | æ®éåå·¥ | ä»
个人任å¡ã个人èè¯è®°å½ãä¸ªäººæ¡£æ¡ | |
| | | |
| | | ã个人å¹è®æ¡£æ¡ãåªè½çèªå·±ï¼ã个人å¹è®æ¡£æ¡ç®¡çãæææçé¨é¨/å
¬å¸ã |
| | | |
| | | --- |
| | | |
| | | ## 8. å»ºè®®ä¸æèå´ |
| | | |
| | | å
建并è½è·é主é¾è·¯çè¡¨ï¼ |
| | | |
| | | å°ç¹ãå¹è®å¸ãææãé¢åºãè¯é¢ãè¯å·ã年度计åãå²ä½è®¡åãå¹è®ä»»å¡ã个人任å¡ãå¹è®è®°å½ãç¾å°æç»ãçå·å¿«ç
§ã个人档æ¡ã |
| | | |
| | | äºæåéºï¼å²ä½ç®å½åçãæé®é¢è®¾ã宿/ç°åºæé®ãè®°å½åæ´ãèµæå½æ¡£ãå¤åº/转å²/æ°åå·¥/å¤å²æµç¨ãå¥æçæ¬ãæéè§åã |
| | | |
| | | é¢åºè¯å·å¼æä¸æå°±è¦å¿«ç
§è¡¨ï¼å¦å以忹é¢ä¼æ±¡æå·²å½æ¡£è®°å½ã |
| | | |