malk 29dd9f00c8 feat(timecard): publish main page with guarded dual-file updates 3 dni temu
..
scripts 29dd9f00c8 feat(timecard): publish main page with guarded dual-file updates 3 dni temu
src 29dd9f00c8 feat(timecard): publish main page with guarded dual-file updates 3 dni temu
tests 29dd9f00c8 feat(timecard): publish main page with guarded dual-file updates 3 dni temu
README.md 29dd9f00c8 feat(timecard): publish main page with guarded dual-file updates 3 dni temu

README.md

TimeCard 页面源码

src/timecard-repair.oyd.jsx 为阿科德斯 Timecard_补填 的维护源码,采用宜搭现有平台 JSX 模式。主管规则为内部员工取人员档案 Manager,外部员工取所选月份有效项目经理,只有业务数据缺失时才兜底 Raymond。

src/timecard-repair-lifecycle.oyd.jsx 历史上以2026-10-21线上版本52合入上下文轮询,作为版本53发布源码。2026-10-23两份补填维护源先合入封账原生查询并发布版本54,再以线上版本54为基线合入加班口径和外部补填规则,发布版本55;后续仍须重新读取线上基线,不能直接覆盖。

src/timecard-main.actions.js 与 src/timecard-main.render.jsx 为正式填报页双文件维护源码,与Tech交付文件一致。2026-11-01已从最新线上Schema合入离职日期和海外日历需求,定点发布v118并独立回读。保留原组件树与数据源,不拼成单文件覆盖;后续可按用户指令自动合并发布,见下方流程。

src/timecard-change.oyd.jsx 为Timecard_变更维护源码,包含版本24的实例隔离、resize监听卸载和异步回写终止,以及2026-10-23版本25的封账原生查询。后续发布仍须先回读线上最新Schema,再把修改合入线上基线。

其他工时补填请求必须携带 otherGroup.managerId。buildTimecardRepairRequest 和调用方需要完整等待主管解析,再发起后端请求。

封账状态查询(2026-10-23)

三个入口的loadMonthClosingStatus(year, month)改用宜搭原生getProcessInstances,按上海时区月份完整分页查询封账流程,并归约为旧后端相同的六字段契约。补填、变更仍保留原串行队列、来源月/当前月判断、失败禁止写入和保存提交顺序;新增辅助方法仅处理封账数据读取与解析。

前置条件是月度封账流程配置全员实例可查看权限。getMonthClosingStatus连接器和POST /month-closing/status作为页面旧查询路径废弃,保留配置/接口用于历史兼容,页面代码不再调用。原因是连接器中转链路持续出现499,后端缓存预热亦存在SSL/认证异常;原生直查可以减少页面准入依赖。

MonthClosingService仍用于保存、提交、审批补发及封账业务校验,不能随页面旧入口一并移除;按需缓存和并发合并保持原样。旧MonthClosingCacheWarmupTimer及服务的预热方法已标记Deprecated:定时类取消Spring注册和生命周期调度,不再创建线程,历史方法空实现,不能通过全局enable.scheduling=true误启。其他审批补发、回写与同步任务保持原样。执行、等价验证及实际后端部署状态见Tech目录开发/封账查询前端直查-实施发布记录-20261023.md。

归档补充:正式Timecard的actions-only自动补丁曾被原有JSX/连接器描述的emoji校验在保存前阻断,该历史证据保留。2026-10-23用户随后确认已手工发布;助手本轮未再访问或回读正式页,不将用户发布确认记作助手线上逐项验收。真实员工/组长业务复测仍需按场景验证;上述为当时历史,2026-11-01已按最新授权完成正式页自动发布,当前边界见下文。

加班口径及外部补填(2026-10-23)

正式填报和补填按实际日期汇总正常及补填工时计算加班,排除正负变更工时,保留每日规则和内部员工36小时上限。原表与补填表同日存在有效记录时按来源归并,冲突或查询不完整时阻止继续计算,界面未保存输入仍参与校验。

内部员工补填保留原工时汇总、补填汇总双表校验;外部员工加载、保存及提交均跳过原工时汇总,补填自身的锁定及防重继续执行。后端独立核实人员属性,前端staffType仅用于缓存隔离,不能绕过人员校验;上下文首包仍异步返回。

补填v55已完成发布和独立回读,13个原数据源及页面config保留。后端与旧封账查询/预热停用合并,于2026-10-23 11:00部署、11:03:59验收通过:服务、内外网及内外部补填上下文正常,旧预热线程消失且180秒无新预热日志。发布回执及SHA见Tech中的统一执行记录及部署验收文件。真实角色保存及提交尚未验证,未写入生产工时或发起审批。

验证命令

从仓库根运行,无需浏览器、登录态或后端启动:

node pages/tests/verify-repair-manager.cjs
node pages/tests/verify-repair-lifecycle.cjs
node pages/tests/verify-repair-context.cjs pages/src/timecard-repair-lifecycle.oyd.jsx
node pages/tests/verify-change-lifecycle.cjs
node pages/tests/verify-native-closing.cjs
node pages/tests/verify-overtime.cjs

8 个用例覆盖主管缓存、缓存缺失、内外部员工规则、业务兜底、纯项目工时、连接器实际请求及主管获取失败。也可验证回读 Schema 的源码或编译代码:

node pages/tests/verify-repair-manager.cjs /absolute/path/to/readback-schema.json compiled

加班专项默认读取Tech中保留的三人只读样本(不提交业务数据),可用第3个命令行参数指定本地样本JSON。后端联合定向测试61项通过:TimeCardPersonnelPolicyTest、TimeCardRepairServiceTest、MonthClosingServiceTest、MonthClosingCacheWarmupTimerTest。

发布边界

  • 目标应用:APP_ZQ3I7XO2RSHDJ4QDEVNB。
  • 补填页面:FORM-C7FA6060445B4820AF93668DE6AD9C4FY0CY。
  • 变更页面:FORM-03AD081995774FC38E148AFE8C60D2FECK7K。
  • 发布前回读最新线上 Schema,将修改合入线上基线,再执行 openyida check-page、compile、publish --health-check。发布后核对源码、原有功能与页面数据源。
  • 正式Timecard主页面(FORM-1741B1D56FE04480B0E4F5412FF9AE6ATYGR)允许按用户指令通过下述双文件脚本自动发布;不使用会重建组件树的普通openyida publish。
  • 登录态沿用已绑定阿科德斯组织的项目环境,不提交凭据、Schema 快照、编译产物或缓存。
  • 技术说明、执行证据与归档记录保留在 /Users/malk/Desktop/Tech/1. malk/宜搭/阿科德斯/TimeCard/;该目录的 程序 链接指向本仓库。

正式主页面双文件发布(2026-11-01起)

在本仓库已绑定的阿科德斯组织环境操作;每次先读取最新Schema,比较线上actions、render、组件、数据源与config,将需求增量合入线上基线,再同步两个维护源。不能拿旧源码套到新Schema。历史三方共同基线与合并差异须在Tech事项记录留证,不固定使用某个历史提交作为后续共同基线。

openyida get-schema APP_ZQ3I7XO2RSHDJ4QDEVNB --all --keyword FORM-1741B1D56FE04480B0E4F5412FF9AE6ATYGR --summary-json --output-dir <Tech事项目录>/发布基线
node pages/tests/verify-timecard-main-publish.cjs <最新Schema文件>
node pages/tests/verify-employment-calendar.cjs
node pages/tests/verify-native-closing.cjs pages/src/timecard-main.actions.js
node pages/scripts/publish-timecard-main.cjs <最新Schema文件> <Tech事项目录>/发布候选
node pages/scripts/publish-timecard-main.cjs <最新Schema文件> <Tech事项目录>/正式发布 --apply

脚本使用已安装OpenYida的JS/独立JSX编译、完整Schema内容校验、认证和保存传输,目标固定为上述正式页。仅替换两块代码的source/compiled、动作注册及当前页面连接器描述中的图标;两个按钮装饰已在源码去除,不修改连接器主资源。其余组件、ID、9个数据源与配置必须完全一致。默认只生成候选,--apply才写入;保存前完整比较基线,保存传原gmtModified防止并发覆盖,成功后独立回读完整Schema。证据目录出现发布尝试时拒绝再次写入。

发布后再用get-schema从独立CLI回读并比较候选;同步Tech的timeCard_v1.0.js/.jsx、发布回执及事项当前记录。Schema回读通过仅代表代码与配置已保存,不代替浏览器和真实员工/组长保存提交验收。冲突、权限、内容校验、超时或结果不明时停止并先只读核对,不绕过校验或自动重试。该脚本依赖OpenYida当前内部模块,CLI升级后先运行离线安全回归;无需迁移原双文件或重建页面。