from collections import defaultdict from sqlalchemy import text # 新增这一行 ms = { "99181":{ "template": [ { "stepName": "物品信息", "step": "1", "properties": [] }, { "stepName": "成色情况", "step": "2", "properties": [ { "isMulti": False, "values": [ { "valueId": "100330", "valueText": "个人账号可退出", "isNormal": True }, { "valueId": "100329", "valueText": "个人账号无法退出", "isNormal": False } ], "name": "账号情况", "id": "1066", "required": True }, { "isMulti": False, "values": [ { "valueId": "100339", "valueText": "全新机未拆封(质检时会进行拆封)", "isNormal": True }, { "valueId": "100029", "valueText": "外壳完美", "isNormal": True }, { "valueId": "100341", "valueText": "外壳有细微划痕", "isNormal": False }, { "valueId": "100342", "valueText": "外壳有磕碰掉漆", "isNormal": False }, { "valueId": "100034", "valueText": "外壳缺失/裂缝/孔变形/翘起/刻字", "isNormal": False }, { "valueId": "100408", "valueText": "机身有弯曲", "isNormal": False } ], "name": "机身外观", "id": "1006", "required": True }, { "isMulti": False, "values": [ { "valueId": "100069", "valueText": "屏幕外观完美", "isNormal": True }, { "valueId": "100335", "valueText": "屏幕有细微划痕", "isNormal": False }, { "valueId": "100533", "valueText": "屏幕较明显划痕", "isNormal": False }, { "valueId": "100534", "valueText": "屏幕裂痕/小缺角/脱胶进灰", "isNormal": False } ], "name": "屏幕外观", "id": "1011", "required": True } ] }, { "stepName": "功能情况", "step": "3", "properties": [ { "isMulti": False, "values": [ { "valueId": "100085", "valueText": "显示完美,无任何异常", "isNormal": True }, { "valueId": "100331", "valueText": "显示轻微泛黄/亮点/亮斑(有其中一项)", "isNormal": False }, { "valueId": "100333", "valueText": "显示有透图/透字", "isNormal": False }, { "valueId": "100092", "valueText": "显示异常(漏液/错乱/闪屏/屏生线/亮度坏)", "isNormal": False }, { "valueId": "100535", "valueText": "屏幕全花屏/无法显示", "isNormal": False } ], "name": "屏幕显示", "id": "1013", "required": False }, { "isMulti": False, "values": [ { "valueId": "100392", "valueText": "触摸正常", "isNormal": True }, { "valueId": "100394", "valueText": "触摸异常(延迟/失灵)", "isNormal": False } ], "name": "触摸", "id": "1074", "required": False }, { "isMulti": False, "values": [ { "valueId": "100395", "valueText": "拍摄正常", "isNormal": True }, { "valueId": "100397", "valueText": "拍摄异常(抖动/模糊/不对焦/分层/颠倒)", "isNormal": False } ], "name": "拍摄", "id": "1076", "required": False }, { "isMulti": False, "values": [ { "valueId": "100398", "valueText": "WiFi/蓝牙连接正常", "isNormal": True }, { "valueId": "100399", "valueText": "WiFi/蓝牙连接异常", "isNormal": False } ], "name": "WiFi/蓝牙", "id": "1072", "required": False }, { "isMulti": False, "values": [ { "valueId": "100400", "valueText": "通话正常", "isNormal": True }, { "valueId": "100401", "valueText": "通话异常", "isNormal": False } ], "name": "通话", "id": "1078", "required": False }, { "isMulti": False, "values": [ { "valueId": "100402", "valueText": "面容/指纹功能正常", "isNormal": True }, { "valueId": "100403", "valueText": "面容/指纹功能异常", "isNormal": False } ], "name": "面容/指纹", "id": "1073", "required": False }, { "isMulti": True, "values": [ { "valueId": "100370", "valueText": "电池健康度<80%", "isNormal": False }, { "valueId": "100555", "valueText": "展示机/资源机/官换机", "isNormal": False }, { "valueId": "100560", "valueText": "已开启丢失模式", "isNormal": False } ], "name": "其他功能问题(可多选或不选)", "id": "1069", "required": False }, { "isMulti": True, "values": [ { "valueId": "100344", "valueText": "机器无维修痕迹", "isNormal": True }, { "valueId": "100529", "valueText": "更换电池/摄像头/外壳/其他配件", "isNormal": False }, { "valueId": "100530", "valueText": "更换原厂屏", "isNormal": False }, { "valueId": "100346", "valueText": "屏幕维修(更换非原厂屏等)", "isNormal": False }, { "valueId": "100384", "valueText": "主板维修/扩容", "isNormal": False } ], "name": "整机维修(可多选或不选1)", "id": "1067", "required": False } ] } ], "templateVersion": "19", "templateId": "99181" }, "99198": { "template": [ { "stepName": "物品信息", "step": "1", "properties": [] }, { "stepName": "成色情况", "step": "2", "properties": [ { "isMulti": False, "values": [ { "valueId": "100330", "valueText": "个人账号可退出", "isNormal": True }, { "valueId": "100329", "valueText": "个人账号无法退出", "isNormal": False } ], "name": "账号情况", "id": "1066", "required": True }, { "isMulti": False, "values": [ { "valueId": "100339", "valueText": "全新机未拆封(质检时会进行拆封)", "isNormal": True }, { "valueId": "100029", "valueText": "外壳完美", "isNormal": True }, { "valueId": "100341", "valueText": "外壳有细微划痕", "isNormal": False }, { "valueId": "100342", "valueText": "外壳有磕碰掉漆", "isNormal": False }, { "valueId": "100034", "valueText": "外壳缺失/裂缝/孔变形/翘起/刻字", "isNormal": False }, { "valueId": "100408", "valueText": "机身有弯曲", "isNormal": False } ], "name": "机身外观", "id": "1006", "required": True }, { "isMulti": False, "values": [ { "valueId": "100069", "valueText": "屏幕外观完美", "isNormal": True }, { "valueId": "100335", "valueText": "屏幕有细微划痕", "isNormal": False }, { "valueId": "100533", "valueText": "屏幕较明显划痕", "isNormal": False }, { "valueId": "100534", "valueText": "屏幕裂痕/小缺角/脱胶进灰", "isNormal": False } ], "name": "屏幕外观", "id": "1011", "required": True } ] }, { "stepName": "功能情况", "step": "3", "properties": [ { "isMulti": False, "values": [ { "valueId": "100085", "valueText": "显示完美,无任何异常", "isNormal": True }, { "valueId": "100331", "valueText": "显示轻微泛黄/亮点/亮斑(有其中一项)", "isNormal": False }, { "valueId": "100333", "valueText": "显示有透图/透字", "isNormal": False }, { "valueId": "100092", "valueText": "显示异常(漏液/错乱/闪屏/屏生线/亮度坏)", "isNormal": False }, { "valueId": "100535", "valueText": "屏幕全花屏/无法显示", "isNormal": False } ], "name": "屏幕显示", "id": "1013", "required": False }, { "isMulti": False, "values": [ { "valueId": "100392", "valueText": "触摸正常", "isNormal": True }, { "valueId": "100394", "valueText": "触摸异常(延迟/失灵)", "isNormal": False } ], "name": "触摸", "id": "1074", "required": False }, { "isMulti": False, "values": [ { "valueId": "100395", "valueText": "拍摄正常", "isNormal": True }, { "valueId": "100397", "valueText": "拍摄异常(抖动/模糊/不对焦/分层/颠倒)", "isNormal": False } ], "name": "拍摄", "id": "1076", "required": False }, { "isMulti": False, "values": [ { "valueId": "100398", "valueText": "WiFi/蓝牙连接正常", "isNormal": True }, { "valueId": "100399", "valueText": "WiFi/蓝牙连接异常", "isNormal": False } ], "name": "WiFi/蓝牙", "id": "1072", "required": False }, { "isMulti": False, "values": [ { "valueId": "100400", "valueText": "通话正常", "isNormal": True }, { "valueId": "100401", "valueText": "通话异常", "isNormal": False } ], "name": "通话", "id": "1078", "required": False }, { "isMulti": False, "values": [ { "valueId": "100402", "valueText": "面容/指纹功能正常", "isNormal": True }, { "valueId": "100403", "valueText": "面容/指纹功能异常", "isNormal": False } ], "name": "面容/指纹", "id": "1073", "required": False }, { "isMulti": True, "values": [ { "valueId": "100555", "valueText": "展示机/资源机/官换机", "isNormal": False } ], "name": "其他功能问题(可多选或不选)", "id": "1069", "required": False }, { "isMulti": True, "values": [ { "valueId": "100344", "valueText": "机器无维修痕迹", "isNormal": True }, { "valueId": "100529", "valueText": "更换电池/摄像头/外壳/其他配件", "isNormal": False }, { "valueId": "100530", "valueText": "更换原厂屏", "isNormal": False }, { "valueId": "100346", "valueText": "屏幕维修(更换非原厂屏等)", "isNormal": False }, { "valueId": "100384", "valueText": "主板维修/扩容", "isNormal": False } ], "name": "整机维修(可多选或不选)", "id": "1067", "required": False } ] } ], "templateVersion": "9", "templateId": "99198" }, "99197":{ "template": [ { "stepName": "物品信息", "step": "1", "properties": [] }, { "stepName": "成色情况", "step": 2, "properties": [ { "isMulti": False, "values": [ { "valueId": 100330, "valueText": "个人账号可退出", "isNormal": True }, { "valueId": 100329, "valueText": "个人账号无法退出", "isNormal": False } ], "name": "账号情况", "id": 1066, "required": True }, { "isMulti": False, "values": [ { "valueId": 100339, "valueText": "全新机未拆封(质检时会进行拆封)", "isNormal": True }, { "valueId": 100029, "valueText": "外壳完美", "isNormal": True }, { "valueId": 100341, "valueText": "外壳有细微划痕", "isNormal": False }, { "valueId": 100342, "valueText": "外壳有磕碰掉漆", "isNormal": False }, { "valueId": 100034, "valueText": "外壳缺失/裂缝/孔变形/翘起/刻字(含镜片碎裂)", "isNormal": False }, { "valueId": 100408, "valueText": "机身有弯曲", "isNormal": False } ], "name": "机身外观", "id": 1006, "required": True }, { "isMulti": False, "values": [ { "valueId": 100495, "valueText": "转轴开合正常", "isNormal": True }, { "valueId": 100496, "valueText": "转轴开合异常", "isNormal": False } ], "name": "转轴情况", "id": 1092, "required": True }, { "isMulti": False, "values": [ { "valueId": 100069, "valueText": "屏幕外观完美", "isNormal": True }, { "valueId": 100335, "valueText": "屏幕有细微划痕", "isNormal": False }, { "valueId": 100533, "valueText": "屏幕较明显划痕", "isNormal": False }, { "valueId": 100534, "valueText": "屏幕裂痕/小缺角/脱胶进灰", "isNormal": False } ], "name": "屏幕外观", "id": 1011, "required": True } ] }, { "stepName": "功能情况", "step": 3, "properties": [ { "isMulti": False, "values": [ { "valueId": 100085, "valueText": "显示完美,无任何异常", "isNormal": True }, { "valueId": 100331, "valueText": "显示轻微泛黄/亮点/亮斑(有其中一项)", "isNormal": False }, { "valueId": 100333, "valueText": "显示有透图/透字", "isNormal": False }, { "valueId": 100092, "valueText": "显示异常(漏液/错乱/闪屏/屏生线/亮度坏)", "isNormal": False }, { "valueId": 100535, "valueText": "屏幕全花屏/无法显示", "isNormal": False } ], "name": "屏幕显示", "id": 1013, "required": False }, { "isMulti": False, "values": [ { "valueId": 100392, "valueText": "触摸正常", "isNormal": True }, { "valueId": 100394, "valueText": "触摸异常(延迟/失灵)", "isNormal": False } ], "name": "触摸", "id": 1074, "required": False }, { "isMulti": False, "values": [ { "valueId": 100395, "valueText": "拍摄正常", "isNormal": True }, { "valueId": 100397, "valueText": "拍摄异常(抖动/模糊/不对焦/分层/颠倒)", "isNormal": False } ], "name": "拍摄", "id": 1076, "required": False }, { "isMulti": False, "values": [ { "valueId": 100398, "valueText": "WiFi/蓝牙连接正常", "isNormal": True }, { "valueId": 100399, "valueText": "WiFi/蓝牙连接异常", "isNormal": False } ], "name": "WiFi/蓝牙", "id": 1072, "required": False }, { "isMulti": False, "values": [ { "valueId": 100400, "valueText": "通话正常", "isNormal": True }, { "valueId": 100401, "valueText": "通话异常", "isNormal": False } ], "name": "通话", "id": 1078, "required": False }, { "isMulti": False, "values": [ { "valueId": 100402, "valueText": "面容/指纹功能正常", "isNormal": True }, { "valueId": 100403, "valueText": "面容/指纹功能无法录入或识别", "isNormal": False } ], "name": "面容/指纹", "id": 1073, "required": False }, { "isMulti": True, "values": [ { "valueId": 100357, "valueText": "充电功能异常/充电孔接触不良", "isNormal": False }, { "valueId": 100360, "valueText": "距离/光线感应异常", "isNormal": False }, { "valueId": 100362, "valueText": "听筒/麦克风/扬声器 异常", "isNormal": False }, { "valueId": 100367, "valueText": "指南针/重力感应异常", "isNormal": False }, { "valueId": 100555, "valueText": "展示机/资源机/官换机", "isNormal": False } ], "name": "其他功能问题(需员工检测,可多选或不选)", "id": 1069, "required": False }, { "isMulti": True, "values": [ { "valueId": 100344, "valueText": "机器无维修痕迹", "isNormal": True }, { "valueId": 100529, "valueText": "更换电池/摄像头/外壳/其他配件", "isNormal": False }, { "valueId": 100530, "valueText": "更换原厂屏", "isNormal": False }, { "valueId": 100346, "valueText": "屏幕维修(更换非原厂屏等)", "isNormal": False }, { "valueId": 100384, "valueText": "主板维修/扩容", "isNormal": False } ], "name": "整机维修(可多选或不选)", "id": 1067, "required": False } ] } ], "templateVersion": 11, "templateId": "99197" } } def build_estimate_template(rows): """ rows: release_option 查询结果 """ result = defaultdict(lambda: defaultdict(list)) for r in rows: result[r.step_name][r.option_key_name].append({ "option_id": r.option_id, "option_name": r.option_name, "selected": False }) return result def build_estimate_packet(db, base_template_id: int): packet = [] return ms[str(base_template_id)]["template"] return packet # -------- step 1 -------- step1_rows = db.execute(text(""" SELECT * FROM step1_attr WHERE base_template_id = :tpl ORDER BY attr_key, sort_order """), {"tpl": base_template_id}).fetchall() step1_map = {} for r in step1_rows: key = r.attr_key if key not in step1_map: step1_map[key] = { "id": r.attr_key, "name": r.attr_name, "required": bool(r.required), "isMulti": bool(r.is_multi), "values": [] } step1_map[key]["values"].append({ "valueId": str(r.value_id), "valueText": r.value_name, "isNormal": bool(r.is_normal) }) packet.append({ "step": "1", "stepName": "物品信息", "properties": list(step1_map.values()) }) # -------- step 2 / 3 -------- option_rows = db.execute(text(""" SELECT step_id, step_name, option_key_id, option_key_name, option_id, option_name FROM release_option ORDER BY step_id, option_key_id """)).fetchall() step_map = {} for r in option_rows: step = str(r.step_id) if step not in step_map: step_map[step] = { "step": step, "stepName": r.step_name, "properties": {} } props = step_map[step]["properties"] if r.option_key_id not in props: props[r.option_key_id] = { "id": str(r.option_key_id), "name": r.option_key_name, "isMulti": False, "required": True, "values": [] } props[r.option_key_id]["values"].append({ "valueId": str(r.option_id), "valueText": r.option_name, "isNormal": True }) for step in sorted(step_map.keys()): step_map[step]["properties"] = list(step_map[step]["properties"].values()) packet.append(step_map[step]) return packet