其他 #453
Updated by Xihua Fan about 2 months ago
*Background*
# 记录在开发OTS4.0过程中需要讨论的特殊处理
*Task Details (Optimizations) %{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速度较慢,需要排查慢查询的原因)
2.2 v3 legacy_info的优化 ots_order_product.legacy_info → ots_order_product_legacy [独立v3 legacy info Table]
另外: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*