专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

unillett/variance-input Docker 镜像 - 轩辕镜像

variance-input
unillett/variance-input
Text comparison tool for different published versions of a work with an administration backend
0 次下载
⏱️ 镜像拉取更稳定,部署项目不再心跳加速
镜像简介版本下载
⏱️ 镜像拉取更稳定,部署项目不再心跳加速

Variance & Medite Integration

This project automates and provides an admin UI to produce the legacy Variance publish files. Editors can upload textual versions, generate Medite comparisons, manage facsimiles, and assemble the published asset bundle with pagination markers derived from _lignes files. In practice this means:

  • One place to manage versions, _lignes, facsimiles, and comparison manifests.
  • Automatic Medite runs with pagination injection feedback per role.
  • A single “Export” action that delivers the legacy-ready bundle (comparison + manifest-selected facsimiles only).

The project is split into:

  • Laravel – Admin UI, API, job queue, pagination services.
  • Medite (Flask + Celery) – Runs the alignment engine and produces TEI/XHTML comparison outputs.
  • Variance web (legacy PHP) – Public-facing viewer that consumes the assets prepared by the admin app.
  • variance-proxy (Nginx) – Unified entry point on http://localhost:8080 to reach Laravel (/admin), legacy Variance (/), and Medite endpoints from a single port.

Detailed documentation: descr/architecture.md, descr/workflow.md, descr/facsimiles.md, descr/queues_jobs.md, descr/api_endpoints.md, descr/deployment_notes.md.


Quick Start

  1. Clone & Boot

    bash
    git clone [***]
    cd variance-input
    docker compose up -d --build
    

    This brings up:

    • laravel (admin web app at http://localhost:8080/admin via the proxy)
    • medite (Flask API on http://localhost:5000)
    • laravel-queue (queue worker for pagination & facsimile jobs)
    • Supporting services (MariaDB, Redis, Nginx proxy, legacy PHP site)
  2. Environment

    • laravel/.env is committed for development; tweak DB or queue settings if needed.
    • The queue worker already runs php artisan queue:work --queue=facsimiles,page-markers, so pagination and facsimile jobs are processed automatically.
  3. Initial setup (first run)

    bash
    docker compose exec laravel php artisan migrate
    docker compose exec laravel php artisan db:seed   # optional fixtures
    

Daily Workflow

  • Upload version – “Téléverser une version” in the Versions card generates the TEI container under storage/app/public/uploads/versions/.

  • Attach pagination (_lignes) – Drop the _lignes text file; the queue produces storage/app/private/pagination/{version}.json sidecars that describe every pagination marker.

  • Import & curate facsimiles – Upload batches of images (optional) and use the Fac-similés manifest manager to choose which files belong to each comparison (JSON manifests stay in sync with the comparisons table pills).

  • Run Medite – Launch a comparison from the Comparaisons card. Medite writes its XHTML/TEI components to storage/app/public/uploads/{author}/{work}/comparisons/{id}.

  • Inject pagination – Use “Injecter la pagination” per role (source/target) to merge the _lignes markers into the Medite XHTML files.

  • Export legacy bundle – Click “Exporter” to download a zip containing the published comparison folder plus only the facsimiles referenced in the JSON manifests (source/target).

  • Publish – Optional. Keep the comparison synced to the legacy public tree via the “Publier” toggle.


Useful Commands

PurposeCommand
Tail Laravel queue logsdocker compose logs -f laravel-queue
Run queue worker manuallydocker compose exec laravel php artisan queue:work --queue=page-markers --stop-when-empty
Artisan shelldocker compose exec laravel php artisan tinker
Composer install (Laravel)docker compose exec laravel composer install
NPM build (if needed)docker compose exec laravel npm run build

Project Structure (abridged)

├── docker-compose.yml
├── descr/                    # Developer documentation (not committed)
├── laravel/                  # Admin application (PHP/Laravel)
│   ├── app/
│   ├── routes/
│   └── ...
├── medite/                   # Flask + Celery Medite runner
│   └── app/variance/...
├── variance/                 # Legacy PHP frontend (read-only in dev)
└── variance_data/            # Runtime uploads & generated outputs

Full Pipeline

  1. Upload a version (Versions card)

    • Accepts .txt files (≤ 8 MB, text/plain).
    • VersionController::store normalises text (UTF‑8, whitespace collapse), inserts <lb/>, wraps it in a TEI skeleton, and writes both the raw text and TEI XML to storage/app/public/uploads/versions/{base}.{txt,xml} (with public mirrors under public/uploads/...).
    • A versions row is created with the generated folder slug.
  2. Upload _lignes

    • Raw file saved to storage/app/private/lignes/{version_id}.txt.
    • ApplyLignesJob parses the _lignes entries, matches them against the TEI text, and stores a pagination sidecar JSON at storage/app/private/pagination/{version_id}.json containing { char_index, page, image_code, phrase, context }.
    • Version-level progress is tracked in storage/app/tmp/pager/{version_id}.json so the UI shows when the sidecar is ready.
  3. Curate facsimiles & manifests

    • Upload image batches via the facsimile carousel; jobs normalise the originals (img_*) and generate thumbnails.
    • The manifest manager lists every comparison (source/target). Selecting a comparison highlights the images currently published in its JSON manifest.
    • Changes are written back to storage/app/public/uploads/{author}/{work}/{version}/images_{role}_{author--work--comparison}.json and reflected immediately in the comparisons table (“JSON” pill).
  4. Run Medite

    • Launch from the comparisons table. MediteController::runMedite calls the Flask service which executes the Celery task.
    • Medite writes TEI diff + XHTML components under /app/uploads/{author}/{work}/comparisons/{comparison_id} which Laravel mirrors into storage/app/public/uploads/{author}/{work}/comparisons/{id}.
    • Comparison metadata is stored/updated in the DB.
  5. Inject pagination markers

    • Click “Injecter la pagination”. ComparisonController::applyPageMarkers ensures both versions have sidecars, marks the comparison queued, and dispatches InjectComparisonPaginationJob.
    • The job loads storage/app/private/pagination/{version}.json, injects <span class="page-marker"> tags into source.xhtml / target.xhtml at the recorded offsets, and saves the updated files.
    • Comparison-scoped progress is written to storage/app/tmp/pager/comparisons/{comparison_id}.json; the UI polls this endpoint to show queued → running → done per role (source/target).
  6. Export the legacy bundle

    • “Exporter” generates a zip containing the published comparison directory plus, for each role, only the facsimile images referenced in the manifest JSON (and the manifest itself).
  7. Optional publication

    • Use the “Publier” button to copy comparison artefacts into public/uploads/{author}/{work}/{comparison_folder} for the legacy site.
Background jobs
  • Pagination jobs (ApplyLignesJob, InjectComparisonPaginationJob) run on the page-markers queue; facsimile processing uses the facsimiles queue.
  • laravel-queue container runs
    php artisan queue:work --queue=facsimiles,page-markers.
  • Manual execution:
    docker compose exec laravel php artisan queue:work --queue=page-markers --stop-when-empty.
Artefact cheat sheet
ArtefactLocation
Uploaded TXTstorage/app/public/uploads/versions/{folder}.txt
TEI versionstorage/app/public/uploads/versions/{folder}.xml
_lignes raw filestorage/app/private/lignes/{version_id}.txt
Pagination sidecarstorage/app/private/pagination/{version_id}.json
Facsimile manifest JSONstorage/app/public/uploads/{author}/{work}/{version}/images_{role}_{author--work--comparison}.json
Version progressstorage/app/tmp/pager/{version_id}.json
Comparison progressstorage/app/tmp/pager/comparisons/{comparison_id}.json
Medite outputs (XHTML/TEI)storage/app/public/uploads/{author}/{work}/comparisons/{id}
Published comparison (optional)public/uploads/{author}/{work}/{comparison_folder}
Facsimile images (draft)storage/app/public/uploads/{author}/{work}/{version}/
Exported legacy zipDownloaded on demand via /comparisons/{id}/export

Internals

For deeper dives check:

  • laravel/app/Services/PageMarkerService.php
  • laravel/app/Jobs/ApplyLignesJob.php
  • laravel/app/Jobs/InjectComparisonPaginationJob.php
  • medite/app/flask_app.py

Ownership & License

Variance & Medite Integration is developed by SIER (Service Infrastructure Enseignement et Recherche), part of the Faculty of Arts at the University of Lausanne (<[***]>). Licensing is currently under internal review; this repository is private and no redistribution rights are granted at this stage.

Happy comparing! :)

查看更多 variance-input 相关镜像 →
unillett/training logo
unillett/training
文学院技术技能开发应用的Docker镜像,基于Laravel 12构建并集成Filament管理面板,支持本地开发与生产环境部署,提供完整的开发工具链与管理功能。
10K+ pulls
上次更新:2 天前
unillett/impact logo
unillett/impact
多媒体界面:展示、分析与评论
10K+ pulls
上次更新:2 天前
unillett/catima logo
unillett/catima
基于Rails的应用,用于创建具有灵活模式、集成导航和搜索功能的在线数据库
10K+ pulls
上次更新:2 天前
unillett/dilps-tiresias logo
unillett/dilps-tiresias
Dilps/Tiresias是艺术史和建筑部门的图像数据库,基于GraphQL API和Angular客户端的Web应用,用于图像数据的存储、查询与管理。
10K+ pulls
上次更新:2 天前
unillett/bookstack logo
unillett/bookstack
Bookstack应用的Docker镜像,用于部署和运行Bookstack文档管理系统,支持开发和生产环境配置,提供完整的容器化部署流程和更新机制。
10K+ pulls
上次更新:5 天前

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

登录仓库拉取

通过 Docker 登录认证访问私有仓库

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

Docker Compose

Docker Compose 项目配置

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

MacOS OrbStack

MacOS OrbStack 容器配置

宝塔面板

在宝塔面板一键配置镜像

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

极空间

极空间 NAS 系统配置服务

爱快路由

爱快 iKuai 路由系统配置

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

专属域名拉取

无需登录使用专属域名

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像支持哪些镜像仓库?

专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
unillett/variance-input
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
咨询镜像拉取问题请 提交工单,官方技术交流群:1072982923
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
咨询镜像拉取问题请提交工单,官方技术交流群:
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.