package cn.nianxx.thhotel.workflows.reservation.common.result;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * 任务详情字段结果。字段规则来自矩阵，value 为当前可回显值。
 *
 * @param rowNumber 矩阵行号
 * @param cardName 任务卡展示名称
 * @param resultType AI 结果类型白名单值
 * @param taskType 任务类型白名单值
 * @param taskSubtype 任务 subtype 白名单值
 * @param displayArea 前端展示区域
 * @param fieldPath 后端矩阵主字段路径，P0 起 room_items 使用显式 0 下标路径
 * @param fieldPointer RFC 6901 JSON Pointer，前端复核和编辑定位优先使用
 * @param legacyFieldPath 旧扁平字段路径，仅用于前端过渡兼容
 * @param displayName 字段展示名称
 * @param visible 是否可见
 * @param editable 是否可编辑
 * @param inputEditable 是否文本输入可编辑
 * @param selectEditable 是否下拉选择可编辑
 * @param datePicker 是否日期选择
 * @param numberInput 是否数字输入
 * @param fileDisplay 是否文件展示
 * @param tableEditable 是否表格编辑
 * @param enumOptions 枚举选项
 * @param requiredRule 必填规则
 * @param defaultValueSource 默认值来源
 * @param displayCondition 展示条件
 * @param validationRule 校验规则
 * @param writePath 确认写入路径
 * @param operaWriteParticipation 是否参与 OPERA 参数组装
 * @param operaParameterMapping OPERA 参数映射说明
 * @param notes 备注说明
 * @param value 当前回显值
 */
public record ReservationTaskFieldResult(
        @JsonProperty("row_number")
        Integer rowNumber,
        @JsonProperty("card_name")
        String cardName,
        @JsonProperty("result_type")
        String resultType,
        @JsonProperty("task_type")
        String taskType,
        @JsonProperty("task_subtype")
        String taskSubtype,
        @JsonProperty("display_area")
        String displayArea,
        @JsonProperty("field_path")
        String fieldPath,
        @JsonProperty("field_pointer")
        String fieldPointer,
        @JsonProperty("legacy_field_path")
        String legacyFieldPath,
        @JsonProperty("display_name")
        String displayName,
        String visible,
        String editable,
        @JsonProperty("input_editable")
        String inputEditable,
        @JsonProperty("select_editable")
        String selectEditable,
        @JsonProperty("date_picker")
        String datePicker,
        @JsonProperty("number_input")
        String numberInput,
        @JsonProperty("file_display")
        String fileDisplay,
        @JsonProperty("table_editable")
        String tableEditable,
        @JsonProperty("enum_options")
        String enumOptions,
        @JsonProperty("required_rule")
        String requiredRule,
        @JsonProperty("default_value_source")
        String defaultValueSource,
        @JsonProperty("display_condition")
        String displayCondition,
        @JsonProperty("validation_rule")
        String validationRule,
        @JsonProperty("write_path")
        String writePath,
        @JsonProperty("opera_write_participation")
        String operaWriteParticipation,
        @JsonProperty("opera_parameter_mapping")
        String operaParameterMapping,
        String notes,
        Object value
) {
}
