外贸单证与装柜系统 · macOS 版
==============================

制单和装柜放在同一个工具里：11 种单据 / 11 语言 / 9 套配色，
加上按箱规三维算柜的装柜测算，以及可直接发给货代的装柜单。

【安装】
1. 解压后把「外贸单证与装柜系统.app」拖到「应用程序」文件夹（或桌面）。
   ⚠ 双击的必须是这个 .app，不是里面任何 html 文件。
2. 第一次打开：右键点图标 →「打开」→ 再点「打开」。
   若提示"已损坏，无法打开"，在「终端」执行一次：
   sudo xattr -dr com.apple.quarantine "/Applications/外贸单证与装柜系统.app"
3. 之后双击即可。

【为什么打开后像网页？怎么变成独立窗口】
本 app 不内置浏览器内核，它是一个「启动器」，按顺序找：
  ① Chrome → ② Edge → ③ Brave/Vivaldi/Arc/Chromium
  找到就用「应用模式」打开：没有地址栏、没有标签页，就是一个独立软件窗口。
  都没找到，才会用 Safari 打开 —— Safari 不支持隐藏地址栏，所以看起来像网页。

如果你看到的是带地址栏的网页，任选一种解决：

  方案 A（最推荐，2 分钟）
    装 Google Chrome 或 Microsoft Edge（都免费），装完再双击
    「外贸单证与装柜系统.app」，直接就是独立窗口。数据不会丢。

  方案 B（macOS 14 Sonoma 及以上）
    用 Safari 打开后，点菜单栏「文件 → 添加到程序坞」。
    桌面/程序坞会出现一个独立图标，点开是无地址栏的窗口。

  方案 C（不装任何东西）
    就用 Safari 用，功能完全一样，只是窗口顶部多一条地址栏。

【装柜测算能做什么】
· 按箱规三维真实排布，同批货试 6 种朝向取最优，不是拿体积相除。
· 三种柜型：20GP / 40GP / 40HQ，柜内尺寸已预置，限重可改成货代给的真实值。
· 多柜方案对比：1 柜 / 2 柜 / 3 柜各要多少钱、哪个柜型最省，一次算清。
· 重量校验：给出总毛重与占用限重百分比，超重【常驻红字告警】，
  不会因为切页面而消失。有产品没填每箱毛重时提示「载重校核失真」，
  提醒你这个重量算不准，补齐毛重再看结论。
· 托盘装柜模式（打托出货）：
  - 预置欧标 1200×1000 / 日标 1100×1100 / 美标 1219×1016 三种托盘，可自定义；
  - 托盘自重计入总毛重，触发超重预警；托间预留叉车间隙；
  - 整托优先排布，剩余零散箱自动填柜尾缝隙（散箱补缝），仍放不下开散托；
  - 3D 图画出托盘底板，装载步骤按「整托/散箱补缝/散托」分类，装柜单列托数与托盘自重。
· 摆放方式三档：可自由旋转（6 种朝向）/ 禁止倒置（可转圈，不可侧倒翻面）/ 固定长宽方向。
· 重货先装（重下轻上，默认开启）：
  按每箱毛重从重到轻排装载顺序——重货先进柜子最里侧和底层，轻货后装、自然靠柜门，
  这就是现场「重不压轻」的通行做法。同时带承压门禁：上方箱子比下方重超过 10% 就不压，
  宁可空着也不算出「3.6 吨铁件压泡沫箱」这种现场不敢执行的方案。
  有固定装柜次序（某产品必须最后装、配套件按序放）时可在设置里关掉，改为按订单录入顺序装，
  关掉后承压门禁依然生效。
· 多装法混排 +「允许叠压」开关（默认开启）：
  开启后一个方案里混用整块 / 长条 / 顶面续装 / 门口补块 / 侧边补缝五种装法，
  后装产品会补到先装产品留下的零头列上方、矮平台顶面，以及大箱旁边剩下的窄条里，
  柜装得更满、图更接近实装——同样一票货有时能少算一个柜。
  货物怕压、不能混码时请关掉它，退回「一个产品一堵墙、互不叠压」的保守装法，
  两种都是真实装法，按货物性质选。
· 装载步骤表按装柜工口径列 8 栏：顺序、产品、装柜位置、装柜方向（立放/侧放/平放 +
  正向/横向）、各方向尺寸 mm、深度×宽度×高度各摆几件、本步箱数、柜内累计。
  「柜内累计」是这一柜装到这儿为止的箱数，每柜从 1 数起，不接着上一柜数。
  「装柜位置」直接写清装在哪：柜里侧 / 柜中段 / 靠门端，以及从柜底起还是踩在下层货上
  （柜底 +92cm 这种写法），装柜工不用自己数第几列。
· 重心与加固体检（逐柜）：
  前后偏载——重心离柜长中心多少厘米，超过柜长 10% 标红（拖车轴重会不均、码头可能拒装）；
  左右偏载——重心离柜宽中心多少，超过柜宽 10% 标红（单侧吃重，转弯易侧翻）；
  重心高度——占柜高的百分比，偏高会提示；
  门端空隙——最后一箱到柜门还剩多少，留空 ≥30cm 提示加挡板 / 充气袋 / 绑扎带。
  装不满（装到柜长 90% 以下）或没填毛重的柜不判偏载，只提示加固空档并显示「—」。
  托盘是按柜宽居中摆的（两排托盘两侧留一样宽的空档），重心天然落在柜中线上，
  所以托盘柜基本不会因为排布本身报左右偏载，报了就是真的要调。

  【尾数回塞】最后一柜只装了零星几箱（不到柜容积 20%）时，系统会自动把这批箱子
  补进前面柜里的平整空位，补完就取消尾柜——实测同一张单从 5 柜降到 4 柜，省一个柜的运费。
  补位必须满足「空着、有支撑不悬空、不重压轻、顶面够平」四条，全部搬完才生效；
  塞不下就保留尾柜并给出三条出路（摊回前柜 / 换小柜拼柜 / 走拼箱）。不想用可在装柜页关掉。

  【两个利用率别看混】滑块「需柜估算折扣」只用来估需要几个柜，不参与柜内排布；
  结果区的「实际几何利用率」才是逐箱排布真实装到的比例，订舱按这个数看。
  两者差 8 个点以上时系统会说明差额来源（箱型与整墙排布留下的缝隙）。
  【VGM 核实总重】装柜页「订舱信息与 VGM 申报」里按柜自动算：
  VGM = 货物毛重（含托盘与包装）+ 空柜皮重 + 加固材料重。
  皮重默认按柜型（20GP 2200 / 40GP 3700 / 40HQ 3900 kg），请以箱门铭牌上的 TARE 为准，不一致就改。
  超箱体最大总重 30,480 kg 会标红——船司拒装，必须减载或换柜型。
  申报方式选「方法 2 累加计算法」时，单据上会自动印申报方式与责任人签字栏（船司只认带签字的申报）。
  装柜单上 6 个柜以内 VGM 表印在首页，超过 6 个柜单独成页（带 SO / 船名航次 / 港口 / VGM 合计），
  这一页可直接抽出来交船司或货代。

  【订舱信息】装柜单新增订舱信息区：SO 号、船名航次、提单号、承运人、货代、装货港、目的港、
  ETD / ETA 都从订单「运输信息」自动带出；截关时间与装柜仓库地址在装柜页补（按订单各存一份）。
  订单里订舱信息一项都没填时，这块整块不印，装柜页会提示去补。

  体检结论会同步写进装柜单。
· 装柜单一柜一页，可以直接发给装柜班组：
  第 1 页是单据（抬头、订单信息、分柜明细、重心与加固提示、货物明细、四方签章）；
  第 2 页起每柜一整页作业表——柜号与箱号区间、本柜六项指标、3D 示意图、
  本柜货物构成、分步装载作业表、本柜注意事项、班组签字栏。
  现场撕开就是一页一张，装第 3 柜的人只拿第 3 柜那页；散页也带柜号和箱号区间，不会搞混。
  作业表末列是「订单箱号」，与首页箱号区间对得上，可以直接照着点货、贴箱唛。
  步数多（托盘常见 20 步以上）、柜数多（10 柜以上）时自动收密行距，不会只印几行就翻页；
  步骤表确实跨页时，每页表头都重复柜号和单号。
· 分柜明细按逐箱排布统计：每柜箱数、箱号区间、毛重、体积与 3D 图完全一致，
  仓库照单理货不会出现「图上 152 箱、单上 305 箱」这种对不上的情况。
· 3D 示意图：拖动旋转、滚轮缩放、俯视/侧视/正视一键切换；
  点箱子看位置，点图例产品名只看该产品，点托盘看规格与自重；多柜可切换。
· 装柜单导出：含抬头、柜号、封条号、装柜日期、编号、签字栏，
  可直接发给货代或仓库。
· 摆放约束：「允许纸箱自由旋转摆放」默认开启（会试 6 种朝向取最优）；
  货有向上箭头、怕压、标签必须朝外时请关掉它，只按录入的长宽方向排。
  「装柜预留间隙」默认 2cm，可按实际调整。
· 每箱毛重是必填项：填了外箱尺寸却没填毛重，保存时会被拦下要求补齐。

【装柜结果的边界（很重要）】
1. 本功能是估算工具，不是船公司或码头的配载系统。实际装柜受工人装法、
   加固方式、柜内变形、货物可压性影响，最终以现场理货与货代确认为准。
2. 限重按【偏保守的通用上限】预置（20GP 21 吨 / 40GP、40HQ 26 吨），
   刻意低于部分船公司宣传的最大载重——公路限重、码头吊装、淡旺季都会
   临时下调，按最大值算的柜数现场往往装不下。各船司、各航线、各港口限重
   不同，下单前请向货代确认，并在装柜页改成真实值。
3. 托盘货、垫木、加固材料的重量与体积未计入。打托出运的订单请按实际
   托盘数另行核算，不要把本结果直接用。
4. 超重、超尺寸导致的甩柜、退关、罚款由使用者自行承担。

【数据存在哪】
· 位置：~/Library/Application Support/TradeDocsPro
· 想迁移：把整个 TradeDocsPro 文件夹拷到新 Mac 的同名路径即可。
· 换方案 A/B 不会丢数据（读的是同一份）。

【授权激活】
· 单机授权：打开后把卖家发给你的授权码粘贴进输入框 → 点「激活」。
  纯离线校验，不联网、不注册、不上传任何数据。
· 未激活或到期后为「只读模式」：可查看已有单据、导出数据备份，
  不能新建、修改、导出单据（原有数据不会丢）。
· 激活入口：首次打开直接显示；也可点界面右下角「输入授权码」，
  或 设置 → 授权。

【换电脑 / 换手机怎么办（新授权码绑定设备）】
1. 在新设备上打开本工具 →「设置 → 授权」→ 点「本机设备码」右边的复制，
   得到 8 位设备码（例如 22MT5D3B）。
2. 把设备码发给卖家，卖家重新绑定后会给你一段新码，
   到期日与原来完全一样，不会因为换电脑少一天。
3. 在新设备上粘贴新码激活即可。
· 同一授权码最多绑定 3 台设备。旧设备不用了，请在旧设备的
  「设置 → 授权」里点「解绑本机」把名额让出来；
  解绑只清除本机授权记录，单据、客户、产品数据都不会动。
· 若提示「该授权码已绑定其他设备」，把提示里的本机设备码发给卖家即可。
· 更早签发的老授权码不带设备绑定，仍可在任意设备上直接激活。
· 授权码一码一用，请不要发到群里或转卖。

【为什么会被系统拦一下】
个人工具没有购买苹果开发者证书（一年 688 元），所以应用未签名/未公证。
右键「打开」或执行上面的 xattr 命令即可，绝不是病毒。

【其他平台】
· Windows：外贸单证与装柜系统-Windows版.zip（解压后双击 exe，独立窗口）
· 安卓 / 鸿蒙 4.x：外贸单证与装柜系统-安卓版.apk
· iPhone / iPad：用 Safari 打开 html 并「添加到主屏幕」

【出问题了怎么排查】
· 双击没反应：确认拖进去的是 .app 本体，不是某个 html。
· 装柜页空白 / 算不出结果：产品箱规（长宽高，cm）必须填全，
  箱规为 0 的产品不参与排布。
· 数据不见了：看 ~/Library/Application Support/TradeDocsPro 是否还在。

版本：P1.11
