import { Column, Model, Table, DataType, CreatedAt, UpdatedAt, ForeignKey, BelongsTo } from "sequelize-typescript"; import SurveyOrder from "./survey_order.entity"; @Table({ tableName: "survey_detail", comment: "勘察工单明细表(建筑/楼层/房间 + 现场照片)", timestamps: true, createdAt: "created_at", updatedAt: "updated_at", indexes: [{ name: "idx_survey_detail_order", fields: ["survey_order_id"] }] }) export default class SurveyDetail extends Model { @Column({ type: DataType.BIGINT, autoIncrement: true, primaryKey: true }) id!: number; @ForeignKey(() => SurveyOrder) @Column({ type: DataType.BIGINT, allowNull: false, field: "survey_order_id", comment: "勘察工单ID(→ survey_order)" }) surveyOrderId!: number; @Column({ type: DataType.BIGINT, field: "building_id", comment: "建筑ID(→ customer_building)" }) buildingId!: number; @Column({ type: DataType.STRING(128), field: "building_name", comment: "建筑名称(冗余,客户拓扑变更后仍可读)" }) buildingName!: string; @Column({ type: DataType.STRING(16), field: "floor_no", comment: "所在楼层:正数为地上、负数为地下,如 1 / -1" }) floorNo!: string; @Column({ type: DataType.BIGINT, field: "room_id", comment: "房间ID(→ customer_room,可空)" }) roomId!: number; @Column({ type: DataType.STRING(128), field: "room_name", comment: "房间名称(冗余,可空)" }) roomName!: string; @Column({ type: DataType.TEXT, field: "photos", comment: "现场照片对象key(JSON数组字符串)" }) photos!: string; @Column({ type: DataType.STRING(255), comment: "备注" }) remark!: string; @BelongsTo(() => SurveyOrder, { foreignKey: "surveyOrderId", as: "surveyOrder" }) surveyOrder!: SurveyOrder; @CreatedAt created_at!: Date; @UpdatedAt updated_at!: Date; }