其他 #453
Updated by Xihua Fan about 1 month ago
*Background* # 记录在开发OTS4.0过程中需要讨论的特殊处理 *%{color:red}Task *Task Details (Optimizations) To-Dos%* %{color:red}To-Do%* * *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打开很慢并且有跳闪的感觉。 SQL优化(List速度较慢,需要排查慢查询的原因) 2.2 v3的历史订单独立表(因为不是活跃的数据)ots_order_product_history(数据大的extra info, legacy info 等都可以独立出去) 另外:legacy_info字段text → VARCHAR (512) 我猜这里数据不再有变化。SQL查询如下: <pre> -- 如果 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 </pre> * *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) * *9. UI 优化(优先级最低)* 9.1 *手机端order list中长按功能:* 科参考一些"App":https://redmine.easydingzhi.com/attachments/241 的做法,长按后突出显示当前选中内容, 在当前行的上方、下方显示可操作的下拉列表(取代当前简易版的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相关的两个问题: <pre> - 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 </pre> *v4 coding standard:* # Git提交 #xxx(redmine number): xxx(redmine title) - xxx(任意:补充内容) # 代码规范 2.1: 结构:Public -> Protected -> Private 2.2: 其他代码规范同SBX # 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 # 前台代码 twig, js, css (js, css尽量写在单独的css文件中) # 后台代码 MVCL (L:en,cn) # 注释 ## 类名: <pre> /** * xxx * * @copyright RedBlue-OTS 2024 * @version v4 * */ </pre> ## 函数名:参数类型 + 返回值类型 <pre> /** * xxx * * @param xxx $xxx * @param xxx $xxx * @return xxx */ </pre> *Output* * Report and Solution *Others*