claude_sms_test

This commit is contained in:
jianqi
2026-09-18 16:53:21 +08:00
commit b9311bdb1e
46 changed files with 4225 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# model/__init__.py
# 这个文件不是「模型之间互相导入」,而是「聚合入口」,单向扇出,不成环
from database import Base
from model.advisor_model import AdvisorInfo
from model.cls_mgmt_model import ClsMgmt
from model.employ_model import StudentEmployManage
from model.stu_model import StuInfo
from model.stu_score_model import StuScore
from model.teacher_model import Teacher
__all__ = [
"Base",
"AdvisorInfo",
"ClsMgmt",
"StudentEmployManage",
"StuInfo",
"StuScore",
"Teacher",
]
+16
View File
@@ -0,0 +1,16 @@
# model/advisor_model.py
# 顾问信息表模型
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import relationship
from database import Base
class AdvisorInfo(Base):
__tablename__ = "advisor_info"
id = Column(String(15), primary_key=True)
name = Column(String(20), nullable=False)
phone = Column(String(20), nullable=False)
is_deleted = Column(Integer, nullable=False, default=0)
students = relationship("StuInfo", back_populates="adv")
+30
View File
@@ -0,0 +1,30 @@
# model/cls_mgmt_model.py
# 班级管理表模型
from sqlalchemy import Column, Integer, String, Date, ForeignKey
from sqlalchemy.orm import relationship
from database import Base
class ClsMgmt(Base):
"""
班级管理表模型
对应 MySQL 中的 cls_mgmt 表
"""
__tablename__ = "cls_mgmt" # 表名
# 字段定义
id = Column(String(15), primary_key=True, nullable=False) # 班级编号,主键,非空
cls_start_date = Column(Date, nullable=False) # 开课时间
head_tea_id = Column(String(15), ForeignKey("tea_info.id"), nullable=False) # 班主任id
lecturer_id = Column(String(15), ForeignKey("tea_info.id"), nullable=False) # 主讲老师id
is_deleted = Column(Integer, nullable=False, default=0)
stu = relationship("StuInfo", back_populates="cls")
head_teacher = relationship("Teacher",
foreign_keys=[head_tea_id],
back_populates="head_classes")
lecturer = relationship("Teacher",
foreign_keys=[lecturer_id],
back_populates="lecturer_classes")
+33
View File
@@ -0,0 +1,33 @@
# model/employ_model.py
# 学生就业管理表模型
from sqlalchemy import Column, String, Date, Integer, ForeignKey, DECIMAL
from sqlalchemy.orm import relationship
from database import Base
class StudentEmployManage(Base):
"""
学生就业管理表 的映射模型
对应 MYSQL 中的 stu_emp_mgmt 表
"""
__tablename__ = 'stu_emp_mgmt'
stu_id = Column(String(15), ForeignKey('stu_info.id'), primary_key=True, nullable=False) # 主键 索引
emp_open_time = Column(Date, nullable=True, default=None) # 就业开放时间
send_offer_time = Column(Date, nullable=True, default=None) # 收到Offer时间
emp_company = Column(String(50), nullable=True, default=None) # 就业公司名称
salary = Column(DECIMAL(10, 2), nullable=True, default=None) # 薪资待遇(月薪/元),共10位数,最多两位小数
is_deleted = Column(Integer, nullable=False, default=0) # 软删除: 0-正常 1-已删除
stu = relationship('StuInfo', back_populates="stu_emp_mgmt") # 与学生信息表一对一关联
def __repr__(self):
"""
返回对象时,自定义返回的信息
"""
return (f'<EmployStatus'
f'("学生编号"={self.stu_id},'
f'"就业开放时间"={self.emp_open_time},'
f'"offer下发时间"={self.send_offer_time},'
f'"就业公司名称"{self.emp_company}:,'
f'"就业薪资":{self.salary})>')
+36
View File
@@ -0,0 +1,36 @@
# model/stu_model.py
# 学生信息表模型
from sqlalchemy import Column, Integer, String, Date, ForeignKey
from sqlalchemy.orm import relationship
from database import Base
class StuInfo(Base):
__tablename__ = "stu_info"
id = Column(String(15), primary_key=True)
cls_id = Column(String(15), ForeignKey("cls_mgmt.id"), nullable=False)
name = Column(String(20), nullable=False)
gender = Column(String(1), default="男")
age = Column(Integer, default=None)
hometown = Column(String(50), default=None)
grad_school = Column(String(50), default=None)
major = Column(String(50), default=None)
education = Column(String(20), default=None)
enr_date = Column(Date, default=None)
grad_date = Column(Date, default=None)
advisor_id = Column(String(15), ForeignKey("advisor_info.id"), default=None)
state = Column(String(10), default="在读")
is_deleted = Column(Integer, nullable=False, default=0)
cls = relationship("ClsMgmt", back_populates="stu")
score = relationship("StuScore", back_populates="student")
adv = relationship("AdvisorInfo", back_populates="students")
stu_emp_mgmt = relationship(
"StudentEmployManage",
back_populates="stu",
uselist=False,
)
+29
View File
@@ -0,0 +1,29 @@
# model/stu_score_model.py
# 学生成绩表模型
from sqlalchemy import Column, Integer, String, Boolean, ForeignKey
from sqlalchemy.dialects.mysql import DECIMAL
from sqlalchemy.orm import relationship
from database import Base
class StuScore(Base):
"""
学生成绩表模型
对应 MySQL 中的 stu_score 表
"""
__tablename__ = "stu_score" # 表名
# 字段定义
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True) # 自增主键
stu_id = Column(String(15), ForeignKey("stu_info.id"), nullable=False) # 学生id,非空
exam_attempt = Column(Integer, nullable=False, default=1) # 考试轮次,非空
exam_score = Column(DECIMAL(5, 2), nullable=False) # 成绩,非空
score_level = Column(String(10), nullable=False, default="普通") # 成绩评级
is_deleted = Column(Boolean, default=False, nullable=False) # 软删除: False-正常 True-已删除
student = relationship("StuInfo", back_populates="score")
def __repr__(self):
return (f"<StuScore(stu_id={self.stu_id}, exam_attempt='{self.exam_attempt}'"
f"exam_score={self.exam_score}, score_level='{self.score_level}'"
f"is_deleted={self.is_deleted})>")
+25
View File
@@ -0,0 +1,25 @@
# model/teacher_model.py
# 教师信息表模型
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import relationship
from database import Base
class Teacher(Base):
__tablename__ = "tea_info" # 表名
# 字段定义
id = Column(String(15), primary_key=True, index=True) # 主键,索引
name = Column(String(20), nullable=False) # 姓名,非空
phone = Column(String(20), unique=True, nullable=False) # 电话,唯一,非空
type = Column(String(20), nullable=False) # 教师职位,非空
is_deleted = Column(Integer, nullable=False, default=0) # 逻辑删除(软删除),0是未删除,1是删除,默认为0
head_classes = relationship("ClsMgmt",
foreign_keys="ClsMgmt.head_tea_id",
back_populates="head_teacher")
lecturer_classes = relationship("ClsMgmt",
foreign_keys="ClsMgmt.lecturer_id",
back_populates="lecturer")