Skip to content
sexyfeifanPublic

About

面向内容创作者的自托管排期系统,支持独立工序、甘特图、历史恢复及 Canbox / 飞书项目导入。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pocket OS — 智能自媒体操作系统

面向内容创作者的全生命周期排期管理系统。每个节点独立安排日期,支持并行工序。Canbox 仅导入真实拍摄日期,不推算其他节点。

功能特性

  • 手动排期优先:修改发布日期、工序顺序或新增工序时,不会擅自改动其他日期
  • 独立排期:已移除倒排、顺推和碰撞推挤;拖动、缩放或修改节点只影响当前节点
  • 直接编辑:打开项目即可改名称、日期、完成状态,无须切换编辑模式
  • 撤销与历史:当前页面有 30 次撤销;另外服务器保存最近 30 次已保存排期变更,刷新后仍可逐节点预览恢复
  • Canbox 集成:从罐头场通告排期系统拉取拍摄安排,一键导入或反向绑定
  • 飞书项目导入:Agent 只提交候选,你手动选择绑定 / 新建并逐项确认字段与日期;独立凭证,不自动覆盖或倒排。详见 接入说明
  • 甘特图日历:无缝横向滚动,合并相邻工序色块,拖拽调整时间
  • 选题卡编辑:工序时间段选择、前置准备、分类标签、进度追踪
  • 冲突预警:工序过期未完成时红字警告
  • 工序设置:自定义标准制作流程,拖拽排序,颜色选择
  • 数据持久化:Docker Volume 挂载,JSON 文件存储

快速开始

Docker Compose(推荐)

要测试当前仓库里的 v1.9.10 源码,可先在项目目录构建本地镜像:

docker build -t pocket-os:1.9.10 .
docker run -d -p 8080:8080 --name pocket-os-test \
  -v pocket-os-data:/app/data \
  pocket-os:1.9.10

下面的 latest 示例适用于镜像发布后部署:

创建 docker-compose.yml:

services:
  pocket-os:
    image: sexyfeifan/pocket-os:latest
    environment:
      POCKET_OS_PASSWORD: ${POCKET_OS_PASSWORD:-}
      POCKET_OS_VIEW_PASSWORD: ${POCKET_OS_VIEW_PASSWORD:-}
    ports:
      - "8080:8080"
    volumes:
      - pocket-data:/app/data
    restart: unless-stopped

volumes:
  pocket-data:

启动:

docker compose up -d

# 打开 http://localhost:8080

Docker 直接运行

docker run -d -p 8080:8080 --name pocket-os \
  -v pocket-os-data:/app/data \
  --restart always \
  sexyfeifan/pocket-os:latest

本地开发

git clone https://github.com/sexyfeifan/Pocket-OS.git
cd Pocket-OS
npm install
npm start
# 打开 http://localhost:8080

NAS 部署

群晖 DSM

docker run -d -p 8080:8080 --name pocket-os \
  -v /volume1/docker/pocket-os/data:/app/data \
  --restart always \
  sexyfeifan/pocket-os:latest

威联通 QTS

docker run -d -p 8080:8080 --name pocket-os \
  -v /share/CACHEDEV1_DATA/docker/pocket-os/data:/app/data \
  --restart always \
  sexyfeifan/pocket-os:latest

Canbox 通告集成

Pocket OS 支持从通告排期系统自动拉取拍摄安排。

  1. 在排期系统后台启用外部 API
  2. 在 Pocket OS 侧边栏点击「从拍摄通告导入」
  3. 输入排期系统地址
  4. 选择要导入的项目,只填写通告拍摄段,其余工序日期留空

支持:

  • 按时间轴浏览,自动定位到今天
  • 导入时自动关联拍摄地、导演、摄影等信息
  • 不连续拍摄日期会保留为多个独立拍摄段
  • 选题卡可反向绑定通告排期

标准制作流程

工序 说明 新建时日期
脚本 文案撰写 未安排
拍摄 实际拍摄,可分段 未安排;通告导入时填写拍摄日期
ACO 粗剪版本 未安排
BCO 精剪版本 未安排
发布 最终发布 与项目发布日期一致

可在「工序设置」中自定义新项目的工序名称、颜色、顺序。现有项目的工序可直接改名、增删和排序,设置变化不会改动现有日期。

日常操作

  1. 点击「新建选题」后直接输入名称;所有节点默认未安排。
  2. 直接选择节点的开始、结束日期;同日工序只需选择一天。前移/后移一天会整体移动当前节点并保持时长。
  3. 点击时间轴色块进入对应节点编辑;点击时间轴空格或项目月历日期安排节点、添加备注。
  4. 拍摄可添加多个独立段;拖动一个拍摄色块只移动该段,节点的前移/后移按钮则移动整组拍摄段。
  5. TML 先预览再应用,只更新列出的节点。可显式选择年份;过去月份不会自动猜成明年。
  6. 修改自动保存;查看「已保存」提示后即可刷新。连续编辑按顺序保存,失败会重试;同步冲突由用户选择版本。

升级不会自动重排既有项目。此前被错误移动的日期需要根据实际安排手动校正。

技术栈

  • 前端:Vanilla JS + Tailwind CSS(CDN)
  • 后端:Node.js + Express
  • 存储:JSON 文件
  • 部署:Docker (Node.js 22 Alpine),镜像约 45MB

工作台与只读看板(v1.9.9)

  • 工作台:/;只读入口:/view,旧 /canbox 地址兼容。
  • 看板包含工作概览、项目卡片、周/月日历、全景时间轴与只读详情。只有查看、搜索、筛选和全屏操作;无编辑、删除、勾选完成或拖拽改期功能。
  • 看板通过独立只读 API 和 SSE 获取服务器已保存的数据,不读取管理设置、密钥、导入原文和历史快照。失败时保留旧画面并显示断线提示。
  • 项目状态(筹备、制作中、待反馈、已完成)与排期状态独立。点击“确认当前排期”只确认已安排的日期;改期会撤回确认,不会重排。
  • 新建可选口播、商业拍摄、短视频模板,也可把现有工序结构保存为模板。复制项目默认清空日期、完成状态、备注和通告绑定。
  • 编辑页默认紧凑节点行;从卡片进入再返回会保留视图和筛选。
  • TML 预览支持逐节点、逐备注勾选;通告日期应用/绑定先比较前后日期。预览后排期变化必须重新预览。
  • 历史从 v1.9.7 开始记录,最多保留 30 次已保存的日期/节点增删变更(连续编辑可能合并为一次保存),不是备份替代品。恢复只应用选中的节点,保留已有节点的名称、完成状态和其他项目字段。

概览与日期浏览(v1.9.8)

没有填写日期的节点不代表排期未完成,也不自动进入待处理。两处工作概览共用以下规则:

  • 当前节点:只看未完成且实际日期覆盖今天的节点,显示结束日期。
  • 下一节点:跳过没有日期的节点,按实际日期找每个项目最近的后续安排,不受工序顺序或七天范围限制。同日并行节点分别显示。
  • 已过结束日:只提示旧手动项目尚未标记完成的节点;多段拍摄以最后一段结束日为准,不把段间空档当成逾期。
  • 待反馈 / 调整中:只显示手动标记的项目。没有后续日期是中性信息,不自动推断是否需要补排。
  • “确认当前排期”确认已有日期,不要求所有节点填满。旧项目的进度仍依据手动确认;自动推进项目分别统计按计划结束与人工确认。不适用节点不计入进度。

只读项目详情上方提供横向日历,显示所有已有日期的节点,空日期节点仍保留在下方完整列表。全景默认两周细览(手机保持可读的日宽);六周是缩放档位,不是日期边界。可按住鼠标左右拖动、触控板横滑、触屏平移,或聚焦日历后用方向键浏览,Shift + 方向键移动两周,Home / End 定位首个 / 最后安排。也可通过按钮与日期输入跳转,跨月跨年连续浏览。拖动只移动视野,绝不修改排期。

名称和完整日期位于真实色条上方,短节点自动换行并错层,不用扩大色条假装延长日期。切换缩放、切换视图返回和自动刷新保留本次打开页面内的时间轴位置;整页重新打开回到今天。首次升级采用两周细览,此后记住主动选择的缩放档位。

新建与日期自动推进(v1.9.9)

新建时输入名称、选择模板和推进方式,再创建项目;取消不会生成空项目。分类和平台可后补。编辑页按“名称 / 当前进展 → 已知日期 / 通告或 TML 导入 → 项目日历 → 节点列表 → 准备事项 / 备注 → 项目管理”排列。发布日期只在发布节点编辑,不是创建必填条件。节点行直接改日期,低频操作在“更多”里。

新建、复制结构、Canbox 新导入的项目默认按日期自动推进;备份恢复与旧项目保留原模式。没有 progressionMode 的项目继续手动确认,不会因升级批量结束。项目管理中的“推进方式 / 时区”可预览再切换。

  • 项目日期未开始:未开始;开始日至结束日(含全天):进行中;结束日完整过去后:按计划结束。
  • 按计划结束只是日程推定,不等于拍摄、验收或发布实际完成。实际确认仍可在节点“更多”中操作,界面和只读看板明确区分这两种结束来源。
  • 多段拍摄以最后一段结束日为准,段间空档显示等待下一拍摄段。无日期不会自动结束,也不视为排期未完成。
  • 延期 / 暂停入口支持具体新日期、延期日期待定、暂停、等待反馈。后三种停止自动推进,原日期保留为“原计划”参考,不会推算新的日期。
  • 具体改期只修改当前节点、撤回该节点人工完成并恢复推进;最后结束日不能早于项目的今天。过期节点恢复推进时需先设置新日期。普通日期编辑不会擅自清除暂停或等待状态。
  • “不适用”不计入进度或日历,恢复适用可找回原日期;直接重新安排日期也恢复适用。日期撤销不回退随后人工设置的暂停 / 等待状态。
  • 项目不会自动归档;即使所有已安排节点按计划结束,也保持在项目列表中,直到手动标记项目完成。
  • 默认项目时区 Asia/Shanghai,可改为其他内置时区。显示使用服务器校时与项目时区;工作台每 30 秒、看板每 60 秒刷新,并在回到前台更新。关闭页面不影响下次打开时的日期推算。
  • 日期自动推进是只读计算,不写入 done、不修改原日期、不产生自动保存竞争。服务器系统时间仍须保持准确。若实际延期但未人工记录,系统只能继续显示按计划结束,不能自动识别现实中的延误。

对外只读分享

未设置密码时仍兼容原来的本地部署,但这不是权限隔离:知道服务地址的人仍能访问工作台。不要将无密码实例直接暴露到公网。

在 Compose 所在目录的本地 .env 中设置两个不同的强密码,然后重新创建容器:

POCKET_OS_PASSWORD=替换为独立的管理密码
POCKET_OS_VIEW_PASSWORD=替换为不同的查看密码
docker compose up -d pocket-os

只分享 /view 地址与查看密码,不分享管理密码。浏览器登录用户名可任意填写,权限由密码区分;测试查看身份请使用无痕窗口或另一浏览器,避免复用已缓存的管理登录。公网访问必须通过 HTTPS。查看密码能够查看全部项目的看板字段(含准备事项和日期备注),本版没有按客户/项目分别授权。修改查看密码并重建容器即可撤销旧密码;已被读取或下载的内容无法收回。

只设置查看密码、未设置管理密码,或两者相同,服务器会拒绝启动。管理端侧栏显示当前访问保护状态。

环境变量

变量 默认值 说明
PORT 8080 服务端口
POCKET_OS_DATA_DIR /app/data 自定义数据目录(测试或非 Docker 部署)
POCKET_OS_PASSWORD 空 管理密码;公网部署必须设置并使用 HTTPS
POCKET_OS_VIEW_PASSWORD 空 独立查看密码;要求同时设置不同的管理密码

数据备份

数据存储在容器内 /app/data/app_state.json 和 /app/data/topics/*.json,通过 Docker Volume 映射到宿主机。

场景 数据安全
重启容器 ✅
删除容器 ✅(数据在 Volume 中)
升级镜像 ✅
换设备访问 ✅(同局域网)

也可在界面中使用「导出备份」功能下载 JSON 文件。「导入恢复」会完整替换服务器上的现有选题,操作前会二次确认。

飞书候选收件箱和 Agent 凭证摘要存放在 Volume 的 integrations/,不包含在界面的选题 JSON 备份中。迁移完整部署时请停服备份整个 Volume;管理密码仍从部署环境配置。选题 JSON 恢复不会恢复收件箱或撤销已处理记录,详见 飞书接入与备份边界。

版本规则

  • 当前版本:1.9.10
  • 后续修复版本每次增加 0.0.1,例如 1.9.9 → 1.9.10 → 1.9.11

检查与发布

运行 npm ci && npm run check,测试自动使用临时数据目录,不操作现有 data/。GitHub Actions 与 Docker 双架构构建均执行回归检查。镜像构建只复制代码、静态资源和测试,不包含本地数据或 .env。

许可证

MIT

About

面向内容创作者的自托管排期系统,支持独立工序、甘特图、历史恢复及 Canbox / 飞书项目导入。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages