Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

标注脚本中心

用于维护 Chrome / Edge 标注辅助扩展、统一 Node.js 后端,以及四个平台的稳定页面与 Network 参考资料。

当前正式版本为 1.2.0;本仓库维护四个平台的六个脚本。AI 结果默认用于人工辅助;任务流转例外包括台州话 mark-v3 与两类检查包中由用户显式启动的原生“押后”,以及数加加泸州话脚本由用户持久开启、受绝对目标序号限制的原生“提交进入下一条”。两者均不直接调用平台写接口。

首次安装或重置设置时,六个脚本全部默认关闭,必须由使用者在脚本中心显式启用;已有安装中明确保存的启停状态继续保留。

项目定位

项目 当前入口
扩展运行时 extension/
Vue Options 源码 frontend/options-app/
平台资料与脚本后端 platform-resources/
统一后端入口 platform-resources/backend/server.js
自动化测试 tests/
ZIP 打包脚本 scripts/package-extension-zip.js
当前版本来源 extension/manifest.json

当前脚本

平台 脚本 脚本 ID 主要能力
DataBaker CVPC 柳州话脚本 dataBakerCvpcLiuzhouAssistant 音频获取、两阶段 AI、分段建议、批量识别、字段辅助写入
ByteDance AIDP 苏州话脚本 bytedanceAidpSuzhouHelper 分段建议、两阶段 AI、行内/批量识别、暂存写回
ByteDance AIDP 金华话脚本 bytedanceAidpJinhuaHelper 单次 Omni 可编辑转写 Prompt、分段建议、行内/批量识别
ByteDance AIDP 台州话脚本 bytedanceAidpTaizhouHelper 原始听音直填诊断、完整题目录音导入、返修当前页批量导入与审核结果人工回填、显式启动的自动押后
Magic Data 杭州话脚本 magicDataHangzhouAssistant AI 质检、单双模型方案、词表参考、结果填入与快捷键
数加加 泸州话脚本 shujiajiaLuzhouHelper 零分段整段划分、单阶段 AI 识别、严格填入与目标序号全自动提交

ByteDance AIDP 的苏州话、金华话与台州话三套脚本互斥启用;关闭当前脚本时不会自动启用另一个脚本。

台州话 Options“基础设置”可填写录音平台可见任务编号(例如 T000001)。只有该值同时存在于服务器私密配置 allowedTaskCodes 时,mark-v3 详情页与检查包路由 /management/task-v2/{taskId}/scan-v3/{nodeId}/{itemId}、/management/task-v2/{taskId}/mark-package/{packageId}/{nodeId}?itemID={itemId} 才可导入当前完整题目;当前 nodeId 仅白名单 14、17,不表示任意节点开放。mark-v3 使用同题、未过期的 Search Item;检查包同样优先使用 Search Item,缺失时才回退同题、未过期的 GetWorkItem/Receive,并且只提取 asr_text、audio、video。扩展只把参考文字及公网 HTTPS 音视频 URL 交给脚本中心,由后端固定绑定 BYTEDANCE_AIDP + ItemID 后转发,不下载媒体、不接收机器 API Key,也不传递 AIDP Cookie、Authorization 或 Session。人工再次点击“添加数据”时,脚本中心会核验旧映射;录音平台明确返回 TASK_ITEM_NOT_FOUND 才轮换幂等操作键并重新创建,其他查询故障保留映射。

上述三类台州话页面均支持必须由用户点击“开始”的“全自动导入并押后”:只在当前页面类型、任务与检查包范围内连续处理,范围变化立即停止;仅当录音结果为 AVAILABLE(待领取)或 SUBMITTED(待审核领取)时操作页面真实“押后”控件并填写原因 1,永不点击“提交”、领取或直接调用 AIDP 写接口。每次自动点击前都要等待页面 fetch/XHR 全部结算并静默 1 秒,20 秒未满足即停止。刷新页面、重载扩展或用户停止也会结束流程。检查包仍禁止文本写回、分段修改、暂存、提交、领取和扩展直接切题;页面进入、结果查询和手动刷新仍只读。完整边界见录音任务平台接入规范。

台州话返修列表 /management/task-v2/{taskId}/node/14/revise?page={page} 可逐条串行添加当前已加载的最多 10 条数据,并提供停止和成功、复用、跳过、失败统计;不会翻页。返修详情 /management/task-v2/{taskId}/modify-v2/4/{itemId} 支持当前题添加、刷新结果,并仅在 COMPLETED、ItemID 一致且页面只有一个可写转写框时,由用户点击“填入审核结果”换行追加文本。返修不提供自动押后,不会自动暂存、审核、切题或调用 AIDP 写接口。

前置环境

本地开发至少需要:

  • Node.js 与 npm
  • Python 3(CVPC 画段、可选的 Python AI provider)
  • Chrome 或 Edge
  • Windows PowerShell;Linux/macOS 打包时需要系统 zip / unzip

服务器运行建议准备:

  • Node.js
  • Python 3、venv 与 pip
  • PM2
  • Nginx
  • HTTPS 证书
  • 忽略提交的 config/env/backend.env 与 config/env/ai.env

安装 Options 开发依赖:

npm --prefix frontend/options-app install

根目录 package.json 只提供统一测试命令,不需要执行根级依赖安装。

快速开始

1. 构建 Options

在仓库根目录执行:

node scripts/build-options-app.js

构建结果写入 extension/options/。修改 frontend/options-app/ 后,需要重新执行该命令再加载扩展。

2. 加载本地扩展

Chrome:

  1. 打开 chrome://extensions/。
  2. 开启“开发者模式”。
  3. 点击“加载已解压的扩展程序”。
  4. 选择 C:\Projects\annotation-script-center\extension。

Edge:

  1. 打开 edge://extensions/。
  2. 开启“开发人员模式”。
  3. 点击“加载解压缩的扩展”。
  4. 选择 C:\Projects\annotation-script-center\extension。

扩展重新加载后,已经打开的业务页可能出现 Extension context invalidated。这是旧扩展上下文失效,需要刷新业务页面后再验证。

3. 配置本地后端

复制公开模板:

Copy-Item config/env/backend.env.example config/env/backend.env
Copy-Item config/env/ai.env.example config/env/ai.env

然后在本机填写:

  • config/env/backend.env:管理员密码哈希、管理员 JWT 密钥,以及可选的 AI 日志下载独立凭据。
  • config/env/ai.env:确实需要覆盖的非密钥 AI 参数。
  • config/secrets/dashscope-key.env:唯一的 DashScope 密钥文件,只保存一行 DASHSCOPE_API_KEY=...。

上述私有文件均被 Git 忽略。AI provider 严格只读取 dashscope-key.env,不会回退 config/env/ai.env、进程环境变量或旧双密钥文件。服务器迁移时先创建该文件并限制权限,部署、重启并确认 AI 调用成功后,再由服务器管理员自行删除两个旧 Key 文件、活动状态 JSON 和 PM2/系统环境中的旧变量;不要把真实值复制到 README、日志、测试或提交中。

4. 创建本地 Python 环境

CVPC 画段会调用后端 Python 音频分析脚本;Fun-ASR 或 Qwen 选择 Python provider 时也复用同一个虚拟环境。该环境固定放在 platform-resources/backend/.venv,并已被 Git 忽略。

Windows PowerShell:

Set-Location platform-resources/backend
py -m venv .venv
.venv\Scripts\python.exe -m pip install --upgrade pip
.venv\Scripts\python.exe -m pip install -r ai\python\requirements.txt
.venv\Scripts\python.exe -c "import dashscope, opencc, miniaudio; print('Python dependencies OK')"
Set-Location ../..

如果系统没有 py 命令,可以把第一条创建命令改为 python -m venv .venv。不要提交 .venv/。

5. 启动统一后端

node platform-resources/backend/server.js

默认监听:

http://127.0.0.1:3333

扩展 Options 支持两套后端根地址:

  • Server:默认 https://annotation-script-center.xiangtianzhen.store
  • Local:默认 http://127.0.0.1:3333

开发与验证

在仓库根目录运行全部测试:

npm test

按分区执行:

npm run test:frontend
npm run test:runtime
npm run test:extension
npm run test:backend
npm run test:release

常用完整检查:

npm test
node scripts/build-options-app.js
node --check scripts/package-extension-zip.js
git diff --check

长期测试统一位于 tests/。生产目录不放置 *.test.* 或 *.spec.*。

ZIP 打包与安装

在仓库根目录执行:

node scripts/package-extension-zip.js

该命令会:

  1. 重新构建 Vue Options。
  2. 保留 dist/ 中的历史版本 ZIP;仅覆盖当前版本的同名 ZIP。
  3. 打包完整 extension/。
  4. 统一 ZIP 包内路径为标准 / 分隔符。
  5. 校验 ZIP 非空、根目录包含 manifest.json,且 manifest 引用的所有脚本均已打入 ZIP。
  6. 生成 dist/annotation-script-center-v1.2.0.zip,不删除已有历史版本包。

安装 ZIP:

  1. 解压 ZIP 到独立目录。
  2. 打开 Chrome / Edge 扩展管理页。
  3. 开启开发者模式。
  4. 选择“加载已解压的扩展程序”。
  5. 选择解压后的扩展根目录,而不是 ZIP 文件本身。

ZIP 同时会以标准路径格式接受目标 Edge 版本的拖拽导入验收;“解压后加载”仍是项目保留的标准安装方式。

服务器部署

以下示例假设仓库位于 /var/www/annotation-script-center,后端仍只监听 127.0.0.1:3333。

Python 环境

首次部署时,在启动 PM2 前创建统一虚拟环境并安装依赖:

cd /var/www/annotation-script-center/platform-resources/backend
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -r ai/python/requirements.txt
.venv/bin/python -c "import dashscope, opencc, miniaudio; print('Python dependencies OK')"
cd /var/www/annotation-script-center

如果 python3 -m venv .venv 提示缺少 venv,先按服务器发行版安装 Python 3 的 venv 与 pip 软件包,再重新执行。后端会自动识别 .venv/bin/python;无需激活虚拟环境,也不需要修改 PM2 的 Node.js 启动命令。

PM2 启动

cd /var/www/annotation-script-center
pm2 start platform-resources/backend/server.js \
  --name annotation-script-center \
  --cwd /var/www/annotation-script-center \
  --time
pm2 save
pm2 status annotation-script-center

需要开机自启时执行 pm2 startup,再执行该命令输出的系统级命令,最后重新执行 pm2 save。

Nginx 示例

server {
    listen 80;
    listen [::]:80;
    server_name annotation-script-center.xiangtianzhen.store;

    client_max_body_size 100m;

    location = / {
        default_type text/plain;
        return 200 "annotation-script-center\n";
    }

    location /downloads/ {
        alias /var/www/annotation-script-center/dist/;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        add_header Access-Control-Allow-Origin * always;
        add_header Cache-Control "public, max-age=300" always;
        types { application/zip zip; }
        default_type application/octet-stream;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3333;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;
    }
}

配置完成后先检查再重载:

sudo nginx -t
sudo systemctl reload nginx

HTTPS 由服务器证书工具与 Nginx 配置维护;证书和私钥不得进入仓库。

服务器更新

cd /var/www/annotation-script-center
git status --short
git pull --ff-only origin main
platform-resources/backend/.venv/bin/python -m pip install -r platform-resources/backend/ai/python/requirements.txt
pm2 restart annotation-script-center --update-env
pm2 status annotation-script-center

如果 git status --short 显示未知修改,先停止更新,不要覆盖服务器私密配置。重复安装 requirements 是幂等的;依赖没有变化时,pip 会直接复用已安装版本。

基础检查

curl -fsS http://127.0.0.1:3333/api/data-baker-cvpc/liuzhou-helper/ai/recommend/health
curl -fsS https://annotation-script-center.xiangtianzhen.store/api/magic-data/hangzhou-helper/ai/defaults
curl -I https://annotation-script-center.xiangtianzhen.store/downloads/
platform-resources/backend/.venv/bin/python -c "import dashscope, opencc, miniaudio; print('Python dependencies OK')"
pm2 logs annotation-script-center --lines 100

目录导航

目录 职责
extension/ Manifest V3 扩展成品、popup、Options 与六脚本运行时
frontend/options-app/ Vue Options 源码与 SCSS
platform-resources/ 平台资料、页面结构、Network 参考与脚本后端
platform-resources/backend/ 统一后端、管理员能力、公共 AI 与路由注册
config/ 环境模板、模型价格和本地私密配置说明
scripts/ Options 构建、ZIP 打包和本地工具
tests/ frontend、runtime、extension、backend、release 测试
docs/ 平台索引和外部官方文档入口
dist/ 当前版本与历史版本 ZIP 产物

文档入口

安全与行为边界

  • 不提交 API Key、管理员密码、JWT、cookie、authorization、签名 URL、完整音频 URL 或真实业务数据。
  • AI 建议默认只供人工确认,不自动领取、自动审核或自动流转。
  • Options 保存不会触发业务页保存、提交或切题。
  • 批量能力只作用于当前页、当前任务或当前音频,并保留停止与失败统计。
  • 页面写入遵守各脚本 README 的契约,不绕过平台原生 disabled / readonly 限制。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages