7.8 KiB
7.8 KiB
生产部署入口说明
适用范围:furniture-3d-system 当前生产部署入口核对。
这份文档只记录非敏感入口与核查口径,不保存密码、密钥、数据库连接串或对象存储密钥。
权威生产目标
- SSH 入口:
root@ltai5tdb2ogyj59fquyedh.yydd.ai - SSH 端口:
60022 - 生产部署目录:
/opt/furniture-3d-system-prod - PM2 进程名:
furniture-3d-system-prod - 应用本机端口:
3001 - 默认部署来源:
origin/main
本仓库部署脚本
- 首选入口:仓库根目录
scripts/deploy-yydd-prod-from-git.ps1 - 底层打包脚本:仓库根目录
scripts/create-yydd-prod-deploy.ps1
执行部署或生产核查前,优先读取上面两个脚本的当前默认参数,并在远端实时确认当前 PM2 进程、current 软链接和健康检查结果。部署入口默认从 origin/main 取代码,发布前必须核对远端 refs/heads/main 和本地 origin/main 是否一致。
底层发布流程会执行依赖安装、prisma generate、迁移、构建、PM2 重启和健康检查。因此生产发布前必须先确认迁移目录、迁移历史和主数据 strict 巡检口径没有分叉。
只做生产/目标库地基核查时,优先在远端应用目录执行 npm run db:foundation:audit:production-readonly。该命令不事务回放治理迁移 SQL,只通过只读迁移状态和质量查询生成 .master-data-audits/foundation-production-readonly-current/manifest.json,适合把脱敏 summary 或 manifest 交回主线收口。拿到 manifest 后,用 npm run db:foundation:verify-production-readonly -- --manifest <manifest.json> 做机器验收;只有 accepted: true 才能把这份证据计入生产级地基收口。
花名册同步
- 花名册同步属于当前
furniture-3d-system自有能力,不依赖shujuku2或旧入口机。 - 项目默认命令:
npm run sync:employee-directory只做 dry-run,不提交同步载荷。 - 真实同步命令:
npm run sync:employee-directory:apply,生产 systemd 脚本必须显式使用--apply。 - 生产定时器安装脚本:
furniture-3d-system/scripts/install-employee-directory-sync-timer.sh - 生产 systemd 名称:
furniture-employee-directory-sync.service/furniture-employee-directory-sync.timer - 定时频率:每天
03:00和15:00。 - 源库连接信息只允许放在生产本地
/opt/furniture-3d-system-prod/shared/employee-directory-sync.env,不能写入 Git 或共享文档。 - 生产应用内部接口密钥继续从
/opt/furniture-3d-system-prod/shared/.env的HR_SYNC_SECRET读取。 - 人员信息表的钉钉组织同步使用
furniture-3d-system/scripts/install-dingtalk-directory-sync-timer.sh,生产 systemd 名称为furniture-dingtalk-directory-sync.service/furniture-dingtalk-directory-sync.timer。 - 钉钉同步每天
03:00执行一次,读取生产共享.env中的DINGTALK_API_CLIENT_ID和DINGTALK_API_CLIENT_SECRET,并自动更新人员信息;正式页面仍保持只读。钉钉网页登录使用独立的DINGTALK_LOGIN_CLIENT_ID、DINGTALK_LOGIN_CLIENT_SECRET,两组凭据不能混用。 - 首次部署后需在正式服务器执行该安装脚本,并手动执行一次
npm run sync:dingtalk-directory:apply完成首次填充;后续由 systemd 每日执行。
BOM 成本参考镜像
- 用户核算请求只读取本地 PostgreSQL 镜像,不在请求中连接上游
rpt.pm_bomBaseInfo。 - 低压只读预检:
npm run sync:bom-cost-reference -- --dry-run --max-pages=2;默认单连接、每页 100 行、完整页之间等待 250ms。 - 真实同步必须显式传
--apply、固定确认词、目标 PostgreSQL 身份和来源 SQL Server 身份;上游登录必须是report_reader,app_writer会被程序拒绝。 - 生产定时器安装脚本:
furniture-3d-system/scripts/install-bom-cost-reference-sync-timer.sh。 - 生产 systemd 名称:
furniture-bom-cost-reference-sync.service/furniture-bom-cost-reference-sync.timer。 - 默认调度:每天中国标准时间
02:00,附带最多 10 分钟随机延迟;安装时可通过非敏感环境变量调整。 - 上游连接继续只使用生产共享
.env中现有的JST_PLANNING_SQLSERVER_* / report_reader;不在第二个文件中重复保存密码。 - 首次运行安装脚本只会创建权限为
600的/opt/furniture-3d-system-prod/shared/bom-cost-reference-sync.env门禁与限速模板;目标/来源身份未填齐或现有只读配置不完整时拒绝安装定时器。 - 本地参考行只保留最新成功批次,避免每日约 76 万行无限增长;历史场景在自己的明细快照中保留来源行、指纹、单价、规则和原始计算依据,不依赖旧镜像行回查。
- 镜像新鲜度按最新成功批次的完成时间判断。上游当前可见的创建时间只作审计展示,不能用来判断当天同步是否过期。
- 准确度回测:
npm run backtest:bom-cost-reference -- --sample-size=30,只读最新成功镜像,不访问上游;样本限制 20 至 50 个,任一可比较 SKU 超过固定 10% 误差门槛即失败。 - 迁移、真实同步、安装/启用定时器和生产回测都必须另行获得生产操作授权;部署代码本身不代表这些动作已经执行。
操作日志保留策略
- 清理脚本:
npm run db:cleanup-operation-logs默认只做 dry-run;只有显式传入--apply --confirm=cleanup-operation-logs才会删除数据。 - 自动清理范围严格限定为
OperationLog中SYSTEM + SUPPLY_CHAIN_PRODUCT_ARCHIVE + details.kind=UPDATED + SUCCESS且创建时间早于 30 天的字段变更。 - 用户操作、商品档案导入、失败/重试日志及其他业务范围日志至少保留 365 天;本次策略不自动删除超过 365 天的审计日志。
- 生产安装入口:
furniture-3d-system/scripts/install-operation-log-retention-timer.sh。 - 生产 systemd 名称:
furniture-operation-log-retention.service/furniture-operation-log-retention.timer,默认每天中国标准时间04:30执行,附带最多 10 分钟随机延迟。 - 安装脚本会在
/opt/furniture-3d-system-prod/shared/operation-log-retention.env保存权限为600的数据库身份门禁和非敏感参数;身份未填写或保留天数不是 30 天时拒绝启用。 - 首次启用前必须先在生产执行 dry-run,核对候选数量、数据库身份和 systemd 落点;生产安装、首次
--apply和后续代码部署均需另行获得授权。
明确排除
192.168.58.20不是当前furniture-3d-system的生产部署目标。- 本机泛别名
prod不能作为当前项目生产服务器判断依据。 - 旧
gongxiangp2 / youyidian-3d-material的生产或 FreeNAS 信息不能直接套用到当前项目。
最小核查口径
生产相关动作开始前,至少确认:
- 目标主机是
ltai5tdb2ogyj59fquyedh.yydd.ai:60022。 - 远端存在
/opt/furniture-3d-system-prod。 - PM2 中存在
furniture-3d-system-prod。 - 应用监听端口是
3001。 - 部署来源是
origin/main,且远端main和本地origin/main一致。 - 生产只读地基核查优先使用
npm run db:foundation:audit:production-readonly。 - 生产只读 manifest 回传后,使用
npm run db:foundation:verify-production-readonly -- --manifest <manifest.json>验收,不能人工挑几个字段就宣称生产通过。 - 不把密码、密钥或连接串写入 Git、文档或长期记忆。
部署后核查
部署后不能只看公网 /api/health。至少补核:
- 远端
REVISION或当前发布目录 commit。 pm2 describe furniture-3d-system-prod。- 应用端口
3001是否监听。 - 最近错误日志是否有启动失败、数据库失败、对象存储失败。
https://cp.jiansun.vip/api/health。- 关键页面:首页、产品资料、仓库质检、非集成详情或本次改动涉及页面。