本次提交包含以下修改: 1. 新增微信登录相关服务及页面逻辑,实现首次微信绑定手机号流程 2. 优化产品匹配卡片 UI,移除不必要状态显示 3. 调整首页 scroll-view 属性及 banner 背景样式 4. 完善积分规则校验逻辑,增加时区及策略格式验证 5. 更新协议草案文档,补充资料清单及功能说明 6. 修复分析结果路由路径,适配新的匹配结果页面 7. 调整品牌 Logo 安卓端字体对齐样式
8.1 KiB
照片存储配置落地记录
2026-10-19 开关更新
正确服务器111.230.144.231;17:40:33随后端20261019-photo-points-token-r1上线,正式private_documents.enabled已设为带引号的true,目录/密钥/备份安排保持。线上document-use无正式版本,实际上传仍被协议及有效同意校验拦截。未发布待填草案、伪造同意或验收真实上传/恢复。新证据D:/AAdesk/202609/airz-backups/photo-points-token-production-20261019-r1;下方关闭状态为10月13日历史记录。
2026-10-13。用户授权继续服务器存储准备,已确认在线照片长期保存、备份副本滚动保留7天。本轮配置完成,照片上传仍关闭;正式协议、主体和删除联系方式尚待补齐。用户继续暂缓功能验收,小程序自行发行。
已落地配置
| 对象 | 实际结果 |
|---|---|
| 在线照片 | /www/wwwroot/xctai.cn/private-documents,public同级;www:www(1001:1001)/0700,目前为空 |
| 运行配置 | 仅在既有.env追加private_documents区段:enabled=false、directory为上述路径;其他原始字节保持,没有更换或轮换密钥 |
| 权限核对 | 以www并使用现有open_basedir的CLI检查通过;另通过本机FastCGI实际FPM进程(1001:1001)进行合成文件读写/0600权限检查,测试脚本及文件已清理。没有调用上传API或合成生产用户 |
| 备份目录 | /www/backup/airz-private-documents,root:root/0700;文件0600,没有Nginx公开映射,不修改旧备份父目录权限 |
| 备份任务 | /etc/cron.d/airz-private-photos,root:root/0644;每日04:20,服务器Asia/Shanghai;MAILTO为空,不发邮件。crond active,原root crontab和04:00数据库任务保持 |
| 工具 | /root/airz-private-storage-setup-20261013-01/database/private_documents_backup.py,root-only目录/文件0600;对应本机后端database/private_documents_backup.py。无需框架启动或新依赖 |
| 密钥副本 | production-data-key.dpapi.json,本机DPAPI CurrentUser保护,ACL仅当前Windows用户/SYSTEM;不在Git仓库或照片备份包内 |
.env的服务器before副本仅保存在本轮root-only归档,未下载.env。密钥在服务器以临时RSA公钥封装后传回本机,在内存解包后立即转成DPAPI文件;没有输出、写入明文密钥文件或持久保存RSA私钥。本机另一个进程只读该DPAPI副本,即可核对原指纹并成功认证解密合成GCM校验串;没有解密真实业务资料。DPAPI依赖原Windows用户配置,换机/重装前应先完成受控迁移,不能把当前文件直接当作任意机器可用的密钥包。
备份范围与执行边界
工具用独立PDO、显式REPEATABLE READ只读事务取得资料元数据、资料scope的同意/撤销证据、document-use协议版本、三表结构和所依赖账户的id/createtime。密钥只用于生成指纹,不进入JSON或归档。后续读取清单中的活动照片密文,已删除行只保留状态、不会备份其文件;孤立密文不自动打包,也不自动删除。
归档包含metadata.json、文件摘要manifest.json和相关密文.bin。照片和元数据相互对应:文件本来缺失、链接、大小异常、并发修改或摘要校验失败会拒绝成功,不把残缺结果当作正常备份;上传/删除与备份并发时,必要情况下本次失败并等待重试,不暂停业务或改在线状态。新上传未进入该次快照的,留待下一次备份。归档的照片可能在快照之后被删除,恢复时必须结合最新删除/撤销记录处理。
每次成功备份后检查本工具生成的归档,删除创建时间已超过7天的旧副本。只匹配并完整验证本工具的photos-时间-随机ID.zip,未知文件保持;不触及在线照片、原数据库SQL、密钥副本或资料表。机器停机、任务失败或旧归档损坏时可能延迟清理,需查看受控backup.log并处理,不能宣称“无论故障都恰好7天内删除”。照片删除后元数据30天仍是未确认建议,本轮没有元数据清理或在线照片到期任务。
工具限制单张密文7MiB、元数据16MiB、单包密文总量2GiB/最多10000条资料记录;磁盘可用量小于1GiB时失败,避免无界生成。它们是当前运维工具的拒绝边界,不是新增的用户上传配额;后续接近边界时调整备份安排。日志只写状态、计数、归档名称和摘要,不输出行内容或凭据。
04:00整库备份仍保留3份,同盘照片备份用于有限误删/文件故障恢复;没有配置异地照片副本。照片包不是整库恢复包,不含密码/模型凭据或全部账户资料,恢复需先保护当前数据并核对所属账户及对应数据库恢复点。不能用另一时点整库直接覆盖已有用户数据,再把照片包无条件导入。
验证与证据
10:46:09目录/关闭配置完成,10:49:54备份任务安装并手动生成首份空资料快照(Asia/Shanghai)。当前三张新表均0行、在线目录为空;首份备份照片数0,归档SHA核对通过。这验证了正式环境的读取和归档路径,不是实际用户照片恢复验收,也未等待下一次04:20定时触发。
Windows合成文件测试6通过/1符号链接跳过,服务器独立临时目录7项全通过,覆盖缺文件失败、墓碑保留、孤立密文保留、七天边界、损坏包拒绝、路径和symlink拒绝。补充显式事务隔离后再次服务器7项及只读快照通过。没有合成数据库、DDL、业务写入、模型或短信请求,也没有改变账号/角色/产品库。
最后核对确认四服务airz-analysis/php-fpm-74/redis/crond均active,照片及短信关闭、三张新表仍为空;Nginx和root crontab保持,.env只追加照片区段。初次检查通道改写遗漏回执解析、最终核对模板占位符冲突及cron环境行被误计为任务的错误已定位修正;失败回执保持,最终以final-verification-retry.json为准,不能将失败计为通过。
本机私密归档:20261013-01,包含before-inventory、prepare、install、isolation-hardening、key-export、key-recovery和final-verification-retry回执。服务端归档为/root/airz-private-storage-setup-20261013-01,root-only;敏感environment.before.private不共享或下载。panel-cleanup证实宝塔退出、专用浏览器关闭,login.private.js/command.private.js已删除。
本地文档同步后,四正文通过AgreementRegistry纯格式校验,草案清单/正文/配套文件摘要一致;最终工具和测试摘要与服务器回执一致,14前端运行摘要保持。20个相关文本UTF-8无BOM和空白检查、25个本地链接、两个仓库diff检查及40个私密目录/文件ACL检查通过,无当前用户/SYSTEM以外的允许规则。结果保存为上述归档内local-verification.json;本地核对未读取生产配置、访问数据库或网络,不把其时间当作新的生产探测时间。
恢复和接续
归档可用工具的--verify <具体归档绝对路径>进行只读检查;恢复先在Web外隔离位置校验摘要、密钥指纹、所属账户和协议/同意关系,再与备份之后的删除、撤销、用途结束和注销处理记录核对。已删除或应处理删除的照片不得重新可读;最新保护记录缺失时保持隔离。当前未实施任何生产恢复或自动恢复入口。
撤回本轮配置时,先仅停用新增cron文件并保留备份/密钥。恢复.env前必须匹配本轮after摘要且仍关闭、无新照片,再使用服务器before;出现配置漂移或新业务数据则先保留现场。目录仅在确认本轮创建、仍为空时才能非递归移除,不清空在线目录、整库或密钥。
下一项为补齐主体及有效隐私/删除申请渠道,定稿并正式发布协议后再按明确范围开放照片。用户已说暂无信息,保留待填,不编造或重复追问。用户验收继续暂缓;29页面/63任务/融资28项和产品AI回撤保持,未提交/推送/PR。