# 水印、拍照恢复与实际日期 2.5.9 社群新上传的照片和视频在右上角添加两行水印。APP 拍照或录制标记为「APP现场拍摄」,相册或文件导入标记为「用户本地素材」,第二行为北京时间 `yyyy-MM-dd HH:mm:ss`。拍摄使用此次拍摄时间,导入使用此次选择素材的时间。水印写入文件,聊天接收方、帖子查看者及下载后的媒体均可看到;日期时间同时保存到服务器记录。 私信、供需与广场图片、可上传图片的服务卡、官方推荐图文视频均使用此处理流程。照片纠正旋转方向后添加水印,视频逐帧添加并保留音轨。录制私信视频仍限制 30 秒,推荐视频不限制时长。语音消息保留原格式,已有媒体不批量改写;系统服务标识图和证照交换的专用水印保留原规则。相册原文件不会被改动,经营合同照片继续保存在本账户本机经营数据中。 ## 合同拍照返回 用户原视频显示,新建当单导入相册照片能返回表单,合同拍照确认后返回工作台并丢失未保存内容。客户端重用当前窗口与导航栈,避免 Android 重建页面时重新创建登录窗口;新建当单在启动系统相机前,保存本账户的客户、物品和结算信息草稿。 如果相机打开期间 Android 回收 APP 进程,相机结果通过原生活动写入确认标记。登录授权或用户设置的解锁验证通过后,恢复原新建当单及确认的合同照片。取消拍摄恢复填写内容但不新增照片。恢复完成或正常返回后删除临时草稿和照片缓存;草稿按账户保存,一键清除本账户数据也会清理这些文件。 ## 实际续当、赎当日期 续当结算增加「实际续当日期」,赎当结算增加「实际赎当日期」,默认设备当天,可通过日期选择器修改。预览、确认提示、业务轨迹与对应收支流水均使用选定日期,财务日期区间汇总据此筛选。续当继续按原到期日延长周期;实际办理日期不改变原续当规则。实际日期不能早于开当日期或已有续当日期。 ## 升级与构建 安装 `寄当家-2.5.9.apk` 并同步替换服务器程序,保留整个原数据目录。服务器包已经包含视频处理程序、中文字体、许可证及依赖版本锁定文件,必须完整解压。源码构建前运行: ```powershell .\tools\prepare-media-tools.ps1 dotnet run --project tests/JiDangJia.Checks -c Release dotnet publish src/JiDangJia.Server -c Release -r win-x64 --self-contained true -o artifacts/server-win-x64 $env:JDJ_SERVER_BINARY = (Resolve-Path artifacts/server-win-x64/JiDangJia.Server.exe).Path node tools/check-media-watermark.cjs .\tools\publish-android.ps1 ``` 依赖下载按 SHA256 校验固定版本。Windows 使用随包 FFmpeg、FFprobe 和 Noto Sans CJK SC 字体;可通过服务器环境变量 `JDJ_FFMPEG`、`JDJ_FFPROBE`、`JDJ_MEDIA_FONT` 指定其他已安装路径。视频处理最多同时运行两个任务,超时、无效视频和中断上传会清理临时媒体。 ## 验证 业务检查通过 438 项,含实际日期、续当费用、收支区间统计、非法日期事务回滚与备份恢复。社群 HTTP 检查通过 167 项,安全与清除检查通过 142 项,实际客户端登录卡密检查通过 60 项,真实浏览器媒体检查通过 55 项。 水印检查通过 132 项,覆盖两类来源、保存时间、相同上传重试、非法时间与来源、旋转照片、MP4/WebM 视频、音轨保留、首中尾帧水印、推荐长视频、权限与临时文件清理;Windows 自包含发布程序另外通过同一组 132 项水印和 167 项社群检查。Android API 35 模拟器通过 28 项检查,覆盖拍照确认、取消、进程回收后的表单与照片恢复及实际保存、实际续当和赎当日期与流水、私信拍摄和相册来源。模拟器检查和文件像素证据位于 `artifacts/verification/`;测试只使用独立 Android 测试包、本机服务器及虚构账户,未操作用户实体手机或正式服务器。 设备验收:填写客户、两件当物、不同费率及合同照片后拍照确认;确认仍在原表单且可保存。再次拍照后取消,确认照片数量不变。分别在私信里拍摄及导入照片、视频,确认接收方看到相应右上角水印。续当、赎当修改实际日期后保存,确认记录和财务流水一致。