laoyang
|
ecf121772f
|
v24 第 12 批:5 条(删除按钮位置/日期控件三修/日历跳转/节气节日/财务图)
用户 2026-10-05 的 5 条。第 11 批交付后用户追问"确定这些需求都做完了?"—— 没有,
这 5 条是进一步要求。实现过程中查出 4 个真 bug。
#1 详情页删除按钮紧贴「开通账号」
上一版放在页面最下方独立区块(danger-zone),用户要「就放在开通账号按钮下面,
紧挨着,长度大小和开通账号一样,颜色改成红色」。→ 搬进「登录账号」卡片内
(.del-inline + 细分隔线 + .btn-block-lg)。
线上几何实测:同一张卡片、左边缘对齐 255==255、宽度一致 990==990、红色 rgb(192,83,63)。
#2 日期控件三修(两个真 bug + 一次闪烁)
· 灰底:Semi **外层** .semi-datepicker-input 自带 rgba(46,50,56,.05)、高 32px;
内层 wrapper 白底 40px → 灰的露在外面。实测「灰底元素」= 1 个 → 修后 0 个。
· 不垂直居中:外层 32px < 内层 40px,实测 gapTop=1 / **gapBottom=17**(文字贴顶)
→ 修后 gapTop=1 / gapBottom=1。
· 闪烁:实测首 **200ms** 原生输入框可见(要等 3.4MB React 解析)。
用 no-js/js 二态:<html class="no-js"> + head 内联脚本立刻换 js +
CSS `html.js .dt-input:not(.is-semi) .dt-native { visibility:hidden }`
(配同高骨架 ::after 防布局跳动)。实测「出现过原生可见」= False。
#3 日历跳转保留视图 + 下拉日历
原来写死 view=day(在月视图点跳转会被踢进日视图)。→ 表单带当前 $view(月还带 ym);
选择器从"居中弹窗"改成**按钮下方下拉** .cal-jump-drop。
实测:月视图跳 8/15 仍在月视图且是 8 月;周视图跳 8/15 → 落 8/10 那一周;
日视图跳 8/15 → 显示 8/15。
#4 传统节日 + 二十四节气两个系统本(Schema v18)
Holiday::SOLAR_TERMS(24 项 C 常数近似公式 + 例外表)+ traditionalRange
(农历推导;除夕用"次日是否正月初一"反推,写死腊月廿九会有一半年份错)。
实测 2026:节气 24 条全对(清明 4/5、冬至 12/22);春节 2/17、除夕 2/16、中秋 9/25。
⚠️ ENUM 必须显式 ALTER(对已存在的表不生效)——同一坑第二次踩,VERSION 17→18。
#5 财务(一个真 bug + 一个假起点 + 一个真 bug)
· chart_line 读 `cents` 而 timeline() 返回 `net` → 键名不匹配,**总资产图每点读成 0**
(正是用户说的"图上是 0")。修:兼容 cents ?? net ?? asset。
实测 timeline net=800000(8000 元),线上 polyline 有真实起伏。
· 去掉 timeline 人为插的"前一天=0"假起点(用户:"总资产不应该是 0,
应该是所有账目创建时的金额的总数")。
· ppSetSelected 只用 document.querySelector 按名字找,而财务页有**两个** person_id
组件(「记一笔」+ 修改弹框)→ 永远灌到第一个。加 root 参数、调用方传 panel。
验证:e2e 786/0、交互 92/0、升级 129/0(+3 条 v18 断言)、batch_e 91/0、batch10 46/0、
batch9 38/0、picker_unify 28/0、picker_lazy 11/0、crop 17/0、formbloat 9/0、semi 27/0、
mobile 688/0、drag 5/0、geom 5/5;第 12 批专项:财务 7/0、日历 19/0。
部署静态断言新增 5 组(含反向验证:注入回退 → FAIL=1)。
线上自检 19/19;线上真实账号验收 **30/0**(含真实浏览器几何量删除按钮位置)。
|
2026-10-04 19:43:00 +08:00 |
|
laoyang
|
b2ca4f336e
|
v24 第 10 批:名册真性能(根因是每卡内联表单)等九条
- #6 名册线上真实数据(1184 人)卡顿:根因是**每张卡片内联一整份分组弹层**——
全页 2369 个 form / 27234 个 input / 22496 个 radio / 98100 DOM 节点,
密码管理器(Bitwarden 等)逐个扫描 form 把主线程占死(用户报的就是这个冲突)。
改为卡片只带 data 属性 + 全页**唯一一份**共享浮层 #rosterMenus。
实测:form 2369→3、input 27234→25、DOM 98100→17659、解压 7694→2306 KB、
长任务 1/52ms → 0。新增哨兵 _fb_formbloat_check.py(含反向验证)。
- #5 日视图翻页失效:day_columns() 无条件吸到周一,天视图只有 1 列 → 永远显示那周周一。
改为仅 span>1 时吸附(周视图行为不变)。
- #2 财务「欠款」类别(负债);并修一个真 bug:负债填负数会让净资产**反向变大**。
写入口 normalizeAmount 归一化 + summary/timeline 侧 abs 防御 + Schema v17 纠正老数据。
- #3 账目行「盘点」「修改」两个并列按钮(各自就地弹面板);图移到账目上方,
总金额图跨整行 + 每个账目一条线 + 类别筛选条;charts() 改为覆盖全部账目。
- #4 日程新增「农历」「节假日」两本不可删除只读日历(app/Holiday.php):
两级自动更新 —— 内置规则(公历固定 + 清明节气 + 农历节日)保证断网也有;
官方 JSON 镜像自动抓取补齐调休。抓取**不在渲染路径联网**(响应后 fastcgi_finish_request
+ 频率闸门),缓存落 storage/cache。仅派生本不可写日程。
- #6 日程页设置按钮前加「跳到某一天」(选中即跳)。
- #7 起止范围改用一个 Semi dateTimeRange 控件(观影/旅程/节点/日程共 4 处);
新增 window.fbSetDT / fbUpgradeRange;修范围重挂(React 非受控组件须 unmount 再 createRoot)
与范围里 required 未摘除导致表单无法提交两个真实问题。
验证:e2e 786/0、batch10 44/0、batch9 38/0、batch_e 91/0、upgrade 126/0、picker 28/0、
semi_integrate 27/0、formbloat 5/0(+反向 3 红)、mobile 688/0、interact 97/0、drag 5/0、geom 5/5;
线上自检 19/19 + 线上真实账号巡检 28/0(含 Firefox 实测)。
|
2026-10-04 10:46:50 +08:00 |
|
laoyang
|
52cc1ecccb
|
v24 第 9 批:名册九条(分组按钮/加入名册/生日月日/地址四级/千人性能/拖动修复/删除人员/返回名册/Semi DatePicker)
- #131 名册卡片加「分组」按钮(details+radio,显示当前分组,选中即改)
- #132 修复「从已有人里加入名册」无反应
- #133 生日只显示月和日(阳历 MM-DD / 农历中文名),PersonQuery::birthdaysOf 取代 birthdayOf
- #134 地址结构化为 国家/省/市/区+详细:regions 表(3429 行全国区划)+ Region.php +
?r=regions 级联接口 + 表单 .addr-grid + 老地址回填(Schema v16)
- #135 千人名册性能:.person content-visibility:auto + 名册页 ob_gzhandler
(实测 服务端 1.15s/3.8MB → 0.17s/87KB;客户端导航→load 1.35s → 0.37s)
- #136 拖动排序改 Pointer Events(Chrome 下 HTML5 DnD 在 DOM 变动时断)
- #137 个人详情页底部「删除人员」
- #138 编辑资料页加「返回名册」
- #139 所有日期选择换 Semi Design DatePicker(渐进增强:原生四字段保 POST 契约,
懒加载 vendor semi UMD,值回写原字段;工作经历 type=month 一并升级;宣纸主题对齐)
验证:e2e 785/0、batch9 37/0、upgrade 126/0、picker 28/0、mobile 688/0、interact 97/0、
batch_e 91/0、import 21/0、douban 22/0、drag 5/0、semi-integrate 28/0、semi-probe 17/0、
geom 5/5;部署后线上自检 16/16(含 4 个 semi 资源 200 + regions 路由)。
|
2026-10-04 08:56:40 +08:00 |
|
laoyang
|
8f80f3e835
|
v24 第 2 轮:19 条清单收尾(附件预览/CalDAV/任务分类看板/全局选人/家谱/纪念日/财务)
用户 2026-10-02 提的 19 条需求,本轮完成剩下的 8 条 + CalDAV 服务端:
- ③ 附件:图片/视频给缩略图,PDF/Word/Excel 给**同尺寸**图标;可预览的在本页
弹层里看(不再新开标签页),渲染不了的点了直接下载;预览层右上角恒有下载按钮。
- ⑦b CalDAV:把「我的日历本」按 RFC 4791 只读子集分享出去(OPTIONS/PROPFIND/
REPORT/GET,写方法一律 403)。用**专用口令**(库里只存 sha256),不是登录口令。
- ⑨⑩ 任务:分类与看板都由用户自建;已完成的任务从看板消失,改在「已完成」页
按分类查看/搜索;设置入口在「新建任务」旁的 ☰。
- ⑪ 全局人员选择器:一个片段铺到观影/旅程/资源/日历共享/任务共享/财务共享;
修掉了老组件「名字和拼音都搜不动」的 bug —— .att-item 自己声明了 display:flex,
压过了浏览器 [hidden]{display:none},过滤根本没生效。
- ⑫ 家谱:头像改方形不再裁切;姻亲不在图上的卡片给「⇄ 姻亲」入口,
以 TA 为中心重画 + 「返回我的家谱」。
- ⑬ 纪念日:阴历/阳历都能设且按对应历法重复;名册里每个人的生日默认可见
(实时派生,不复制一份);全部作为全天日程进日历。
- ⑮ 财务:账本可共享,双方都能记账、都能看全部账目,资产−负债=净资产;
金额一律以「分」存,不用浮点。
验证:端到端 724 项通过 / 0 失败;几何 368、交互 97、移动端 516、家谱 24、
升级 123 全绿;SQL 列名静态校验 0 处可疑;部署 11 条线上探针全过。
|
2026-10-03 08:18:05 +08:00 |
|
laoyang
|
746f02581e
|
v9: 观影对齐 MovieLog —— 瀑布流/影院管理/评价评论/起止时间
- events 起止时间精确到秒(starts_at DATE→DATETIME + ends_at),_datetime.php 复用
- 影院独立成表(cinemas,地方/名称/地址/主题色 + 50 色板),movie_details 归一为 cinema_id
- 评价模型 MovieLog 同款:movie_reviews 每账号每片一条(1-10 分+正文+感受 key),
movie_review_comments 两级平铺评论(回复的回复规范化到顶层、跨评价回复拦截)
- 感受目录迁到 MovieReview::CATALOG(12 种,Emoji 11.0 老码位)
- 观影列表改瀑布流(CSS grid 海报墙),详情页五大块 + 灯箱 + 评价区
- 升级路径:v8 老数据自动归一(影院三段按 (family,place,name) 去重建行、
评价回填、中文感受反查英文 key),回填全部幂等;老库补 cinema_id 列+索引+外键
- 修三 bug:建表顺序(cinemas 必须在 movie_details 前,否则全新安装 1215)、
layout 导航用键名当路由(影院链接指向 r=cinemas)、
_datetime.php 分钟循环变量 $m 覆盖宿主模板的观影记录(编辑页简介/备注回填被清空)
|
2026-10-01 00:12:04 +08:00 |
|
laoyang
|
7e9b4520c0
|
登录居中 · 个人 slogan · 三种生日 · 称呼视角化 · 附件统一走代理
按九点反馈一次性改造:
1. 登录页「图标 + 用手机号登录你的家书」包进 .auth-head 并真正居中
(以前只加了个 class 名,没有样式,看着像做了其实没做)。
2. slogan 改成两段式:系统级 slogan 作兜底,每个人可在自己的资料里写一个,
填了就显示自己的、留空就回落到系统那句。settings 里「家庭名称」字段去掉
(只在安装时归档,不参与展示)。
3. 三个生日:身份证生日(从证件号截取,永不改动)/真实阳历/农历。
同一人填了其一即自动推出另一个(靠 birthday_source 指明填的是哪一侧,
不依赖 JS)。三者落在同一天时合并成一条提醒,否则分别提醒。
农历表不是照抄流传的那份 lunarInfo(它在 5 个年份上是错的)——
用五个独立实现按 7.3 万天多数表决重新推导,再要求 100% 重现。
4. 称呼改成「视角属性」:nicknames(family_id, viewer_id, target_id, nickname)。
「小明」不是某个人的属性——同一个人被不同人叫法不同,所以是「谁看」的属性。
旧的 persons.nickname 由 Nickname::migrateLegacy() 搬到新表,只搬一次。
5. 点自己的头像/名字直接进「我的资料」,不必再绕
「名册 → 找到自己 → 编辑资料」三步。
6. 附件(头像与其它上传)一律走 media.php 代理,不再直连 uploads/ 或云端地址:
可读性由登录态决定而不是「知道文件名」,Content-Type/缓存/下载头由服务端统一给。
uploads/ 整个目录 deny(含历史遗留备份文件),并有真实探针验证。
7. OSS 设置页加「连通性测试」(本地 / 云端两个按钮),逐步给出结论与耗时。
8. 生日输入改用「原生日期框 + 24 小时制时:分:秒 三个下拉」:
datetime-local 的格式由浏览器 UI 语言决定(中文环境渲染成「下午 03:30」,
没有秒、还容易把上下午填反)。点输入框任意一处都能弹出选择器(showPicker)。
9. 结构版本号收敛成 Schema::VERSION 一处,安装时即盖章,避免首次请求白跑升级。
验证(全部为「先注入 bug 证伪、再跑通过」):
php -l 42 个文件;e2e 149 条;老库升级专测 37 条;反向验证 23 个注入全被抓;
桌面几何 108 条(768/1280/1920/2560);移动端真机几何 212 条(360/375/390/414);
交互检查 49 条(生日整框可点、登录居中)。
|
2026-09-30 09:44:55 +08:00 |
|