mengchang 2 месяцев назад
Сommit
fd82a2563f
37 измененных файлов с 9632 добавлено и 0 удалено
  1. 10 0
      backend/Dockerfile
  2. BIN
      backend/__pycache__/database.cpython-310.pyc
  3. BIN
      backend/__pycache__/main.cpython-310.pyc
  4. 14 0
      backend/database.py
  5. 17 0
      backend/main.py
  6. 15 0
      backend/models.py
  7. 7 0
      backend/requirements.txt
  8. BIN
      backend/routers/__pycache__/admin.cpython-310.pyc
  9. BIN
      backend/routers/__pycache__/admin_step1.cpython-310.pyc
  10. BIN
      backend/routers/__pycache__/admin_template.cpython-310.pyc
  11. BIN
      backend/routers/__pycache__/estimate.cpython-310.pyc
  12. 411 0
      backend/routers/admin.py
  13. 84 0
      backend/routers/admin_step1.py
  14. 190 0
      backend/routers/admin_template.py
  15. 213 0
      backend/routers/estimate.py
  16. BIN
      backend/services/__pycache__/price_service.cpython-310.pyc
  17. BIN
      backend/services/__pycache__/template_builder.cpython-310.pyc
  18. BIN
      backend/services/__pycache__/template_service.cpython-310.pyc
  19. 25 0
      backend/services/price_service.py
  20. 973 0
      backend/services/template_builder.py
  21. 33 0
      backend/services/template_service.py
  22. 31 0
      backend/templates/adjust.html
  23. 31 0
      backend/templates/estimate.html
  24. 35 0
      backend/templates/factors.html
  25. 7 0
      backend/templates/index.html
  26. 16 0
      backend/templates/machine.html
  27. 22 0
      backend/templates/release_option.html
  28. 8 0
      backend/templates/result.html
  29. 42 0
      docker-compose.yml
  30. 138 0
      mysql/init.sql
  31. 878 0
      tools/base_templates.json
  32. 83 0
      tools/import_base_t.py
  33. 89 0
      tools/import_base_template.py
  34. 65 0
      tools/import_machine.py
  35. 91 0
      tools/import_release_option_clean.py
  36. 674 0
      tools/t_chx_release_option.csv
  37. 5430 0
      tools/t_chxs_machine.csv

+ 10 - 0
backend/Dockerfile

@@ -0,0 +1,10 @@
+FROM python:3.10-slim
+
+WORKDIR /app
+
+COPY requirements.txt .
+RUN pip install --no-cache-dir -r requirements.txt
+
+COPY . .
+
+CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

BIN
backend/__pycache__/database.cpython-310.pyc


BIN
backend/__pycache__/main.cpython-310.pyc


+ 14 - 0
backend/database.py

@@ -0,0 +1,14 @@
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+import redis
+
+DATABASE_URL = "mysql+pymysql://root:root@mysql:3306/recycle"
+
+engine = create_engine(DATABASE_URL, pool_pre_ping=True)
+SessionLocal = sessionmaker(bind=engine)
+
+redis_client = redis.Redis(
+    host="redis",
+    port=6379,
+    decode_responses=True
+)

+ 17 - 0
backend/main.py

@@ -0,0 +1,17 @@
+from fastapi import FastAPI
+from fastapi.templating import Jinja2Templates
+from routers import admin, estimate, admin_step1, admin_template
+
+app = FastAPI(title="设备回收后台")
+
+templates = Jinja2Templates(directory="templates")
+# app.state.templates = templates
+app.templates = templates
+app.include_router(admin.router)
+app.include_router(estimate.router)
+app.include_router(admin_step1.router)
+app.include_router(admin_template.router)
+
+@app.get("/")
+def index():
+    return {"msg": "Recycle Admin Running"}

+ 15 - 0
backend/models.py

@@ -0,0 +1,15 @@
+from sqlalchemy import Column, BigInteger, String, Text, Numeric
+from sqlalchemy.ext.declarative import declarative_base
+
+Base = declarative_base()
+
+class MachineTemp(Base):
+    __tablename__ = "machine_temp"
+    id = Column(BigInteger, primary_key=True)
+    machine_id = Column(BigInteger)
+    estimate_packet = Column(Text)
+
+class PriceOptionFactor(Base):
+    __tablename__ = "price_option_factor"
+    option_id = Column(BigInteger, primary_key=True)
+    factor = Column(Numeric(5,4))

+ 7 - 0
backend/requirements.txt

@@ -0,0 +1,7 @@
+fastapi
+uvicorn
+sqlalchemy
+pymysql
+jinja2
+redis
+python-multipart

BIN
backend/routers/__pycache__/admin.cpython-310.pyc


BIN
backend/routers/__pycache__/admin_step1.cpython-310.pyc


BIN
backend/routers/__pycache__/admin_template.cpython-310.pyc


BIN
backend/routers/__pycache__/estimate.cpython-310.pyc


+ 411 - 0
backend/routers/admin.py

@@ -0,0 +1,411 @@
+
+from fastapi import APIRouter, Request, Depends, Form
+from fastapi.responses import HTMLResponse, RedirectResponse
+from sqlalchemy import text  # 新增这一行
+from sqlalchemy.orm import Session
+from database import SessionLocal
+import json
+import time
+from datetime import datetime
+from datetime import datetime
+from services.template_builder import build_estimate_template
+
+router = APIRouter(prefix="/admin", tags=["admin"])
+
+
+# ---------- DB ----------
+def get_db():
+    db = SessionLocal()
+    try:
+        yield db
+    finally:
+        db.close()
+
+
+# ---------- 机型管理 ----------
+@router.get("/machines", response_class=HTMLResponse)
+def machine_page(db: Session = Depends(get_db)):
+    categories = db.execute(text("""
+        SELECT category_id, name FROM t_chx_category
+    """)).fetchall()
+
+    machines = db.execute(text("""
+        SELECT brand_name, name, type_name
+        FROM t_machine
+        ORDER BY id DESC
+        LIMIT 50
+    """)).fetchall()
+
+    html = """
+    <h2>机型管理</h2>
+    <form method="post" action="/admin/machines/add">
+        分类:
+        <select name="type_id">
+    """
+
+    for c in categories:
+        html += f"<option value='{c.category_id}'>{c.name}</option>"
+
+    html += """
+        </select><br><br>
+        品牌名称:<input name="brand_name"><br><br>
+        机型名称:<input name="machine_name"><br><br>
+        <button type="submit">新增机型</button>
+    </form>
+    <hr>
+    <ul>
+    """
+
+    for m in machines:
+        html += f"<li>{m.type_name} | {m.brand_name} - {m.name}</li>"
+
+    html += "</ul>"
+    return html
+
+
+@router.post("/machines/add")
+def add_machine(
+    type_id: int = Form(...),
+    brand_name: str = Form(...),
+    machine_name: str = Form(...),
+    db: Session = Depends(get_db)
+):
+    category = db.execute(
+        text("SELECT name FROM t_chx_category WHERE category_id=:id"),
+        {"id": type_id}
+    ).fetchone()
+
+    machine_id = int(time.time() * 1000)
+    brand_id = int(time.time() * 1000)
+
+    db.execute(text("""
+        INSERT INTO t_machine
+        (
+            code,
+            type_id,
+            type_name,
+            brand_id,
+            brand_name,
+            machine_id,
+            name,
+            create_time
+        )
+        VALUES
+        (
+            'mobile',
+            :type_id,
+            :type_name,
+            :brand_id,
+            :brand_name,
+            :machine_id,
+            :name,
+            :time
+        )
+    """), {
+        "type_id": type_id,
+        "type_name": category.name,
+        "brand_id": brand_id,
+        "brand_name": brand_name,
+        "machine_id": machine_id,
+        "name": machine_name,
+        "time": datetime.now()
+    })
+
+    db.commit()
+    return RedirectResponse("/admin/machines", status_code=302)
+
+# ---------- release_option 管理 ----------
+@router.get("/options", response_class=HTMLResponse)
+def option_page(db: Session = Depends(get_db)):
+    rows = db.execute(text("""
+        SELECT step_name, option_key_name, option_name
+        FROM release_option
+        ORDER BY step_name, option_key_name
+    """)).fetchall()
+
+    # 组装树
+    tree = {}
+    for r in rows:
+        step = r.step_name
+        key = r.option_key_name
+        opt = r.option_name
+
+        tree.setdefault(step, {})
+        if key:
+            tree[step].setdefault(key, [])
+            if opt:
+                tree[step][key].append(opt)
+
+    # 渲染 HTML
+    html = "<h2>检测项管理</h2>"
+
+    for step, keys in tree.items():
+        html += f"<h3>📂 {step}</h3><ul>"
+        for key, opts in keys.items():
+            html += f"<li>📁 {key}<ul>"
+            for o in opts:
+                html += f"<li>✅ {o}</li>"
+            html += "</ul></li>"
+        html += "</ul>"
+
+    # 表单
+    html += """
+    <hr>
+
+    <h3>➕ 新增父级</h3>
+    <form method="post" action="/admin/options/add">
+        父级名称:<input name="step_name">
+        <button type="submit">添加</button>
+    </form>
+
+    <h3>➕ 新增子级</h3>
+    <form method="post" action="/admin/options/add">
+        父级名称:<input name="step_name">
+        子级名称:<input name="option_key_name">
+        <button type="submit">添加</button>
+    </form>
+
+    <h3>➕ 新增选项</h3>
+    <form method="post" action="/admin/options/add">
+        父级名称:<input name="step_name">
+        子级名称:<input name="option_key_name">
+        选项名称:<input name="option_name">
+        <button type="submit">添加</button>
+    </form>
+    """
+
+    return html
+
+@router.post("/options/add")
+def add_option(
+    step_name: str = Form(...),
+    option_key_name: str = Form(""),
+    option_name: str = Form(""),
+    db: Session = Depends(get_db)
+):
+    db.execute(text("""
+        INSERT INTO release_option
+        (step_id, step_name, option_key_id, option_key_name, option_id, option_name)
+        VALUES
+        (
+            2,
+            :step,
+            UNIX_TIMESTAMP(),
+            :key,
+            UNIX_TIMESTAMP(),
+            :opt
+        )
+    """), {
+        "step": step_name,
+        "key": option_key_name,
+        "opt": option_name
+    })
+    db.commit()
+
+    return RedirectResponse("/admin/options", status_code=302)
+
+# ---------- API ----------
+@router.get("/capacities/{machine_id}")
+def capacities(machine_id: int, db: Session = Depends(get_db)):
+    return db.execute(
+        "SELECT capacity FROM machine_base_price WHERE machine_id=:id",
+        {"id": machine_id}
+    ).fetchall()
+
+
+@router.post("/release_option/add")
+def add_option(
+    step_id: int = Form(...),
+    step_name: str = Form(...),
+    option_key_name: str = Form(...),
+    option_name: str = Form(...),
+    db: Session = Depends(get_db)
+):
+    db.execute("""
+    INSERT INTO release_option(step_id,step_name,option_key_id,option_key_name,option_id,option_name)
+    VALUES (:sid,:sname, UNIX_TIMESTAMP(), :kname, UNIX_TIMESTAMP(), :oname)
+    """, {
+        "sid": step_id,
+        "sname": step_name,
+        "kname": option_key_name,
+        "oname": option_name
+    })
+    db.commit()
+    return {"ok": True}
+
+@router.get("/capacities/{machine_id}")
+def capacities(machine_id: int, db: Session = Depends(get_db)):
+    return db.execute(
+        "SELECT capacity FROM machine_base_price WHERE machine_id=:id",
+        {"id": machine_id}
+    ).fetchall()
+
+@router.get("/factors", response_class=HTMLResponse)
+def factors(request: Request, db: Session = Depends(get_db)):
+    rows = db.execute(text("""
+    SELECT ro.option_name, pf.option_id, pf.factor, pf.absolute_deduct
+    FROM price_option_factor pf
+    LEFT JOIN release_option ro ON pf.option_id = ro.option_id
+    """)).fetchall()
+
+    options = db.execute(text("""
+    SELECT DISTINCT option_id, option_name FROM release_option
+    """)).fetchall()
+
+    return request.app.templates.TemplateResponse(
+        "factors.html",
+        {
+            "request": request,
+            "rows": rows,
+            "options": options
+        }
+    )
+
+
+@router.post("/factors/save")
+def save_factor(
+    option_id: int = Form(...),
+    factor: float = Form(1.0),
+    absolute_deduct: float = Form(0),
+    db: Session = Depends(get_db)
+):
+    db.execute(text("""
+    INSERT INTO price_option_factor(option_id,factor,absolute_deduct)
+    VALUES (:oid,:f,:d)
+    ON DUPLICATE KEY UPDATE
+    factor=:f, absolute_deduct=:d
+    """), {
+        "oid": option_id,
+        "f": factor,
+        "d": absolute_deduct
+    })
+    db.commit()
+    return RedirectResponse("/admin/factors", status_code=302)
+
+
+@router.get("/adjust", response_class=HTMLResponse)
+def adjust_page(request: Request, db: Session = Depends(get_db)):
+    rows = db.execute(text("SELECT * FROM price_adjust_factor")).fetchall()
+    return request.app.templates.TemplateResponse(
+        "adjust.html",
+        {"request": request, "rows": rows}
+    )
+
+
+@router.post("/adjust/save")
+def save_adjust(
+    level: str = Form(...),
+    ref_id: int = Form(0),
+    factor: float = Form(...),
+    db: Session = Depends(get_db)
+):
+    db.execute(text("""
+    INSERT INTO price_adjust_factor(level,ref_id,factor)
+    VALUES (:l,:r,:f)
+    """), {
+        "l": level,
+        "r": ref_id,
+        "f": factor
+    })
+    db.commit()
+    return RedirectResponse("/admin/adjust", status_code=302)
+
+@router.post("/machine-template/generate")
+def generate_machine_template(
+    machine_id: int = Form(...),
+    db: Session = Depends(get_db)
+):
+    # 1. release_option
+    options = db.execute(text("""
+        SELECT step_name, option_key_name, option_id, option_name
+        FROM release_option
+        ORDER BY step_id, option_key_id, option_id
+    """)).fetchall()
+
+    if not options:
+        return {"error": "release_option 为空"}
+
+    template = build_estimate_template(options)
+
+    # 2. 写入 machine_temp
+    db.execute(text("""
+        INSERT INTO machine_temp
+        (machine_id, temp_type, estimate_packet, create_time, update_time)
+        VALUES (:mid, '00', :json, :now, :now)
+        ON DUPLICATE KEY UPDATE
+          estimate_packet = :json,
+          update_time = :now
+    """), {
+        "mid": machine_id,
+        "json": json.dumps(template, ensure_ascii=False),
+        "now": datetime.now()
+    })
+
+    db.commit()
+    return RedirectResponse("/admin/machine-templates", status_code=302)
+
+
+@router.get("/machine-templates", response_class=HTMLResponse)
+def machine_templates(db: Session = Depends(get_db)):
+    rows = db.execute(text("""
+        SELECT m.machine_id, m.name, m.brand_name,
+               mt.id AS temp_id
+        FROM t_machine m
+        LEFT JOIN machine_temp mt
+          ON m.machine_id = mt.machine_id
+         AND mt.temp_type = '00'
+        ORDER BY m.brand_name, m.name
+        LIMIT 100
+    """)).fetchall()
+
+    html = "<h2>机型模板管理</h2><table border=1>"
+    html += "<tr><th>品牌</th><th>机型</th><th>模板</th><th>操作</th></tr>"
+
+    for r in rows:
+        status = "已生成" if r.temp_id else "未生成"
+        btn = "重新生成" if r.temp_id else "生成"
+
+        html += f"""
+        <tr>
+          <td>{r.brand_name}</td>
+          <td>{r.name}</td>
+          <td>{status}</td>
+          <td>
+            <form method="post" action="/admin/machine-template/generate">
+              <input type="hidden" name="machine_id" value="{r.machine_id}">
+              <button type="submit">{btn}</button>
+            </form>
+          </td>
+        </tr>
+        """
+
+    html += "</table>"
+    return html
+
+@router.get("/categories", response_class=HTMLResponse)
+def category_page(db: Session = Depends(get_db)):
+    rows = db.execute(text("SELECT * FROM t_chx_category")).fetchall()
+
+    html = "<h2>分类管理</h2><ul>"
+    for r in rows:
+        html += f"<li>{r.name}</li>"
+    html += "</ul>"
+
+    html += """
+    <h3>新增分类</h3>
+    <form method="post">
+        名称:<input name="name"/>
+        <button type="submit">添加</button>
+    </form>
+    """
+    return html
+
+
+@router.post("/categories")
+def add_category(name: str = Form(...), db: Session = Depends(get_db)):
+    db.execute(
+        text("INSERT INTO t_chx_category(category_id,name) VALUES (UNIX_TIMESTAMP(),:n)"),
+        {"n": name}
+    )
+    db.commit()
+    return RedirectResponse("/admin/categories", 302)

+ 84 - 0
backend/routers/admin_step1.py

@@ -0,0 +1,84 @@
+from fastapi import APIRouter, Depends, Form, Request
+from fastapi.responses import HTMLResponse, RedirectResponse
+from sqlalchemy.orm import Session
+from database import SessionLocal
+
+router = APIRouter(prefix="/admin/step1", tags=["step1"])
+
+
+def get_db():
+    db = SessionLocal()
+    try:
+        yield db
+    finally:
+        db.close()
+
+
+@router.get("", response_class=HTMLResponse)
+def step1_page(request: Request, db: Session = Depends(get_db)):
+    rows = db.execute("""
+        SELECT * FROM step1_attr
+        ORDER BY base_template_id, attr_key, sort_order
+    """).fetchall()
+
+    html = """
+    <h2>Step1 模板配置</h2>
+
+    <form method="post" action="/admin/step1/add">
+      模板ID:<input name="base_template_id"><br>
+      属性Key:<input name="attr_key"><br>
+      属性名:<input name="attr_name"><br>
+      值ID:<input name="value_id"><br>
+      值名称:<input name="value_name"><br>
+      必填:<input name="required" value="1"><br>
+      多选:<input name="is_multi" value="0"><br>
+      <button type="submit">新增</button>
+    </form>
+
+    <hr>
+    """
+
+    last_tpl = None
+    for r in rows:
+        if r.base_template_id != last_tpl:
+            html += f"<h3>模板 {r.base_template_id}</h3>"
+            last_tpl = r.base_template_id
+
+        html += f"""
+        <div>
+          [{r.attr_name}] {r.value_name}
+        </div>
+        """
+
+    return html
+
+
+@router.post("/add")
+def add_step1(
+    base_template_id: int = Form(...),
+    attr_key: str = Form(...),
+    attr_name: str = Form(...),
+    value_id: int = Form(...),
+    value_name: str = Form(...),
+    required: int = Form(1),
+    is_multi: int = Form(0),
+    db: Session = Depends(get_db)
+):
+    db.execute("""
+      INSERT INTO step1_attr
+      (base_template_id, attr_key, attr_name, value_id, value_name, required, is_multi)
+      VALUES
+      (:tpl,:k,:n,:vid,:vname,:r,:m)
+    """, {
+        "tpl": base_template_id,
+        "k": attr_key,
+        "n": attr_name,
+        "vid": value_id,
+        "vname": value_name,
+        "r": required,
+        "m": is_multi
+    })
+    db.commit()
+    return RedirectResponse("/admin/step1", status_code=302)
+
+

+ 190 - 0
backend/routers/admin_template.py

@@ -0,0 +1,190 @@
+import json
+from fastapi import APIRouter, Depends, Request, Form
+from fastapi.responses import HTMLResponse, RedirectResponse
+from sqlalchemy import text  # 新增这一行
+from sqlalchemy.orm import Session
+from database import SessionLocal
+from services.template_builder import build_estimate_packet
+
+router = APIRouter(prefix="/admin/template", tags=["template"])
+
+
+def get_db():
+    db = SessionLocal()
+    try:
+        yield db
+    finally:
+        db.close()
+
+
+@router.get("/preview", response_class=HTMLResponse)
+def preview_template(
+    request: Request,
+    base_template_id: int,
+    db: Session = Depends(get_db)
+):
+    packet = build_estimate_packet(db, base_template_id)
+
+    json_data = {
+        "templateId": base_template_id,
+        "template": packet
+    }
+
+    # ------- HTML 渲染 -------
+    html = f"""
+    <h2>模板预览(Template ID:{base_template_id})</h2>
+    <div style="display:flex;gap:30px">
+
+      <div style="width:55%">
+    """
+
+    for step in packet:
+        html += f"""
+        <div style="border:1px solid #ccc;padding:10px;margin-bottom:10px">
+          <h3>Step {step['step']} - {step['stepName']}</h3>
+        """
+
+        for prop in step["properties"]:
+            html += f"""
+            <div style="margin-left:20px">
+              <b>{prop['name']}</b>
+              {"(多选)" if prop.get("isMulti") else ""}
+              {"(必填)" if prop.get("required") else ""}
+              <ul>
+            """
+
+            for v in prop["values"]:
+                html += f"""
+                <li>
+                  {v['valueText']}
+                  {"✅" if v.get("isNormal") else "❌"}
+                </li>
+                """
+
+            html += "</ul></div>"
+
+        html += "</div>"
+
+    html += f"""
+      </div>
+
+      <div style="width:45%">
+        <h3>JSON 输出</h3>
+        <pre style="background:#f6f6f6;padding:10px;max-height:800px;overflow:auto">
+{json.dumps(json_data, ensure_ascii=False, indent=2)}
+        </pre>
+      </div>
+
+    </div>
+    """
+
+    return html
+# ---------------- 页面 ----------------
+@router.get("/generate", response_class=HTMLResponse)
+def generate_page(request: Request, db: Session = Depends(get_db)):
+    machines = db.execute(text("""
+      SELECT machine_id, brand_name, name
+      FROM t_machine
+      ORDER BY brand_name, name
+      LIMIT 200
+    """)).fetchall()
+
+    templates = [
+        (99181, "iPhone 国行基础模板"),
+        (99198, "安卓通用模板"),
+        (99197, "折叠屏模板"),
+    ]
+
+    html = """
+    <h2>生成机型模板</h2>
+
+    <form method="post">
+      <h3>① 选择机型</h3>
+      <select name="machine_id">
+    """
+
+    for m in machines:
+        html += f'<option value="{m.machine_id}">{m.brand_name} - {m.name}</option>'
+
+    html += """
+      </select>
+
+      <h3>② 选择基础模板</h3>
+      <select name="base_template_id">
+    """
+
+    for tid, tname in templates:
+        html += f'<option value="{tid}">{tid} - {tname}</option>'
+
+    html += """
+      </select>
+
+      <h3>③ Step1 补充配置(手动输入,逗号分隔)</h3>
+
+      容量(capacity):<br>
+      <input name="capacity" placeholder="128G,256G,512G"><br><br>
+
+      颜色(color):<br>
+      <input name="color" placeholder="黑色,白色,蓝色"><br><br>
+
+      保修(warranty):<br>
+      <input name="warranty" placeholder="无保修,官方保修"><br><br>
+
+      <button type="submit">④ 生成模板</button>
+    </form>
+    """
+
+    return html
+
+@router.post("/generate")
+def generate_submit(
+    machine_id: int = Form(...),
+    base_template_id: int = Form(...),
+    capacity: str = Form(""),
+    color: str = Form(""),
+    warranty: str = Form(""),
+    db: Session = Depends(get_db)
+):
+    # 1️⃣ 基础模板(step1_attr + release_option)
+    packet = build_estimate_packet(db, base_template_id)
+
+    # 2️⃣ 补充 step1(人工输入)
+    step1 = packet[0]["properties"]
+
+    def append_property(key, name, values):
+        if not values:
+            return
+        step1.append({
+            "id": key,
+            "name": name,
+            "required": False,
+            "isMulti": False,
+            "values": [
+                {
+                    "valueId": f"manual_{v.strip()}",
+                    "valueText": v.strip(),
+                    "isNormal": True
+                }
+                for v in values.split(",") if v.strip()
+            ]
+        })
+
+    append_property("capacity", "容量", capacity)
+    append_property("color", "颜色", color)
+    append_property("warranty", "保修", warranty)
+
+    # 3️⃣ 保存模板
+    db.execute(text("""
+      INSERT INTO machine_temp(machine_id,temp_type,estimate_packet)
+      VALUES (:mid,'00',:json)
+      ON DUPLICATE KEY UPDATE estimate_packet=:json
+    """), {
+        "mid": machine_id,
+        "json": json.dumps({
+            "templateId": base_template_id,
+            "template": packet
+        }, ensure_ascii=False)
+    })
+
+    db.commit()
+    return RedirectResponse("/admin/template/generate", status_code=302)

+ 213 - 0
backend/routers/estimate.py

@@ -0,0 +1,213 @@
+from fastapi import APIRouter, Request, Depends, Form
+from fastapi.responses import HTMLResponse
+from sqlalchemy.orm import Session
+from sqlalchemy import text
+from database import SessionLocal, redis_client
+from services.template_service import build_template
+from services.price_service import apply_adjust
+import json
+import uuid
+
+router = APIRouter(prefix="/estimate", tags=["estimate"])
+
+
+# ================= DB =================
+def get_db():
+    db = SessionLocal()
+    try:
+        yield db
+    finally:
+        db.close()
+
+
+# ================= 页面 =================
+@router.get("/simulate", response_class=HTMLResponse)
+def simulate(machine_id: int, db: Session = Depends(get_db)):
+
+    row = db.execute(text("""
+      SELECT estimate_packet
+      FROM machine_temp
+      WHERE machine_id=:mid
+    """), {"mid": machine_id}).fetchone()
+
+    tpl = json.loads(row.estimate_packet)
+
+    html = "<h2>估价模拟</h2>"
+
+    html += '<form method="post">'
+
+    for step in tpl["template"]:
+        html += f"<h3>{step['stepName']}</h3>"
+
+        for p in step["properties"]:
+            html += f"<b>{p['name']}</b><br>"
+
+            for v in p["values"]:
+                html += f"""
+                <label>
+                  <input type="checkbox" name="option_ids" value="{v['valueId']}">
+                  {v['valueText']}
+                </label><br>
+                """
+
+    html += f"""
+      <input type="hidden" name="machine_id" value="{machine_id}">
+      <br>
+      <button type="submit">开始估价</button>
+    </form>
+    """
+
+    return html
+
+
+
+# ================= 提交估价 =================
+@router.post("/simulate", response_class=HTMLResponse)
+def simulate_calc(
+    machine_id: int = Form(...),
+    option_ids: list[str] = Form([]),
+    db: Session = Depends(get_db)
+):
+    base_price = 1000.0
+
+    factors = db.execute(text("""
+      SELECT option_id,factor,absolute_deduct
+      FROM price_option_factor
+      WHERE option_id IN :ids
+    """), {"ids": tuple(option_ids)}).fetchall()
+
+    price = base_price
+
+    for f in factors:
+        if f.factor:
+            price *= float(f.factor)
+        if f.absolute_deduct:
+            price -= float(f.absolute_deduct)
+
+    # 机型调节
+    adjust = db.execute(text("""
+      SELECT factor FROM price_adjust_factor
+      WHERE level='machine'
+        AND ref_id=:mid
+    """), {"mid": machine_id}).fetchone()
+
+    if adjust:
+        price *= float(adjust.factor)
+
+    html = f"""
+    <h2>估价结果</h2>
+    选择项:{",".join(option_ids)}<br>
+    估价:{round(price,2)} 元<br>
+    <a href="/estimate/simulate?machine_id={machine_id}">返回</a>
+    """
+
+    return html
+@router.post("/estimate2", response_class=HTMLResponse)
+def estimate_submit(
+    request: Request,
+    machine_id: int = Form(...),
+    capacity: str = Form(...),
+    option_ids: list[int] = Form([]),
+    db: Session = Depends(get_db)
+):
+    # ---------- 基础价格 ----------
+    base_price = db.execute(
+        text("""
+            SELECT base_price
+            FROM machine_base_price
+            WHERE machine_id=:mid AND capacity=:cap
+        """),
+        {"mid": machine_id, "cap": capacity}
+    ).scalar() or 0
+
+    price = float(base_price)
+
+    # ---------- 扣减项 ----------
+    for oid in option_ids:
+        r = db.execute(
+            text("""
+                SELECT factor, absolute_deduct
+                FROM price_option_factor
+                WHERE option_id=:oid
+            """),
+            {"oid": oid}
+        ).fetchone()
+
+        if r:
+            price = price * float(r.factor) - float(r.absolute_deduct)
+
+    # ---------- 调节系数 ----------
+    brand_id = db.execute(
+        text("""
+            SELECT brand_id
+            FROM t_machine
+            WHERE machine_id=:mid
+        """),
+        {"mid": machine_id}
+    ).scalar()
+
+    price = apply_adjust(db, machine_id, brand_id, price)
+    price = round(max(price, 0), 2)
+
+    # ---------- 估价版本 ----------
+    version_no = str(uuid.uuid4())[:8]
+
+    db.execute(
+        text("""
+            INSERT INTO estimate_record
+            (machine_id, capacity, option_ids, final_price, version_no)
+            VALUES (:m, :c, :o, :p, :v)
+        """),
+        {
+            "m": machine_id,
+            "c": capacity,
+            "o": ",".join(map(str, option_ids)),
+            "p": price,
+            "v": version_no
+        }
+    )
+    db.commit()
+
+    # ---------- 模板(Redis 缓存) ----------
+    cache_key = f"template:{machine_id}"
+    cached = redis_client.get(cache_key) if redis_client else None
+
+    if cached:
+        template = json.loads(cached)
+    else:
+        rows = db.execute(text("SELECT * FROM release_option")).fetchall()
+        template = build_template(rows)
+        if redis_client:
+            redis_client.set(cache_key, json.dumps(template), ex=3600)
+
+    # ---------- 重新加载页面 ----------
+    machines = db.execute(
+        text("""
+            SELECT machine_id, name
+            FROM t_machine
+            ORDER BY brand_name, name
+        """)
+    ).fetchall()
+
+    capacities = db.execute(
+        text("""
+            SELECT capacity
+            FROM machine_base_price
+            WHERE machine_id=:mid
+        """),
+        {"mid": machine_id}
+    ).fetchall()
+
+    return request.app.state.templates.TemplateResponse(
+        "estimate.html",
+        {
+            "request": request,
+            "machines": machines,
+            "capacities": capacities,
+            "template": template,
+            "price": price,
+            "version": version_no,
+            "selected_machine": machine_id,
+            "selected_capacity": capacity
+        }
+    )

BIN
backend/services/__pycache__/price_service.cpython-310.pyc


BIN
backend/services/__pycache__/template_builder.cpython-310.pyc


BIN
backend/services/__pycache__/template_service.cpython-310.pyc


+ 25 - 0
backend/services/price_service.py

@@ -0,0 +1,25 @@
+def calc_price(base_price, option_factors):
+    price = base_price
+    for f in option_factors:
+        price *= float(f.factor)
+    return round(price, 2)
+
+
+def apply_adjust(db, machine_id, brand_id, price):
+    rows = db.execute("""
+    SELECT factor FROM price_adjust_factor
+    WHERE level='global'
+    UNION ALL
+    SELECT factor FROM price_adjust_factor
+    WHERE level='brand' AND ref_id=:bid
+    UNION ALL
+    SELECT factor FROM price_adjust_factor
+    WHERE level='machine' AND ref_id=:mid
+    """, {
+        "mid": machine_id,
+        "bid": brand_id
+    }).fetchall()
+
+    for r in rows:
+        price *= float(r.factor)
+    return price

+ 973 - 0
backend/services/template_builder.py

@@ -0,0 +1,973 @@
+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

+ 33 - 0
backend/services/template_service.py

@@ -0,0 +1,33 @@
+import json
+
+def parse_template(estimate_packet: str):
+    tpl = json.loads(estimate_packet)
+    return tpl["template"]
+
+def build_template(rows):
+    result = []
+    step_map = {}
+
+    for r in rows:
+        step = step_map.setdefault(r.step_id, {
+            "stepId": r.step_id,
+            "stepName": r.step_name,
+            "properties": {}
+        })
+
+        prop = step["properties"].setdefault(r.option_key_id, {
+            "keyId": r.option_key_id,
+            "name": r.option_key_name,
+            "values": []
+        })
+
+        prop["values"].append({
+            "valueId": r.option_id,
+            "valueText": r.option_name
+        })
+
+    for step in step_map.values():
+        step["properties"] = list(step["properties"].values())
+        result.append(step)
+
+    return result

+ 31 - 0
backend/templates/adjust.html

@@ -0,0 +1,31 @@
+<h2>调节系数</h2>
+
+<form method="post" action="/admin/adjust/save">
+级别:
+<select name="level">
+<option value="global">全局</option>
+<option value="brand">品牌</option>
+<option value="machine">机型</option>
+</select><br/>
+
+关联ID(品牌ID/机型ID):
+<input name="ref_id" value="0"><br/>
+
+系数:
+<input name="factor" value="1.0"><br/>
+
+<button>保存</button>
+</form>
+
+<hr/>
+
+<table border="1">
+<tr><th>级别</th><th>关联ID</th><th>系数</th></tr>
+{% for r in rows %}
+<tr>
+<td>{{ r.level }}</td>
+<td>{{ r.ref_id }}</td>
+<td>{{ r.factor }}</td>
+</tr>
+{% endfor %}
+</table>

+ 31 - 0
backend/templates/estimate.html

@@ -0,0 +1,31 @@
+<h2>设备估价</h2>
+
+<form method="post">
+机型:
+<select name="machine_id">
+{% for m in machines %}
+<option value="{{ m.machine_id }}">{{ m.name }}</option>
+{% endfor %}
+</select>
+
+<hr/>
+
+{% for step in template %}
+<h4>{{ step.stepName }}</h4>
+{% for prop in step.properties %}
+<b>{{ prop.name }}</b><br/>
+{% for v in prop.values %}
+<label>
+<input type="checkbox" name="option_ids" value="{{ v.valueId }}">
+{{ v.valueText }}
+</label><br/>
+{% endfor %}
+{% endfor %}
+{% endfor %}
+
+<button>计算价格</button>
+</form>
+
+{% if price %}
+<h3>估价结果:¥ {{ price }}</h3>
+{% endif %}

+ 35 - 0
backend/templates/factors.html

@@ -0,0 +1,35 @@
+<h2>扣减系数管理</h2>
+
+<form method="post" action="/admin/factors/save">
+检测项:
+<select name="option_id">
+{% for o in options %}
+<option value="{{ o.option_id }}">{{ o.option_name }}</option>
+{% endfor %}
+</select><br/>
+
+比例系数:
+<input name="factor" value="1.0"><br/>
+
+固定扣减:
+<input name="absolute_deduct" value="0"><br/>
+
+<button>保存</button>
+</form>
+
+<hr/>
+
+<table border="1">
+<tr>
+<th>检测项</th>
+<th>比例</th>
+<th>固定扣减</th>
+</tr>
+{% for r in rows %}
+<tr>
+<td>{{ r.option_name }}</td>
+<td>{{ r.factor }}</td>
+<td>{{ r.absolute_deduct }}</td>
+</tr>
+{% endfor %}
+</table>

+ 7 - 0
backend/templates/index.html

@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<body>
+<h2>回收后台</h2>
+<a href="/estimate">进入估价</a>
+</body>
+</html>

+ 16 - 0
backend/templates/machine.html

@@ -0,0 +1,16 @@
+<h2>机型管理</h2>
+
+<table border="1">
+<tr><th>机型</th><th>生成模板</th></tr>
+{% for m in machines %}
+<tr>
+<td>{{ m.name }}</td>
+<td>
+<form method="post" action="/admin/template/generate">
+<input type="hidden" name="machine_id" value="{{ m.machine_id }}">
+<button>生成模板</button>
+</form>
+</td>
+</tr>
+{% endfor %}
+</table>

+ 22 - 0
backend/templates/release_option.html

@@ -0,0 +1,22 @@
+<h2>检测项管理</h2>
+
+<form method="post" action="/admin/release_option/add">
+组ID:<input name="step_id"><br/>
+组名:<input name="step_name"><br/>
+子项名:<input name="option_key_name"><br/>
+选项值:<input name="option_name"><br/>
+<button>新增</button>
+</form>
+
+<hr/>
+
+<table border="1">
+<tr><th>组</th><th>子项</th><th>值</th></tr>
+{% for o in options %}
+<tr>
+<td>{{ o.step_name }}</td>
+<td>{{ o.option_key_name }}</td>
+<td>{{ o.option_name }}</td>
+</tr>
+{% endfor %}
+</table>

+ 8 - 0
backend/templates/result.html

@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+<body>
+<h2>估价结果</h2>
+<p>最终回收价:<strong>{{ price }}</strong> 元</p>
+<a href="/estimate">重新估价</a>
+</body>
+</html>

+ 42 - 0
docker-compose.yml

@@ -0,0 +1,42 @@
+version: "3.9"
+
+services:
+  mysql:
+    image: mysql:8.0
+    container_name: recycle-mysql
+    restart: always
+    environment:
+      MYSQL_ROOT_PASSWORD: root
+      MYSQL_DATABASE: recycle
+    ports:
+      - "3306:3306"
+    volumes:
+      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
+      - mysql_data:/var/lib/mysql
+    command: --default-authentication-plugin=mysql_native_password
+
+  redis:
+    image: redis:7
+    container_name: recycle-redis
+    restart: always
+    ports:
+      - "6379:6379"
+
+  backend:
+    build: ./backend
+    container_name: recycle-backend
+    restart: always
+    depends_on:
+      - mysql
+      - redis
+    ports:
+      - "8000:8000"
+    volumes:
+      - ./backend:/app
+    environment:
+      TZ: Asia/Shanghai
+
+volumes:
+  mysql_data:
+
+

+ 138 - 0
mysql/init.sql

@@ -0,0 +1,138 @@
+CREATE DATABASE IF NOT EXISTS recycle DEFAULT CHARSET utf8mb4;
+USE recycle;
+
+/* ================= 分类 ================= */
+CREATE TABLE t_chx_category (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  category_id BIGINT NOT NULL,
+  name VARCHAR(60) NOT NULL,
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
+);
+
+/* ================= 机型 ================= */
+CREATE TABLE t_machine (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  code VARCHAR(32),
+  type_id BIGINT,
+  type_name VARCHAR(100),
+  brand_id BIGINT,
+  brand_name VARCHAR(100),
+  machine_id BIGINT,
+  name VARCHAR(100),
+  shrink_name VARCHAR(100),
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
+);
+
+/* ================= 机型模板 ================= */
+CREATE TABLE machine_temp (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  machine_id BIGINT,
+  temp_type VARCHAR(32) DEFAULT '00',
+  estimate_packet TEXT,
+  base_template_id BIGINT NULL,
+  is_custom TINYINT DEFAULT 0,
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
+  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+);
+
+/* ================= 设备情况项 ================= */
+CREATE TABLE release_option (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  step_id BIGINT COMMENT '1物品信息 2成色情况 3功能情况',
+  step_name VARCHAR(50),
+  option_key_id BIGINT,
+  option_key_name VARCHAR(60),
+  option_id BIGINT,
+  option_name VARCHAR(60),
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
+  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+);
+
+
+/* ================= step1设备选项 ================= */
+
+CREATE TABLE step1_attr (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+
+  base_template_id BIGINT NOT NULL COMMENT '基础模板ID:99181 / 99198 / 99197',
+  step TINYINT DEFAULT 1 COMMENT '固定为 step=1',
+
+  attr_key VARCHAR(64) NOT NULL COMMENT 'capacity / color / channel / warranty',
+  attr_name VARCHAR(64) NOT NULL COMMENT '容量 / 颜色 / 购买渠道 / 保修',
+
+  value_id BIGINT NOT NULL COMMENT '选项值ID(用于JSON)',
+  value_name VARCHAR(64) NOT NULL COMMENT '选项值名称',
+
+  is_default TINYINT DEFAULT 0 COMMENT '是否默认',
+  is_normal TINYINT DEFAULT 1 COMMENT '是否正常值',
+
+  required TINYINT DEFAULT 1 COMMENT '是否必填',
+  is_multi TINYINT DEFAULT 0 COMMENT '是否多选',
+
+  sort_order INT DEFAULT 0,
+  is_base_price_attr TINYINT DEFAULT 0 COMMENT '是否用于选择基准价',
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
+  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+
+  KEY idx_tpl (base_template_id),
+  KEY idx_attr (attr_key)
+) COMMENT='step1 模板属性表';
+
+
+/* ================= 基础价格 ================= */
+CREATE TABLE machine_base_price (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  machine_id BIGINT,
+  capacity VARCHAR(32),
+  base_price DECIMAL(10,2),
+  UNIQUE KEY uk_machine_capacity (machine_id, capacity)
+);
+
+/* ================= 扣减系数 ================= */
+CREATE TABLE price_option_factor (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  option_id BIGINT,
+  factor DECIMAL(5,4) DEFAULT 1.0000,
+  absolute_deduct DECIMAL(10,2) DEFAULT 0
+);
+
+/* ================= 调节系数 ================= */
+CREATE TABLE price_adjust_factor (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  level VARCHAR(32),
+  ref_id BIGINT,
+  factor DECIMAL(5,4) DEFAULT 1.0000
+);
+
+/* ================  基础模板 ================= */
+CREATE TABLE base_estimate_template (
+  id BIGINT PRIMARY KEY COMMENT '99181 / 99198 / 99197',
+  name VARCHAR(64) NOT NULL,
+  template_json JSON NOT NULL,
+  template_version INT DEFAULT 1,
+  remark VARCHAR(255),
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
+  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+);
+
+
+
+/* ================= 估价版本 ================= */
+CREATE TABLE estimate_version (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  machine_id BIGINT,
+  version_no VARCHAR(32),
+  content TEXT,
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
+);
+
+/* ================= 估价记录 ================= */
+CREATE TABLE estimate_record (
+  id BIGINT AUTO_INCREMENT PRIMARY KEY,
+  machine_id BIGINT,
+  capacity VARCHAR(32),
+  option_ids TEXT,
+  final_price DECIMAL(10,2),
+  version_no VARCHAR(32),
+  create_time DATETIME DEFAULT CURRENT_TIMESTAMP
+);

+ 878 - 0
tools/base_templates.json

@@ -0,0 +1,878 @@
+{
+    "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"
+    }
+}

+ 83 - 0
tools/import_base_t.py

@@ -0,0 +1,83 @@
+import json
+import pymysql
+
+
+JSON_FILE = "base_templates.json"
+
+DB_CONFIG = {
+    "host": "127.0.0.1",
+    "user": "root",
+    "password": "root",
+    "database": "recycle",
+    "charset": "utf8mb4",
+    "cursorclass": pymysql.cursors.DictCursor
+}
+
+
+def remove_value_text(obj):
+    """
+    递归删除所有 valueText 字段
+    """
+    if isinstance(obj, dict):
+        obj.pop("valueText", None)
+        for k, v in obj.items():
+            remove_value_text(v)
+
+    elif isinstance(obj, list):
+        for item in obj:
+            remove_value_text(item)
+
+
+def main():
+
+    with open(JSON_FILE, "r", encoding="utf-8") as f:
+        data = json.load(f)
+
+    conn = pymysql.connect(**DB_CONFIG)
+
+    try:
+        with conn.cursor() as cursor:
+
+            for template_id, template_data in data.items():
+
+                # 深拷贝一份,避免污染原对象
+                cleaned = json.loads(json.dumps(template_data))
+
+                # 删除 valueText
+                remove_value_text(cleaned)
+
+                template_version = str(cleaned.get("templateVersion"))
+
+                template_json = json.dumps(
+                    cleaned["template"],
+                    ensure_ascii=False
+                )
+
+                sql = """
+                INSERT INTO base_estimate_template
+                (template_id, template_version, template_json)
+                VALUES (%s, %s, %s)
+                ON DUPLICATE KEY UPDATE
+                    template_version = VALUES(template_version),
+                    template_json = VALUES(template_json)
+                """
+
+                cursor.execute(
+                    sql,
+                    (
+                        int(template_id),
+                        template_version,
+                        template_json
+                    )
+                )
+
+                print(f"导入模板 {template_id} 成功")
+
+        conn.commit()
+
+    finally:
+        conn.close()
+
+
+if __name__ == "__main__":
+    main()

+ 89 - 0
tools/import_base_template.py

@@ -0,0 +1,89 @@
+import json
+import pymysql
+
+
+DB_CONFIG = {
+    "host": "127.0.0.1",     # 如果在 docker 里,请改成 mysql 服务名
+    "user": "root",
+    "password": "root",
+    "database": "recycle",
+    "charset": "utf8mb4"
+}
+
+def remove_value_text(obj):
+    """
+    递归删除所有 valueText 字段
+    """
+    if isinstance(obj, dict):
+        obj.pop("valueText", None)
+        for k, v in obj.items():
+            remove_value_text(v)
+
+    elif isinstance(obj, list):
+        for item in obj:
+            remove_value_text(item)
+            
+def main():
+
+    with open("base_templates.json", "r", encoding="utf-8") as f:
+        data = json.load(f)
+
+    conn = pymysql.connect(**DB_CONFIG)
+    cursor = conn.cursor()
+
+    sql = """
+    INSERT INTO base_estimate_template
+        (id, name, template_json, template_version, remark)
+    VALUES
+        (%s, %s, %s, %s, %s)
+    ON DUPLICATE KEY UPDATE
+        name = VALUES(name),
+        template_json = VALUES(template_json),
+        template_version = VALUES(template_version),
+        remark = VALUES(remark)
+    """
+
+    for tpl_id, tpl_data in data.items():
+
+        template_id = int(tpl_id)
+
+        name = f"基础模板-{template_id}"
+
+
+        # 深拷贝一份,避免污染原对象
+        cleaned = json.loads(json.dumps(tpl_data))
+
+        # 删除 valueText
+        remove_value_text(cleaned)
+
+        template_version = str(cleaned.get("templateVersion", 1))
+
+        template_json = json.dumps(
+            cleaned["template"],
+            ensure_ascii=False
+        )
+        # 优先使用 JSON 内的 templateVersion
+        # version = tpl_data.get("templateVersion", 1)
+
+        remark = "import from json file"
+
+        cursor.execute(
+            sql,
+            (
+                template_id,
+                name,
+                template_json,
+                int(template_version),
+                remark
+            )
+        )
+
+        print(f"insert template {template_id}")
+
+    conn.commit()
+    cursor.close()
+    conn.close()
+
+
+if __name__ == "__main__":
+    main()

+ 65 - 0
tools/import_machine.py

@@ -0,0 +1,65 @@
+import csv
+import pymysql
+from datetime import datetime
+
+# ====== 1. 数据库配置 ======
+DB_CONFIG = {
+    "host": "127.0.0.1",
+    "port": 3306,
+    "user": "root",
+    "password": "root",
+    "database": "recycle",
+    "charset": "utf8mb4"
+}
+
+CSV_FILE = "t_chxs_machine.csv"  # 请确保文件名正确
+
+def import_machines():
+    conn = pymysql.connect(**DB_CONFIG)
+    try:
+        with conn.cursor() as cur:
+            # ====== 2. 读取 CSV ======
+            with open(CSV_FILE, mode="r", encoding="gb18030") as f:
+                reader = csv.DictReader(f)
+                
+                data_to_insert = []
+                for row in reader:
+                    # 处理可能为空的 create_time,如果 CSV 里是空的,就传 None 让数据库用 DEFAULT
+                    c_time = row.get("create_time").strip()
+                    create_time = c_time if c_time else None
+                    
+                    # 组装数据元组
+                    data_to_insert.append((
+                        row["id"],
+                        row["code"],
+                        row["type_id"],
+                        row["type_name"],
+                        row["brand_id"],
+                        row["brand_name"],
+                        row["machine_id"],
+                        row["name"],
+                        row["shrink_name"],
+                        create_time
+                    ))
+
+            # ====== 3. 批量插入 SQL ======
+            sql = """
+                INSERT INTO t_machine 
+                (id, code, type_id, type_name, brand_id, brand_name, machine_id, name, shrink_name, create_time)
+                VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
+            """
+            
+            # 使用 executemany 比一条条插入快得多
+            cur.executemany(sql, data_to_insert)
+            
+        conn.commit()
+        print(f"✅ 成功导入 {len(data_to_insert)} 条数据到 t_machine 表")
+
+    except Exception as e:
+        conn.rollback()
+        print(f"❌ 导入失败: {e}")
+    finally:
+        conn.close()
+
+if __name__ == "__main__":
+    import_machines()

+ 91 - 0
tools/import_release_option_clean.py

@@ -0,0 +1,91 @@
+import csv
+import pymysql
+import time
+from datetime import datetime
+
+# ====== DB CONFIG ======
+DB = {
+    "host": "127.0.0.1",
+    "port": 3306,
+    "user": "root",
+    "password": "root",
+    "database": "recycle",
+    "charset": "utf8mb4"
+}
+
+CSV_FILE = "t_chx_release_option.csv"
+
+
+def gen_id():
+    """简单生成唯一ID(你后期可换成雪花)"""
+    return int(time.time() * 1000)
+
+
+def main():
+    conn = pymysql.connect(**DB)
+    cur = conn.cursor()
+
+    # ====== 内存映射(保证同名只生成一个ID)======
+    step_map = {}        # step_name -> step_id
+    option_key_map = {}  # (step_name, option_key_name) -> option_key_id
+
+    with open(CSV_FILE, encoding="gb18030") as f:
+        reader = csv.DictReader(f)
+
+        for row in reader:
+            step_name = row["step_name"].strip()
+            option_key_name = row["option_key_name"].strip()
+            option_name = row["option_name"].strip()
+
+            # ---- step ----
+            if step_name not in step_map:
+                step_id = gen_id()
+                step_map[step_name] = step_id
+            else:
+                step_id = step_map[step_name]
+
+            # ---- option_key ----
+            key = (step_name, option_key_name)
+            if key not in option_key_map:
+                option_key_id = gen_id()
+                option_key_map[key] = option_key_id
+            else:
+                option_key_id = option_key_map[key]
+
+            # ---- option ----
+            option_id = gen_id()
+
+            cur.execute("""
+                INSERT INTO release_option
+                (
+                    step_id,
+                    step_name,
+                    option_key_id,
+                    option_key_name,
+                    option_id,
+                    option_name,
+                    create_time,
+                    update_time
+                )
+                VALUES
+                (%s,%s,%s,%s,%s,%s,%s,%s)
+            """, (
+                step_id,
+                step_name,
+                option_key_id,
+                option_key_name,
+                option_id,
+                option_name,
+                datetime.now(),
+                datetime.now()
+            ))
+
+    conn.commit()
+    cur.close()
+    conn.close()
+
+    print("✅ release_option 规范化导入完成")
+
+
+if __name__ == "__main__":
+    main()

+ 674 - 0
tools/t_chx_release_option.csv

@@ -0,0 +1,674 @@
+id,step_id,step_name,option_key_id,option_key_name,option_id,option_name,unable_start_option,un_opened_option,create_time,update_time
+1,2,成色情况,1007,开机情况,100039,正常开机,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+2,2,成色情况,1007,开机情况,100043,无法开机,1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+3,2,成色情况,1006,机身外观,100029,外壳完美,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+4,2,成色情况,1006,机身外观,100034,外壳缺失/裂缝/孔变形/翘起/刻字,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+5,2,成色情况,1006,机身外观,100339,全新机未拆封(质检时会进行拆封),0,1,7/8/2023 14:08:17,7/8/2023 14:08:17
+6,2,成色情况,1006,机身外观,100341,外壳有细微划痕,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+7,2,成色情况,1006,机身外观,100342,外壳有磕碰掉漆,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+8,2,成色情况,1006,机身外观,100408,机身有弯曲,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+9,2,成色情况,1011,屏幕外观,100069,屏幕外观完美,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+10,2,成色情况,1011,屏幕外观,100335,屏幕有细微划痕,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+11,2,成色情况,1011,屏幕外观,100336,屏幕有划伤/屏幕气泡/脱胶,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+12,2,成色情况,1011,屏幕外观,100337,屏幕有碎裂或磨损,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+13,2,成色情况,1011,屏幕外观,100411,屏幕有硬划痕(指甲划过划痕表面有停顿感),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+14,2,成色情况,1011,屏幕外观,100533,屏幕较明显划痕,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+15,2,成色情况,1011,屏幕外观,100534,屏幕裂痕/小缺角/脱胶进灰,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+16,3,功能情况,1013,屏幕显示,100085,显示完美,无任何异常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+17,3,功能情况,1013,屏幕显示,100092,显示异常(漏液/错乱/闪屏/屏生线/亮度坏),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+18,3,功能情况,1013,屏幕显示,100331,显示轻微泛黄/亮点/亮斑(有其中一项),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+19,3,功能情况,1013,屏幕显示,100332,显示有亮坏点/亮斑/色斑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+20,3,功能情况,1013,屏幕显示,100333,显示有透图/透字,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+21,3,功能情况,1013,屏幕显示,100535,屏幕全花屏/无法显示,1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+22,2,成色情况,1066,账号情况,100329,个人账号无法退出,1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+23,2,成色情况,1066,账号情况,100330,个人账号可退出,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+24,3,功能情况,1067,整机维修(可多选或不选),100344,机器无维修痕迹,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+25,3,功能情况,1067,整机维修(可多选或不选),100346,屏幕维修(更换非原厂屏等),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+26,3,功能情况,1067,整机维修(可多选或不选),100381,电池维修(电池有更换),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+27,3,功能情况,1067,整机维修(可多选或不选),100382,维修前摄像头(前摄像头有更换),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+28,3,功能情况,1067,整机维修(可多选或不选),100383,维修后摄像头(后摄像头有更换),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+29,3,功能情况,1067,整机维修(可多选或不选),100384,主板维修/扩容,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+30,3,功能情况,1067,整机维修(可多选或不选),100410,维修后壳/其他零件,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+31,3,功能情况,1067,整机维修(可多选或不选),100529,更换电池/摄像头/外壳/其他配件,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+32,3,功能情况,1067,整机维修(可多选或不选),100530,更换原厂屏,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+33,3,功能情况,1069,其他功能问题(可多选或不选),100370,电池健康度<80%,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+34,3,功能情况,1069,其他功能问题(可多选或不选),100555,展示机/资源机/官换机,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+35,3,功能情况,1069,其他功能问题(可多选或不选),100560,已开启丢失模式,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+36,3,功能情况,1072,WiFi/蓝牙,100398,WiFi/蓝牙连接正常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+37,3,功能情况,1072,WiFi/蓝牙,100399,WiFi/蓝牙连接异常,1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+38,3,功能情况,1073,面容/指纹,100402,面容/指纹功能正常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+39,3,功能情况,1073,面容/指纹,100403,面容/指纹功能异常,1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+40,3,功能情况,1074,触摸,100392,触摸正常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+41,3,功能情况,1074,触摸,100394,触摸异常(延迟/失灵),1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+42,3,功能情况,1076,拍摄,100395,拍摄正常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+43,3,功能情况,1076,拍摄,100397,拍摄异常(抖动/模糊/不对焦/分层/颠倒),1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+44,3,功能情况,1078,通话,100400,通话正常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+45,3,功能情况,1078,通话,100401,通话异常,1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+46,2,成色情况,1092,转轴情况,100495,转轴开合正常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+47,2,成色情况,1092,转轴情况,100496,转轴开合异常,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+48,1,物品信息,5587,颜色,300072,白色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+49,1,物品信息,5587,颜色,300078,黑色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+50,1,物品信息,5587,颜色,398228,粉色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+51,1,物品信息,5587,颜色,398229,蓝色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+52,1,物品信息,5587,颜色,398236,银色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+53,1,物品信息,5587,颜色,398247,绿色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+54,1,物品信息,5587,颜色,398259,金色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+55,1,物品信息,5587,颜色,398260,紫色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+56,1,物品信息,5587,颜色,398261,香槟金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+57,1,物品信息,5587,颜色,398263,红色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+58,1,物品信息,5587,颜色,398268,橙色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+59,1,物品信息,5587,颜色,398306,铂光金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+60,1,物品信息,5587,颜色,398307,魅海蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+61,1,物品信息,5587,颜色,398312,幻夜黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+62,1,物品信息,5587,颜色,479501,黄色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+63,1,物品信息,5587,颜色,479502,灰色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+64,1,物品信息,5587,颜色,656744,玫瑰金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+65,1,物品信息,5587,颜色,656778,深空灰色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+66,1,物品信息,5587,颜色,680074,亮黑色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+67,1,物品信息,5587,颜色,1080720,珠光白,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+68,1,物品信息,5587,颜色,1081323,星空黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+69,1,物品信息,5587,颜色,1081424,樱花粉,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+70,1,物品信息,5587,颜色,1081680,浅蓝色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+71,1,物品信息,5587,颜色,1081867,电光蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+72,1,物品信息,5587,颜色,1081881,暗夜黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+73,1,物品信息,5587,颜色,1081883,深海蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+74,1,物品信息,5587,颜色,1081936,原力金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+75,1,物品信息,5587,颜色,1081954,皓月白,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+76,1,物品信息,5587,颜色,1082549,其他颜色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+77,1,物品信息,5587,颜色,1082678,暗紫色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+78,1,物品信息,5587,颜色,1082702,宝石蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+79,1,物品信息,5587,颜色,1082779,玄武灰,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+80,1,物品信息,5587,颜色,1082821,石墨黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+81,1,物品信息,5587,颜色,1082844,金色(X520),0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+82,1,物品信息,5587,颜色,1082919,珊瑚色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+83,1,物品信息,5587,颜色,1082933,曜黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+84,1,物品信息,5587,颜色,1082934,晨曦金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+85,1,物品信息,5587,颜色,1082971,渐变蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+86,1,物品信息,5587,颜色,1083287,湖光绿,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+87,1,物品信息,5587,颜色,1083843,琥珀棕,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+88,1,物品信息,5587,颜色,1083905,魅力金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+89,1,物品信息,5587,颜色,1083936,深空黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+90,1,物品信息,5587,颜色,1084006,天空之境,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+91,1,物品信息,5587,颜色,1084623,黑红,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+92,1,物品信息,5587,颜色,1084670,雪域白,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+93,1,物品信息,5587,颜色,1084720,午夜黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+94,1,物品信息,5587,颜色,1084995,暗夜绿色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+95,1,物品信息,5587,颜色,1085319,雅典黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+96,1,物品信息,5587,颜色,1087630,土豪金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+97,1,物品信息,5587,颜色,1087824,钛金属,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+98,1,物品信息,5587,颜色,1088729,秘银,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+99,1,物品信息,5587,颜色,1089041,星空蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+100,1,物品信息,5587,颜色,1101225,简约白,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+101,1,物品信息,5587,颜色,1101305,星空银,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+102,1,物品信息,5587,颜色,1101307,夏日橙,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+103,1,物品信息,5587,颜色,1101311,魅丽金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+104,1,物品信息,5587,颜色,1101345,落日金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+105,1,物品信息,5587,颜色,1111756,天空之镜,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+106,1,物品信息,5587,颜色,1119409,石墨色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+107,1,物品信息,5587,颜色,1119718,秘银色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+108,1,物品信息,5587,颜色,1119719,釉白色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+109,1,物品信息,5587,颜色,1121060,多巴胺金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+110,1,物品信息,5587,颜色,1123364,星光白,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+111,1,物品信息,5587,颜色,1125591,爵迹版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+112,1,物品信息,5587,颜色,1125592,太子妃版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+113,1,物品信息,5587,颜色,1127322,曜金黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+114,1,物品信息,5587,颜色,1127335,冰晶蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+115,1,物品信息,5587,颜色,1130218,深黑色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+116,1,物品信息,5587,颜色,1133700,暗影,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+117,1,物品信息,5587,颜色,1139367,墨玉青,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+118,1,物品信息,5587,颜色,1142801,钛黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+119,1,物品信息,5587,颜色,1143417,可可茶金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+120,1,物品信息,5587,颜色,1149710,橙黑色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+121,1,物品信息,5587,颜色,1149869,雅金白,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+122,1,物品信息,5587,颜色,1149870,冰银蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+123,1,物品信息,5587,颜色,1149871,桃金粉,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+124,1,物品信息,5587,颜色,1158393,午夜色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+125,1,物品信息,5587,颜色,1158394,星光色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+126,1,物品信息,5587,颜色,1158395,远峰蓝色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+127,1,物品信息,5587,颜色,1160268,远峰蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+128,1,物品信息,5587,颜色,1163345,水墨黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+129,1,物品信息,5587,颜色,1168107,水墨灰,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+130,1,物品信息,5587,颜色,1169237,乌金黑,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+131,1,物品信息,5587,颜色,1174926,苍岭绿色,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+132,1,物品信息,5587,颜色,1181070,晴蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+133,1,物品信息,5587,颜色,1181105,青山蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+134,1,物品信息,5587,颜色,1183496,玄月金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+135,1,物品信息,5587,颜色,1184152,金皮纹,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+136,1,物品信息,5587,颜色,1188814,淡海蓝,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+137,1,物品信息,5587,颜色,1192502,鳄鱼纹,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+138,1,物品信息,5587,颜色,1192503,魔鬼鱼眼纹,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+139,1,物品信息,5587,颜色,1194060,冰晶绿,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+140,1,物品信息,5587,颜色,1197787,红色DMR数模对讲版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+141,1,物品信息,5587,颜色,1197788,黑色DMR数模对讲版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+142,1,物品信息,5587,颜色,1199139,簿雾金,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+143,1,物品信息,5587,颜色,1201213,麦穗黄,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+144,1,物品信息,6651,容量,511431,8G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+145,1,物品信息,6651,容量,511432,16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+146,1,物品信息,6651,容量,511433,32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+147,1,物品信息,6651,容量,511434,64G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+148,1,物品信息,6651,容量,678741,128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+149,1,物品信息,6651,容量,678742,256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+150,1,物品信息,6651,容量,880747,4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+151,1,物品信息,6651,容量,880748,32MB,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+152,1,物品信息,6651,容量,881018,16G+1T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+153,1,物品信息,6651,容量,881722,64M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+154,1,物品信息,6651,容量,882405,2G+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+155,1,物品信息,6651,容量,882418,1G+64G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+156,1,物品信息,6651,容量,882430,16G+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+157,1,物品信息,6651,容量,1080622,其他容量,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+158,1,物品信息,6651,容量,1080634,4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+159,1,物品信息,6651,容量,1080643,8GB,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+160,1,物品信息,6651,容量,1080644,512M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+161,1,物品信息,6651,容量,1080730,512G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+162,1,物品信息,6651,容量,1081373,1T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+163,1,物品信息,6651,容量,1084310,512MB,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+164,1,物品信息,6651,容量,1084323,1G+8G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+165,1,物品信息,6651,容量,1084324,2G+8G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+166,1,物品信息,6651,容量,1084325,2G+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+167,1,物品信息,6651,容量,1084326,3G+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+168,1,物品信息,6651,容量,1084327,2G+32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+169,1,物品信息,6651,容量,1084328,3G+32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+170,1,物品信息,6651,容量,1084329,4G+32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+171,1,物品信息,6651,容量,1084330,6G+32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+172,1,物品信息,6651,容量,1084331,2G+64G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+173,1,物品信息,6651,容量,1084332,3G+64G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+174,1,物品信息,6651,容量,1084333,4G+64G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+175,1,物品信息,6651,容量,1084334,6G+64G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+176,1,物品信息,6651,容量,1084335,8G+64G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+177,1,物品信息,6651,容量,1084336,3G+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+178,1,物品信息,6651,容量,1084337,4G+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+179,1,物品信息,6651,容量,1084338,6G+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+180,1,物品信息,6651,容量,1084339,8G+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+181,1,物品信息,6651,容量,1084340,6G+256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+182,1,物品信息,6651,容量,1084341,8G+256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+183,1,物品信息,6651,容量,1084342,10G+256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+184,1,物品信息,6651,容量,1084343,6G+512G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+185,1,物品信息,6651,容量,1084344,8G+512G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+186,1,物品信息,6651,容量,1084345,12G+512G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+187,1,物品信息,6651,容量,1085067,12G+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+188,1,物品信息,6651,容量,1085068,12G+256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+189,1,物品信息,6651,容量,1085529,8G+1T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+190,1,物品信息,6651,容量,1085530,12G+1T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+191,1,物品信息,6651,容量,1087227,4+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+192,1,物品信息,6651,容量,1087743,4G+256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+193,1,物品信息,6651,容量,1087757,1G+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+194,1,物品信息,6651,容量,1087758,1G+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+195,1,物品信息,6651,容量,1087759,1G+32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+196,1,物品信息,6651,容量,1087760,6G+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+197,1,物品信息,6651,容量,1087761,10G+128G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+198,1,物品信息,6651,容量,1088540,8MB,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+199,1,物品信息,6651,容量,1088732,4G+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+200,1,物品信息,6651,容量,1093199,16G+512G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+201,1,物品信息,6651,容量,1093393,1.5G+8G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+202,1,物品信息,6651,容量,1093394,1.5G+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+203,1,物品信息,6651,容量,1093399,16G+256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+204,1,物品信息,6651,容量,1100198,4MB,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+205,1,物品信息,6651,容量,1101282,512M+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+206,1,物品信息,6651,容量,1123197,1G+13.2G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+207,1,物品信息,6651,容量,1123201,512M+2G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+208,1,物品信息,6651,容量,1123203,512M+1G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+209,1,物品信息,6651,容量,1123215,512M+8G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+210,1,物品信息,6651,容量,1123264,384M+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+211,1,物品信息,6651,容量,1123271,768M+1G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+212,1,物品信息,6651,容量,1123285,768M+8G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+213,1,物品信息,6651,容量,1123292,768M+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+214,1,物品信息,6651,容量,1123311,512M+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+215,1,物品信息,6651,容量,1123325,768M+1.5G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+216,1,物品信息,6651,容量,1123349,256M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+217,1,物品信息,6651,容量,1123357,128M+256M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+218,1,物品信息,6651,容量,1123361,128M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+219,1,物品信息,6651,容量,1123377,160M+512M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+220,1,物品信息,6651,容量,1123388,512M+512M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+221,1,物品信息,6651,容量,1123393,128M+512M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+222,1,物品信息,6651,容量,1123398,348M+512M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+223,1,物品信息,6651,容量,1123407,384K+8M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+224,1,物品信息,6651,容量,1123411,256M+8G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+225,1,物品信息,6651,容量,1123419,256M+2G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+226,1,物品信息,6651,容量,1123427,256M+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+227,1,物品信息,6651,容量,1123456,256M+512M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+228,1,物品信息,6651,容量,1123477,1G+2G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+229,1,物品信息,6651,容量,1123479,768M+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+230,1,物品信息,6651,容量,1123501,478M+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+231,1,物品信息,6651,容量,1123505,16M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+232,1,物品信息,6651,容量,1125536,368M+4G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+233,1,物品信息,6651,容量,1125547,128M+16G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+234,1,物品信息,6651,容量,1128631,20M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+235,1,物品信息,6651,容量,1128879,8G+32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+236,1,物品信息,6651,容量,1129102,1.5G+32G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+237,1,物品信息,6651,容量,1129581,10G+512G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+238,1,物品信息,6651,容量,1130050,18G+512G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+239,1,物品信息,6651,容量,1135155,256M+256M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+240,1,物品信息,6651,容量,1142489,18G+256G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+241,1,物品信息,6651,容量,1147323,768M+1.1G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+242,1,物品信息,6651,容量,1163676,18G+1T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+243,1,物品信息,6651,容量,1175408,18G+640G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+244,1,物品信息,6652,购买渠道,511435,国行,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+245,1,物品信息,6652,购买渠道,882488,港澳台,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+246,1,物品信息,6652,购买渠道,1189426,国行权益机,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+247,1,物品信息,7191,网络制式,511439,其他版本,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+248,1,物品信息,7191,网络制式,880976,移动联通版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+249,1,物品信息,7191,网络制式,882833,运营商版全网通,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+250,1,物品信息,7191,网络制式,1080698,不支持,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+251,1,物品信息,7191,网络制式,1085344,双网通,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+252,1,物品信息,7191,网络制式,1085347,移动版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+253,1,物品信息,7191,网络制式,1085351,联通版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+254,1,物品信息,7191,网络制式,1085354,电信版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+255,1,物品信息,7191,网络制式,1093559,全网通,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+256,1,物品信息,7191,网络制式,1123438,全网通版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+257,1,物品信息,7191,网络制式,1128861,其他网络,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+258,1,物品信息,7191,网络制式,1163858,移动全网通,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+259,1,物品信息,7497,保修期,882495,保修期一个月内或无保修,1,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+260,1,物品信息,7497,保修期,1085527,保修期剩余1个月以上,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+261,1,物品信息,7513,小型号,882496,其他型号,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+262,1,物品信息,7513,小型号,882497,A2298,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+263,1,物品信息,7513,小型号,882498,A2296,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+264,1,物品信息,7513,小型号,882499,A2275,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+265,1,物品信息,7513,小型号,882503,A2220,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+266,1,物品信息,7513,小型号,882504,A2161,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+267,1,物品信息,7513,小型号,882505,A2218,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+268,1,物品信息,7513,小型号,882506,A2217,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+269,1,物品信息,7513,小型号,882507,A2160,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+270,1,物品信息,7513,小型号,882508,A2215,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+271,1,物品信息,7513,小型号,882509,A2223,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+272,1,物品信息,7513,小型号,882510,A2111,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+273,1,物品信息,7513,小型号,882511,A2221,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+274,1,物品信息,7513,小型号,882512,A2104,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+275,1,物品信息,7513,小型号,882513,A2103,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+276,1,物品信息,7513,小型号,882514,A2101,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+277,1,物品信息,7513,小型号,882515,A2102,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+278,1,物品信息,7513,小型号,882516,A1921,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+279,1,物品信息,7513,小型号,882517,A2100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+280,1,物品信息,7513,小型号,882518,A2099,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+281,1,物品信息,7513,小型号,882519,A2097,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+282,1,物品信息,7513,小型号,882520,A2098,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+283,1,物品信息,7513,小型号,882521,A1920,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+284,1,物品信息,7513,小型号,882522,A2108,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+285,1,物品信息,7513,小型号,882523,A2107,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+286,1,物品信息,7513,小型号,882524,A1984,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+287,1,物品信息,7513,小型号,882525,A2106,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+288,1,物品信息,7513,小型号,882526,A2105,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+289,1,物品信息,7513,小型号,882527,A1865,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+290,1,物品信息,7513,小型号,882528,A1903,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+291,1,物品信息,7513,小型号,882529,A1901,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+292,1,物品信息,7513,小型号,882530,A1902,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+293,1,物品信息,7513,小型号,882531,A1864,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+294,1,物品信息,7513,小型号,882532,A1899,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+295,1,物品信息,7513,小型号,882533,A1897,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+296,1,物品信息,7513,小型号,882534,A1898,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+297,1,物品信息,7513,小型号,882535,A1863,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+298,1,物品信息,7513,小型号,882536,A1907,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+299,1,物品信息,7513,小型号,882537,A1905,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+300,1,物品信息,7513,小型号,882538,A1906,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+301,1,物品信息,7513,小型号,882539,A1661,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+302,1,物品信息,7513,小型号,882540,A1786,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+303,1,物品信息,7513,小型号,882541,A1784,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+304,1,物品信息,7513,小型号,882542,A1785,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+305,1,物品信息,7513,小型号,882543,A1660,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+306,1,物品信息,7513,小型号,882544,A1780,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+307,1,物品信息,7513,小型号,882545,A1778,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+308,1,物品信息,7513,小型号,882546,A1779,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+309,1,物品信息,7513,小型号,882547,A1699,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+310,1,物品信息,7513,小型号,882548,A1634,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+311,1,物品信息,7513,小型号,882549,A1687,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+312,1,物品信息,7513,小型号,882550,A1700,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+313,1,物品信息,7513,小型号,882551,A1691,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+314,1,物品信息,7513,小型号,882552,A1688,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+315,1,物品信息,7513,小型号,882553,A1633,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+316,1,物品信息,7513,小型号,882554,A1524,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+317,1,物品信息,7513,小型号,882555,A1522,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+318,1,物品信息,7513,小型号,882556,A1593,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+319,1,物品信息,7513,小型号,882557,A1586,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+320,1,物品信息,7513,小型号,882558,A1549,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+321,1,物品信息,7513,小型号,882559,A1589,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+322,1,物品信息,7513,小型号,882560,A1526,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+323,1,物品信息,7513,小型号,882561,A1529,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+324,1,物品信息,7513,小型号,882562,A1429,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+325,1,物品信息,7513,小型号,882564,CRR-UL00,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+326,1,物品信息,7513,小型号,882565,CRR-CL00,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+327,1,物品信息,7513,小型号,882566,CRR-TL00,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+328,1,物品信息,7513,小型号,882567,CRR-UL20,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+329,1,物品信息,7513,小型号,882568,CRR-CL20,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+330,1,物品信息,7513,小型号,882577,Y81S,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+331,1,物品信息,7513,小型号,882578,Y81,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+332,1,物品信息,7513,小型号,882581,V3M A,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+333,1,物品信息,7513,小型号,882584,Y28F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+334,1,物品信息,7513,小型号,882585,Y28V,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+335,1,物品信息,7513,小型号,882586,Y28L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+336,1,物品信息,7513,小型号,882587,X710F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+337,1,物品信息,7513,小型号,882588,X710L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+338,1,物品信息,7513,小型号,882593,X9079,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+339,1,物品信息,7513,小型号,882594,A31t,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+340,1,物品信息,7513,小型号,882595,A31c,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+341,1,物品信息,7513,小型号,882596,A31u,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+342,1,物品信息,7513,小型号,882597,R8106,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+343,1,物品信息,7513,小型号,882598,R8109,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+344,1,物品信息,7513,小型号,882599,R8107,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+345,1,物品信息,7513,小型号,882600,R8007,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+346,1,物品信息,7513,小型号,882601,R8000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+347,1,物品信息,7513,小型号,882602,X9007,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+348,1,物品信息,7513,小型号,882603,X9000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+349,1,物品信息,7513,小型号,882604,X9077,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+350,1,物品信息,7513,小型号,882605,X9070,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+351,1,物品信息,7513,小型号,882606,顶配版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+352,1,物品信息,7513,小型号,882610,G9860,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+353,1,物品信息,7513,小型号,882624,A7160,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+354,1,物品信息,7513,小型号,882629,SM-M3070,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+355,1,物品信息,7513,小型号,882630,SM-A7070,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+356,1,物品信息,7513,小型号,882631,N9750,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+357,1,物品信息,7513,小型号,882634,SM-A9080,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+358,1,物品信息,7513,小型号,882648,SM-A9200,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+359,1,物品信息,7513,小型号,882650,A530F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+360,1,物品信息,7513,小型号,882651,A530DS,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+361,1,物品信息,7513,小型号,882652,SM-J3308,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+362,1,物品信息,7513,小型号,882653,SM-J3300,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+363,1,物品信息,7513,小型号,882658,A720F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+364,1,物品信息,7513,小型号,882659,A720DS,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+365,1,物品信息,7513,小型号,882660,A520F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+366,1,物品信息,7513,小型号,882667,G5510,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+367,1,物品信息,7513,小型号,882672,J3109,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+368,1,物品信息,7513,小型号,882673,J7008,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+369,1,物品信息,7513,小型号,882674,E7000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+370,1,物品信息,7513,小型号,882675,E7009,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+371,1,物品信息,7513,小型号,882676,A3000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+372,1,物品信息,7513,小型号,882677,A3009,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+373,1,物品信息,7513,小型号,882678,A3100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+374,1,物品信息,7513,小型号,882679,G7509,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+375,1,物品信息,7513,小型号,882680,G7508Q,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+376,1,物品信息,7513,小型号,882693,I9500,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+377,1,物品信息,7513,小型号,882694,I9508,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+378,1,物品信息,7513,小型号,882695,I9505,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+379,1,物品信息,7513,小型号,882696,I959,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+380,1,物品信息,7513,小型号,882697,I9507v,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+381,1,物品信息,7513,小型号,882698,I9508v,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+382,1,物品信息,7513,小型号,882699,R970,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+383,1,物品信息,7513,小型号,882714,I8552,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+384,1,物品信息,7513,小型号,882715,I869,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+385,1,物品信息,7513,小型号,882716,I8558,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+386,1,物品信息,7513,小型号,882717,I8550,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+387,1,物品信息,7513,小型号,882720,N7100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+388,1,物品信息,7513,小型号,882721,N719,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+389,1,物品信息,7513,小型号,882722,N7108D,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+390,1,物品信息,7513,小型号,882723,N7108,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+391,1,物品信息,7513,小型号,882724,N7102,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+392,1,物品信息,7513,小型号,882725,N7105,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+393,1,物品信息,7513,小型号,882726,I9300,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+394,1,物品信息,7513,小型号,882727,I9308,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+395,1,物品信息,7513,小型号,882728,I939,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+396,1,物品信息,7513,小型号,882730,I9305,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+397,1,物品信息,7513,小型号,882734,I9220,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+398,1,物品信息,7513,小型号,882735,I9228,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+399,1,物品信息,7513,小型号,882736,I889,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+400,1,物品信息,7513,小型号,882737,I717,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+401,1,物品信息,7513,小型号,882738,I9100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+402,1,物品信息,7513,小型号,882739,I9108,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+403,1,物品信息,7513,小型号,882741,I9101,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+404,1,物品信息,7513,小型号,882743,G3608,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+405,1,物品信息,7513,小型号,882744,G3609,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+406,1,物品信息,7513,小型号,882745,G3606,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+407,1,物品信息,7513,小型号,882746,x528/x529,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+408,1,物品信息,7513,小型号,882747,x620,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+409,1,物品信息,7513,小型号,882748,x520,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+410,1,物品信息,7513,小型号,882749,X526,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+411,1,物品信息,7513,小型号,882750,GN5007,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+412,1,物品信息,7513,小型号,882751,GN5007L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+413,1,物品信息,7513,小型号,882752,M7,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+414,1,物品信息,7513,小型号,882753,M7L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+415,1,物品信息,7513,小型号,882754,S10BL,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+416,1,物品信息,7513,小型号,882755,S10B,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+417,1,物品信息,7513,小型号,882756,F100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+418,1,物品信息,7513,小型号,882757,F100S,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+419,1,物品信息,7513,小型号,882758,F100B,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+420,1,物品信息,7513,小型号,882759,GN9010L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+421,1,物品信息,7513,小型号,882761,GN9010,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+422,1,物品信息,7513,小型号,882767,GN3003,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+423,1,物品信息,7513,小型号,882768,GN3003L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+424,1,物品信息,7513,小型号,882769,GN5001L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+425,1,物品信息,7513,小型号,882770,GN5001S,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+426,1,物品信息,7513,小型号,882771,GN5001,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+427,1,物品信息,7513,小型号,882772,G8341,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+428,1,物品信息,7513,小型号,882773,G8342,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+429,1,物品信息,7513,小型号,882774,601SO,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+430,1,物品信息,7513,小型号,882775,F8332,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+431,1,物品信息,7513,小型号,882776,F8331,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+432,1,物品信息,7513,小型号,882780,E6653,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+433,1,物品信息,7513,小型号,882781,E6603,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+434,1,物品信息,7513,小型号,882782,E6633,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+435,1,物品信息,7513,小型号,882783,D6503,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+436,1,物品信息,7513,小型号,882784,SO-03,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+437,1,物品信息,7513,小型号,882785,L50u,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+438,1,物品信息,7513,小型号,882788,NX510J,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+439,1,物品信息,7513,小型号,882789,NX512J,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+440,1,物品信息,7513,小型号,882790,NX518J,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+441,1,物品信息,7513,小型号,882801,L5,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+442,1,物品信息,7513,小型号,882802,L5M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+443,1,物品信息,7513,小型号,882803,Hello Kitty限量版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+444,1,物品信息,7513,小型号,882804,美少女战士限量版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+445,1,物品信息,7513,小型号,882805,哆啦A梦限量版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+446,1,物品信息,7513,小型号,882806,七龙珠限量版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+447,1,物品信息,7513,小型号,882807,7P,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+448,1,物品信息,7513,小型号,882808,7S,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+449,1,物品信息,7513,小型号,882809,H818,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+450,1,物品信息,7513,小型号,882810,H819,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+451,1,物品信息,7513,小型号,882811,H815,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+452,1,物品信息,7513,小型号,882812,D724,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+453,1,物品信息,7513,小型号,882813,D729,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+454,1,物品信息,7513,小型号,882814,S720T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+455,1,物品信息,7513,小型号,882815,S725T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+456,1,物品信息,7513,小型号,882816,S720,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+457,1,物品信息,7513,小型号,882817,P728M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+458,1,物品信息,7513,小型号,882818,N5206,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+459,1,物品信息,7513,小型号,882819,N5207,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+460,1,物品信息,7513,小型号,882820,N5209,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+461,1,物品信息,7513,小型号,882821,R7005,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+462,1,物品信息,7513,小型号,882822,R7007,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+463,1,物品信息,7513,小型号,882823,I9150,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+464,1,物品信息,7513,小型号,882824,I9152,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+465,1,物品信息,7513,小型号,882825,I9158,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+466,1,物品信息,7513,小型号,882826,P709,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+467,1,物品信息,7513,小型号,882827,I9158P,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+468,1,物品信息,7513,小型号,882828,G3589w,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+469,1,物品信息,7513,小型号,882829,G3586V,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+470,1,物品信息,7513,小型号,882830,826w,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+471,1,物品信息,7513,小型号,882831,826t,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+472,1,物品信息,7513,小型号,882832,826d,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+473,1,物品信息,7513,小型号,883715,G0215D,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+474,1,物品信息,7513,小型号,1084031,V3,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+475,1,物品信息,7513,小型号,1085360,A1516,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+476,1,物品信息,7513,小型号,1085361,A1532,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+477,1,物品信息,7513,小型号,1085362,A1530,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+478,1,物品信息,7513,小型号,1085363,A1528,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+479,1,物品信息,7513,小型号,1085364,A1533,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+480,1,物品信息,7513,小型号,1085365,A1518,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+481,1,物品信息,7513,小型号,1085366,A1723,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+482,1,物品信息,7513,小型号,1085367,A1724,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+483,1,物品信息,7513,小型号,1085368,A1662,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+484,1,物品信息,7513,小型号,1085377,A79,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+485,1,物品信息,7513,小型号,1085378,A79t,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+486,1,物品信息,7513,小型号,1085379,A79k,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+487,1,物品信息,7513,小型号,1085380,A79kt,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+488,1,物品信息,7513,小型号,1085381,R11,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+489,1,物品信息,7513,小型号,1085382,R11t,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+490,1,物品信息,7513,小型号,1085388,R11st,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+491,1,物品信息,7513,小型号,1085395,R9t,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+492,1,物品信息,7513,小型号,1085396,R9m,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+493,1,物品信息,7513,小型号,1085397,R9tm,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+494,1,物品信息,7513,小型号,1085398,R9km,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+495,1,物品信息,7513,小型号,1085399,R9 Plustm,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+496,1,物品信息,7513,小型号,1085400,R9 Plusm,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+497,1,物品信息,7513,小型号,1085401,R9 Plust,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+498,1,物品信息,7513,小型号,1085402,R9s,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+499,1,物品信息,7513,小型号,1085403,R9st,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+500,1,物品信息,7513,小型号,1085404,OPPO R9sk,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+501,1,物品信息,7513,小型号,1085405,R9skt,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+502,1,物品信息,7513,小型号,1085408,V3L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+503,1,物品信息,7513,小型号,1085416,X21,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+504,1,物品信息,7513,小型号,1085417,X21A,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+505,1,物品信息,7513,小型号,1085428,X5M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+506,1,物品信息,7513,小型号,1085429,X5F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+507,1,物品信息,7513,小型号,1085430,X5V,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+508,1,物品信息,7513,小型号,1085431,X5 L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+509,1,物品信息,7513,小型号,1085444,X9,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+510,1,物品信息,7513,小型号,1085445,X9L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+511,1,物品信息,7513,小型号,1085450,Y66,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+512,1,物品信息,7513,小型号,1085453,Y66L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+513,1,物品信息,7513,小型号,1085457,A5000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+514,1,物品信息,7513,小型号,1085458,A5009,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+515,1,物品信息,7513,小型号,1085459,A5100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+516,1,物品信息,7513,小型号,1085460,A5108,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+517,1,物品信息,7513,小型号,1085461,A7000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+518,1,物品信息,7513,小型号,1085462,A7009,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+519,1,物品信息,7513,小型号,1085463,A7100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+520,1,物品信息,7513,小型号,1085464,A7108,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+521,1,物品信息,7513,小型号,1085465,A9100,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+522,1,物品信息,7513,小型号,1085466,A9000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+523,1,物品信息,7513,小型号,1085480,J5008,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+524,1,物品信息,7513,小型号,1085496,L50t,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+525,1,物品信息,7513,小型号,1085497,L50w,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+526,1,物品信息,7513,小型号,1085500,E6883,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+527,1,物品信息,7513,小型号,1085501,E6683,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+528,1,物品信息,7513,小型号,1085502,S10L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+529,1,物品信息,7513,小型号,1085503,S10,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+530,1,物品信息,7513,小型号,1085509,S10CL,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+531,1,物品信息,7513,小型号,1085510,S10C,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+532,1,物品信息,7513,小型号,1085511,标准版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+533,1,物品信息,7513,小型号,1091325,D728,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+534,1,物品信息,7513,小型号,1093032,G5500,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+535,1,物品信息,7513,小型号,1111050,A1690,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+536,1,物品信息,7513,小型号,1111759,A1456,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+537,1,物品信息,7513,小型号,1120168,S2005,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+538,1,物品信息,7513,小型号,1120169,G720C,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+539,1,物品信息,7513,小型号,1120170,G720T,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+540,1,物品信息,7513,小型号,1120171,S2010,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+541,1,物品信息,7513,小型号,1120759,海信 E76mini,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+542,1,物品信息,7513,小型号,1121050,A2404,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+543,1,物品信息,7513,小型号,1121051,A2400,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+544,1,物品信息,7513,小型号,1121052,A2408,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+545,1,物品信息,7513,小型号,1121053,A2412,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+546,1,物品信息,7513,小型号,1121067,A2172,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+547,1,物品信息,7513,小型号,1121073,A2402,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+548,1,物品信息,7513,小型号,1121074,A2403,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+549,1,物品信息,7513,小型号,1121075,A2176,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+550,1,物品信息,7513,小型号,1121076,A2398,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+551,1,物品信息,7513,小型号,1121077,A2399,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+552,1,物品信息,7513,小型号,1121078,A2341,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+553,1,物品信息,7513,小型号,1121079,A2406,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+554,1,物品信息,7513,小型号,1121080,A2407,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+555,1,物品信息,7513,小型号,1121081,A2342,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+556,1,物品信息,7513,小型号,1121082,A2410,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+557,1,物品信息,7513,小型号,1121083,A2411,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+558,1,物品信息,7513,小型号,1123174,U9180,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+559,1,物品信息,7513,小型号,1123175,V9180,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+560,1,物品信息,7513,小型号,1123176,N9180,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+561,1,物品信息,7513,小型号,1123259,SM-A217N,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+562,1,物品信息,7513,小型号,1123261,SM-A217M,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+563,1,物品信息,7513,小型号,1123273,SM-A217F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+564,1,物品信息,7513,小型号,1123278,SM-M215F/DS,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+565,1,物品信息,7513,小型号,1123313,SM-M215F/DSN,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+566,1,物品信息,7513,小型号,1123319,SM-A516N,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+567,1,物品信息,7513,小型号,1123354,SM-G781U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+568,1,物品信息,7513,小型号,1123355,SM-G781V,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+569,1,物品信息,7513,小型号,1124406,SM-G980F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+570,1,物品信息,7513,小型号,1125607,YQ601,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+571,1,物品信息,7513,小型号,1125608,YQ603,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+572,1,物品信息,7513,小型号,1125609,YQ605,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+573,1,物品信息,7513,小型号,1125610,YQ607,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+574,1,物品信息,7513,小型号,1125806,女神版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+575,1,物品信息,7513,小型号,1125807,特别版,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+576,1,物品信息,7513,小型号,1125933,Y22L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+577,1,物品信息,7513,小型号,1125934,Y22iL,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+578,1,物品信息,7513,小型号,1125935,Y622,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+579,1,物品信息,7513,小型号,1126222,DLI-AL10,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+580,1,物品信息,7513,小型号,1126487,X625,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+581,1,物品信息,7513,小型号,1126547,SM-G610K,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+582,1,物品信息,7513,小型号,1126937,R9sk,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+583,1,物品信息,7513,小型号,1127179,R9 Plusm A,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+584,1,物品信息,7513,小型号,1127201,R9 Plus,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+585,1,物品信息,7513,小型号,1127203,R9 Plustm A,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+586,1,物品信息,7513,小型号,1127273,G3502,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+587,1,物品信息,7513,小型号,1127274,G3508,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+588,1,物品信息,7513,小型号,1127275,G3502U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+589,1,物品信息,7513,小型号,1127276,G3509i,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+590,1,物品信息,7513,小型号,1127277,G3509,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+591,1,物品信息,7513,小型号,1127278,G3508J,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+592,1,物品信息,7513,小型号,1127279,G3508i,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+593,1,物品信息,7513,小型号,1127280,G3502c,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+594,1,物品信息,7513,小型号,1127281,G3502i,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+595,1,物品信息,7513,小型号,1129103,DLI-TL20,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+596,1,物品信息,7513,小型号,1129126,SM-G7810,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+597,1,物品信息,7513,小型号,1132756,R9 Plust A,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+598,1,物品信息,7513,小型号,1134775,SM-W2021,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+599,1,物品信息,7513,小型号,1135210,SM-J330L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+600,1,物品信息,7513,小型号,1141836,SM-G9960,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+601,1,物品信息,7513,小型号,1143636,SM-F916N,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+602,1,物品信息,7513,小型号,1143637,SM-F916U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+603,1,物品信息,7513,小型号,1143662,SM-G996U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+604,1,物品信息,7513,小型号,1145169,SM-A716U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+605,1,物品信息,7513,小型号,1145170,SM-A516U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+606,1,物品信息,7513,小型号,1146343,SM-G9980,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+607,1,物品信息,7513,小型号,1146525,M2002J9E,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+608,1,物品信息,7513,小型号,1146913,SM-F700U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+609,1,物品信息,7513,小型号,1147052,SM-F916B,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+610,1,物品信息,7513,小型号,1147319,SM-F9160,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+611,1,物品信息,7513,小型号,1147469,SM-F700N,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+612,1,物品信息,7513,小型号,1149158,SM-F7000,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+613,1,物品信息,7513,小型号,1149181,SM-A310F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+614,1,物品信息,7513,小型号,1154194,SM-A7160,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+615,1,物品信息,7513,小型号,1158506,A2482,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+616,1,物品信息,7513,小型号,1158507,A2631,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+617,1,物品信息,7513,小型号,1158508,A2633,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+618,1,物品信息,7513,小型号,1158509,A2634,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+619,1,物品信息,7513,小型号,1158510,A2635,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+620,1,物品信息,7513,小型号,1158511,A2630,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+621,1,物品信息,7513,小型号,1158512,A2628,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+622,1,物品信息,7513,小型号,1158513,A2629,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+623,1,物品信息,7513,小型号,1158514,A2626,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+624,1,物品信息,7513,小型号,1158515,A2481,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+625,1,物品信息,7513,小型号,1158516,A2640,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+626,1,物品信息,7513,小型号,1158517,A2645,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+627,1,物品信息,7513,小型号,1158518,A2644,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+628,1,物品信息,7513,小型号,1158519,A2639,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+629,1,物品信息,7513,小型号,1158520,A2643,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+630,1,物品信息,7513,小型号,1158521,A2638,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+631,1,物品信息,7513,小型号,1158522,A2641,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+632,1,物品信息,7513,小型号,1158523,A2636,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+633,1,物品信息,7513,小型号,1158524,A2484,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+634,1,物品信息,7513,小型号,1158525,A2483,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+635,1,物品信息,7513,小型号,1159497,SM-F700F,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+636,1,物品信息,7513,小型号,1159721,SM-A5160,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+637,1,物品信息,7513,小型号,1162677,SM-F916U1,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+638,1,物品信息,7513,小型号,1164196,SM-A315G,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+639,1,物品信息,7513,小型号,1174707,SM-S9060,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+640,1,物品信息,7513,小型号,1175310,SM-A025A,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+641,1,物品信息,7513,小型号,1180679,A2785,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+642,1,物品信息,7513,小型号,1181798,A2782,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+643,1,物品信息,7513,小型号,1182574,SM-G996U1,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+644,1,物品信息,7513,小型号,1183136,SM-A715W,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+645,1,物品信息,7513,小型号,1185064,SM-S906U,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+646,1,物品信息,7513,小型号,1187091,DLI-AL00,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+647,1,物品信息,7513,小型号,1187092,DLI-L22,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+648,1,物品信息,7513,小型号,1187093,DLI-L42,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+649,1,物品信息,7513,小型号,1187094,DLI-TL10,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+650,1,物品信息,7513,小型号,1187102,A5160,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+651,1,物品信息,7513,小型号,1187103,G610L,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+652,1,物品信息,7513,小型号,1187104,G610S,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+653,1,物品信息,7513,小型号,1187106,SM-A310N0,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+654,1,物品信息,7513,小型号,1187598,A2884,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+655,1,物品信息,7513,小型号,1187751,A2896,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+656,1,物品信息,7513,小型号,1187921,A2882,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+657,1,物品信息,7513,小型号,1187922,A2649,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+658,1,物品信息,7513,小型号,1187923,A2881,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+659,1,物品信息,7513,小型号,1187924,A2892,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+660,1,物品信息,7513,小型号,1187925,A2890,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+661,1,物品信息,7513,小型号,1187926,A2650,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+662,1,物品信息,7513,小型号,1187927,A2889,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+663,1,物品信息,7513,小型号,1187928,A2894,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+664,1,物品信息,7513,小型号,1187929,A2651,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+665,1,物品信息,7513,小型号,1187930,A2893,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+666,1,物品信息,7513,小型号,1187931,A2632,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+667,1,物品信息,7513,小型号,1187932,A2885,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+668,1,物品信息,7513,小型号,1187933,A2886,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+669,1,物品信息,7513,小型号,1187934,A2888,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+670,1,物品信息,7513,小型号,1187935,A2887,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+671,1,物品信息,7513,小型号,1190495,SCG07,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+672,1,物品信息,7513,小型号,1190649,SM-S906W,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17
+673,1,物品信息,7513,小型号,1191402,SM-S906E,0,0,7/8/2023 14:08:17,7/8/2023 14:08:17

Разница между файлами не показана из-за своего большого размера
+ 5430 - 0
tools/t_chxs_machine.csv