Project

General

Profile

Actions

其他 #453

open
JZ JZ

v4.0: Optimizations + Remaining Tasks

其他 #453: v4.0: Optimizations + Remaining Tasks

Added by Junyi Zhang about 1 year ago. Updated 8 days ago.

Status:
进行中
Priority:
普通
Assignee:
Target version:
IT: Easytryck (Sweden) - v4.0
Start date:
02/07/2025
Due date:
12/31/2026 (Due in about 10 months)
% Done:

90%

Estimated time:
100.00 h

Description

Background
  1. 记录在开发OTS4.0过程中需要讨论的特殊处理
Task Details (Optimizations) To-Dos
  • 1. 不同设备的差异
    1.1 IOS:
    - Order list will scroll in two directions.(IOS较为明显)
    - Current filter中的setup new filter未focus到filter name上(只有第一次加载My-filter时未focus到filter name)。

    1.2 Android:
    - Edge中的icon默认实心(fill:1)。Chrome没有此类问题。

  • 2. Order List / Detail的优化
    2.1 SQL优化(List速度较慢,需要排查慢查询的原因),Detail打开很慢并且有跳闪的感觉。
    2.2 v3的历史订单独立表(因为不是活跃的数据)ots_order_product_history(数据大的extra info, legacy info 等都可以独立出去)
    另外:legacy_info字段text → VARCHAR (512) 我猜这里数据不再有变化。SQL查询如下:
               -- 如果 legacy_info 内容“短且可控”,TEXT → VARCHAR 不但能省空间,还更快、更好索引、更友好
               SELECT
                 MAX(CHAR_LENGTH(legacy_info)) AS max_len,
                 AVG(CHAR_LENGTH(legacy_info)) AS avg_len,
                 SUM(CHAR_LENGTH(legacy_info) > 512) AS over_512_cnt
               FROM ots_order_product;
    
               -- 结果
               -- max_len = 407
               -- avg_len = 299.9318
               -- over_512_cnt = 0
             
  • 3. 移动端打印方案优化 #491
    3.1 打印代理服务器polling(3s轮询是否有打印任务) -> 阻塞式消息订阅(Redis Stream)
  • 4. 页面加载优化
    4.1 DONE Image的懒加载机制(loading="lazy" decoding="async")
    4.2 To-do prefetch + prerender + speculation rules等等
    4.3 To-do 最小化加载css,js, 比如:html2canvas.min.js 只在mobile中加载,并统一添加版本号(可以cache)
  • 5. 所有的临时目录都有清理机制:比如temp目录读写的时候,删除48小时前的文件和文件夹
    举例:/efs/ots4.0/storage/upload/order/2026/temp
  • 9. UI 优化(优先级最低)
    9.1 手机端order list中长按功能: 科参考一些App 的做法,长按后突出显示当前选中内容,
    在当前行的上方、下方显示可操作的下拉列表(取代当前简易版的Popover)。 需调研web端是否能够实现。
Task Details (Optimizations) Done
  • 1. 添加DOM对象的时候,先隐藏然后复制
    1.1 web/catalog/model/account/order_filters_v3.php row 78
    1.2 web/catalog/model/account/order_v3.php row 233

    Niko:
    1. 避免DOM元素提前加载,保持PHP model数据层数据整洁。修改原来JS clone新增元素的方式为JS动态创建。
    2. 动态加载元素的语言包:各自定义在各自的twig中,共通的则写在footer.twig中

  • 2. 不同设备的差异
    2.1 IOS:
    - Date类型在IOS中的显示问题
    1)默认水平居中(期待值:和Android一样,左对齐)
    2)默认垂直偏上(期待值:和Android一样,居中对齐)
    3)点击Reset, 期待为清空, 当前恢复为初始值日期
  • 3. Session机制: file -> redis
    3.1 error.log session相关的两个问题:
         - PHP Notice:  Error: session file size is 0 : /var/www/html/storage/session/sess_ed565225ec4097c33086dd03eb in /var/www/html/ots4.0/system/library/session/file.php on line 28
         - PHP Unknown:  Automatic conversion of false to array is deprecated in /var/www/html/ots4.0/catalog/controller/startup/startup.php on line 94
         
v4 coding standard:
  1. Git提交
    #xxx(redmine number): xxx(redmine title) - xxx(任意:补充内容)
      
  2. 代码规范
    2.1: 结构:Public -> Protected -> Private
    2.2: 其他代码规范同SBX
      
  3. MVCL的v3/v4物理分割
    3.1: v3/v4的代码分为两个文件,比如: order.php, order_v3.php
    3.2: system也分为两个文件,暂时只有一个user_v3
    - Note: front的$this->user在v4中会替换为$this->customer, 即v4中需要清除$this->user
    3.3: 代码中,区分v3/v4的调用,比如:new User_V3
     
  4. 前台代码
    twig, js, css (js, css尽量写在单独的css文件中)
     
  5. 后台代码
    MVCL (L:en,cn)
     
  6. 注释
    1. 类名:
      /**
       * xxx
       *
       * @copyright RedBlue-OTS 2024
       * @version v4
       *
       */
      
    2. 函数名:参数类型 + 返回值类型
          /**
           * xxx
           *
           * @param  xxx $xxx
           * @param  xxx $xxx
           * @return xxx
           */
      
Output
  • Report and Solution

Others


Files

长按当前行.png (781 KB) 长按当前行.png Zhongbao Ye, 06/12/2025 06:14 AM
长按当前行.png
Actions

Also available in: PDF Atom