Bỏ qua nội dung chính
DocsChạyChia sẻ đồ hoạ công cộng

Chia sẻ đồ hoạ công cộng

Xuất bản .md / .html / .xlsx sản phẩm dạng liên kết ngắn không cần thiết đăng nhập. Slack/mail chỉ gửi liên kết nhưng không phải tập tin; hỗ trợ TTL / mật khẩu / số tải về / xem thử online.

Nếu luồng công việc của bạn tạo ra một báo cáo (.md / .hml / .xlsx / .pdf) và muốn gửi nó cho người khác, cách trực tiếp nhất là để cho Mô- đun Slack/mail tải lên tập tin đính kèm. Nhưng các tập tin lớn sẽ chậm chạp, và các nền tảng tin nhắn thường có giới hạn về kích cỡ của một tập tin duy nhất và số đính kèm.

Chia sẻ đồ hoạ công cộng là một đường dẫn khác: xuất một hiện vật đơn lẻ như liên kết ngắn HTTPS không đăng nhập, gửi chỉ liên kết trong một thông điệp, và nó mở ra ngay — tập tin này ở lại trên máy phục vụ, mà tiết kiệm băng thông qua và cho phép xem thử trình duyệt trực tiếp (d). Để chia sẻ một số tập tin cùng một lúc, bạn cũng có thể công bố toàn bộ một thư mục đồ họa như một liên kết; xem "Những liên kết công cộng cấp cao".

Khi nào dùng

  • Báo cáo/dashboards cần được gửi đến Slack/Feisu/mail, và tôi không muốn mọi người tiết kiệm được 3MB xlsx cho mỗi người.
  • Cần cho cộng tác viên bên ngoài (không có tài khoản nền tảng) xem ảnh chụp dữ liệu app store
  • Chia sẻ tạm một bản kết luận .md cho khách hàng, muốn họ xem HTML ngay trên trình duyệt điện thoại
  • Muốn liên kết có thời hạn / giới hạn số lần tải / bảo vệ bằng mật khẩu

Cách dùng — tạo từ giao diện

  1. Mở một execution đã chạy xong, chuyển sang tab Sản phẩm, cạnh mỗi sản phẩm có nút 🔗 Chia sẻ
  2. Bấm 🔗 Chia sẻ để mở hộp thoại chia sẻ
  3. Cấu hình khi cần thiết:
    • Phạm vi truy cập: công cộng (mặc định) / mật khẩu / nhóm / nhóm / chỉ định thành viên; xem « Phạm vi cơ hội và yêu cầu truy cập » bên dưới
    • Bạn có nhớ sự lựa chọn cuối cùng của bạn không
    • Giới hạn lượt tải: 0 = không giới hạn, >0 = dùng hết thì liên kết tự mất hiệu lực
    • Mật khẩu truy cập (hệ thống mật khẩu): bộ duyệt nhắc mật khẩu khi mở liên kết
    • Kết xuất HTML trực tuyến (chỉ .md): khi chọn, liên kết hiển thị HTML đã dàn trang thay vì tải tệp nguồn .md
  4. Hãy nhấn vào « Kết nối dân tộc » nhận được một địa chỉ Mạng như httpsbroidrun.com/a/hN2kQ9..., sau đó nhấn "Copy" và dán nó ở bất cứ đâu

Cách dùng — tự động xuất bản trong workflow (khuyến nghị)

Sau khi workflow được thực hiện, sản phẩm được tự động chuyển thành một liên kết công cộng, và sau đó liên kết được tự động đẩy đến Slack - không có cú nhấn bằng tay để chia sẻ trong toàn bộ quá trình.

Bố Cục ba bước điển hình

  1. Bước tạo sản phẩm viết như bình thường, không cần đánh dấu đặc biệt — ví dụ:
    - step: build_report
      agent: reporter
      input: |
        生成今天的业务报表,写入 /tmp/.../daily.md。
      # 这一步完成后,引擎自动注册一个产物(execution 的 artifacts 列表里会出现)
  2. Nối module artifact publish tích hợp, truyền tên bước trước `from_step: build_report`. Module sẽ tự tra danh sách sản phẩm của execution, tìm tệp do bước đó tạo và tạo liên kết công khai:
    - step: share_report
      sub_workflow:
        name: dingyue-module-artifact-publish
        inputs:
          from_step: "build_report"          # ← 唯一必需字段:引用上一步的步骤名
          ttl_minutes: "0"                   # 永不过期;如需限时可改成分钟数
          render_markdown_as_html: "true"    # .md 直接在线 HTML 预览
        # base_url / api_token 不用填 —— 引擎自动注入运行时访问令牌
        outputs:
          share_url: public_url              # 下游可以用 {{var:share_url}} 引用
      depends_on: [build_report]
  3. Nối tiếp một module gửi Slack tích hợp, truyền public_url vào → Slack chỉ nhận một tin nhắn văn bản kèm liên kết, không tải tệp lên:
    - step: notify
      sub_workflow:
        name: dingyue-module-slack-deliver
        inputs:
          slack_webhook_url: "{{var:slack_webhook_url}}"
          message_text: "📊 今日报表已生成"
          public_url: "{{var:share_url}}"   # ← 复用 share_report 的输出
      depends_on: [share_report]

Nhiều sản phẩm thì sao

Nếu bước build_report tạo nhiều tệp (ví dụ vừa ghi daily.md vừa ghi metrics.json), lọc bằng artifact_name:

- step: share_report
  sub_workflow:
    name: dingyue-module-artifact-publish
    inputs:
      from_step: "build_report"
      artifact_name: "daily.md"            # ← 精确挑选
      ttl_minutes: "0"
    outputs:
      share_url: public_url

Không có artifact_name thì module lấy sản phẩm khớp đầu tiên và ghi log cho biết còn bao nhiêu cái chưa dùng.

Liên kết công cộng cấp thư mục: một URL để chia sẻ toàn bộ thư mục đồ họa

Một liên kết đơn tập tin chỉ có thể chia sẻ một hiện vật cùng một lúc. Nếu một thực hiện tạo ra một tập tin (một báo cáo + dữ liệu + hình ảnh, hoặc thậm chí một trang tĩnh nguyên, bạn có thể xuất bản toàn bộ thư mục đồ họa như một liên kết:

  • Mục nhập UI: trên các chi tiết thực hiện "Artify" tab, hãy nhấn "Shaure all pieces" để tạo một liên kết thư mục bao gồm tất cả các đồ tạo tác của thực hiện này; các tùy chọn (các tùy chọn trong phạm vi / đời / cuối / chức năng tải xuống / mật khẩu / dịch trực tuyến) cũng giống như một tập tin riêng lẻ, thêm vào đó bạn có thể đặt một tên hiển thị riêng
  • ADI cũng có thể chia sẻ các hiện vật của một bước. Để chia sẻ toàn bộ cuộc đua: POST /api/executions/{id}/directory-public-link; để chia sẻ một bước: POST /api/executions/{id}/steps/{stepName}/directory-public-link
  • Liên kết trông giống như https vội vàngrun.com/p/d/hN2kQ9... /, và khách truy cập không cần tài khoản (trong chế độ công cộng)

Những gì du khách nhìn thấy

  • Theo mặc định, một trang liệt kê tập tin: tên tập tin, kích cỡ và gõ, cộng với chỉ tiêu thời gian của liên kết và tải về
  • Khi có một chỉ số. html tại gốc thư mục, nó mở ra như một nơi tĩnh — một báo cáo HTML nhiều trang được tạo ra bởi một luồng công việc có thể được chia sẻ như một trang web; thêm vào danh sách?list=1 vào địa chỉ URL để ép buộc trở lại xem danh sách tập tin
  • Khi vẽ trực tuyến, các tập tin .md trong thư mục sẽ được hiển thị dạng HTML có định dạng
  • Tập tin trong thư mục luôn luôn được chuyển tiếp bởi nền tảng với nội dung chính xác (không phải qua hệ thống 302 chuyển hướng tới vật chứa), để trình duyệt có thể làm HTML / CN / JS đúng cách
  • Chỉ tiêu tải về tích lũy trên toàn thư mục, và liên kết sẽ tự động hết hạn sử dụng khi nó được sử dụng

Tên

Liên kết đơn và liên kết thư mục chia sẻ cùng một tập hợp các phạm vi truy cập:

chế độAi có thể mở nó
PUBLIC chungBất cứ ai có liên kết
PASSWORD Quyền truy cập mật khẩuBất cứ ai có liên kết biết mật khẩu; trình duyệt gợi ý cho nó, và các trình khách văn lệnh sử dụng các tác quyền: cơ bản hay chức năng X-Atific-c chạy đầu từ
TEAM trong độiYêu cầu một tài khoản đã ký trong Braidrun thuộc về đội nhất định
USERS Thành viên được thiết kếYêu cầu đăng nhập và có trong danh sách thành viên; danh sách này chỉ có thể được chọn từ các thành viên của nhóm được chọn

Trong chế độ nhóm hay chế độ bổ sung đã xác định, liên kết sẽ trở thành một "dấu nối sâu được yêu cầu: truy cập nó trong khi ký kết nối ra; ký tên vào nhưng không có trong danh sách cho thấy trang "không truy cập".

Tên

  1. Khi tạo liên kết, kiểm tra "Tất cả những người dùng đã ký tên để gửi một yêu cầu khi họ không có quyền truy cập"
  2. Một khách truy cập mà không có truy cập mở liên kết, điền vào dạng yêu cầu trên trang "không truy cập" (một ghi chú có thể được gắn vào); gửi lại yêu cầu gốc
  3. Người chia sẻ hoặc quản trị liên kết chấp nhận / từ chối dưới "Ac Count chia sẻ chia sẻ", trước khi chấp thuận, xác nhận người đã thuộc về nhóm đã chọn
  4. Một khi được chấp nhận, người được thêm vào danh sách truy cập và có thể mở liên kết gốc trực tiếp

Đang quản lý liên kết thư mục

  • "Ac Count chia sẻ quản lý" quản lý một tập tin và liên kết thư mục với nhau: thay đổi phạm vi truy cập, thay đổi thời gian, thu hồi, và xem số lượng truy cập và bản ghi truy cập (thời gian, danh tính tài khoản, IP, người dùng-Agent)
  • Một hệ thống quản lý tương ứng là: GET /api/directory-public-links · PATCH /api/directory-public-links/{token} · DELETE /api/directory-public-links/{token}
  • Người tạo ra là người quản trị liên kết theo mặc định và có thể chỉ ra các nhà quản trị bổ sung để đồng xử lý các yêu cầu truy cập và sửa đổi

Các phương pháp chia sẻ được hỗ trợ

Triển khaiHỗ trợMô tả
Một máy + đĩa cục bộNền tảng trực tiếp trả lại nội dung tập tin
Nhiều nút + đĩa cục bộ⚠️ Không khuyến nghịYêu cầu có thể trúng nút không có tập tin 410 biến mất. Người ta đề nghị dùng vật thể lưu trữ.
Bất kỳ số nút và kho đối tượng✅ Khuyên302 đến liên kết chữ ký tạm thời (10 phút TTL, chữ ký mới cho mỗi lần thăm), nền tảng không chuyển tiếp tập tin

Bảng bên trên là cho liên kết một tập tin; liên kết thư mục luôn luôn có nền tảng phía trước dòng tập tin, vì vậy họ làm việc trong bất kỳ dạng triển khai nào.

Bảo mật và tuân thủ

  • Token không thể liệt kê —— SecureRandom 24 byte → base62 ≈ 143 bit entropy; quét vét cạn là bất khả thi
  • Chống lập chỉ mục bởi bot —— Header phản hồi X-Robots-Tag: noindex, nofollow + Referrer-Policy: no-referrer; Google/Bing sẽ không lập chỉ mục liên kết
  • Giới hạn tốc độ —— Lớp cổng: 10 lần một giây cho cùng IP, 20 lần bùng nổ; lớp dịch vụ: giới hạn khó dựa trên lượng tải xuống tối đa của bảng hiệu
  • Bảo vệ bằng mật khẩu (tùy chọn) —— Argon2id thực hiện; các gợi ý trình duyệt về truy cập, và các ứng dụng khách văn lệnh sử dụng các tác quyền: cơ bản hoặc chức năng X-Artifact-Clower. Mật khẩu không được đặt trong chuỗi truy vấn URL, để giữ nó ngoài bản ghi truy cập
  • Nhật ký kiểm toán —— Mỗi lần tạo / truy cập / thu hồi đều ghi một audit_log gồm IP máy khách + User-Agent + dấu thời gian
  • Tương thích GDPR —— Xóa tài khoản sẽ tự động dọn mọi liên kết theo tầng; khi xuất dữ liệu, artifact_public_links.jsonl được đóng vào ZIP
  • Thu hồi tức thì —— Bấm "Thu hồi" ở trang quản lý chia sẻ có hiệu lực ngay; liên kết bị thu hồi trả về 410 Gone (không phải 404, để tránh nhầm với "không tồn tại")

Quản lý liên kết đã chia sẻ

Vào "Tài khoản → Quản lý chia sẻ" (hoặc gọi trực tiếp GET /api/public-links) để xem mọi liên kết bạn đã tạo, số lượt truy cập, trạng thái thu hồi. Bấm nút thu hồi thì liên kết mất hiệu lực ngay.

FAQ

H: VÌ Sao mở liên kết lại thấy 410 Gone?

  • Liên kết đã hết hạn (hết thời gian hiệu lực)
  • Liên kết đã bị người tạo hoặc quản trị viên thu hồi
  • Số lượng tải về đã đạt giới hạn (các liên kết tự động hết hạn khi hạn ngạch được sử dụng)
  • Mật khẩu là sai (trước khi bạn nhập một, bạn sẽ thấy dấu nhắc mật khẩu của trình duyệt thay vì một chiếc số 410)

H: TÔI có thể tạo liên kết không bao giờ hết hạn không?

Được, nhưng giao diện sẽ hỏi xác nhận lần hai — liên kết vĩnh viễn nghĩa là trừ khi bạn thu hồi thủ công, ai có liên kết cũng truy cập được mãi mãi, hãy thận trọng. Quản trị viên có thể tắt liên kết vĩnh viễn toàn cục bằng BRAIDRUN_PUBLIC_LINK_REJECT_PERMANENT=true.

H: liên kết có bị công cụ tìm kiếm lập chỉ mục không?

Không. Header phản hồi buộc noindex, nofollow, tầng nginx còn bổ sung một lớp nữa. Nhưng nếu bạn dán liên kết lên trang web công khai, bot bên ngoài vẫn có thể phát hiện URL — vì vậy đừng bao giờ công khai các liên kết này trong GitHub README hay bài blog.

H: kích thước tệp bao nhiêu là phù hợp?

Trong chế độ lưu trữ đối tượng: lý thuyết không giới hạn; thực sự giới hạn bởi thời hạn trình duyệt của người dùng (thường là 10 MB). Trong chế độ ổ đĩa cục bộ: bị hạn chế bởi tốc độ đọc tập tin nền tảng, không nên vượt quá 100MB.

H: NẾU tôi xóa execution của sản phẩm, liên kết cũ còn dùng được không?

Không. Khi xóa execution, hệ thống thu hồi theo tầng mọi liên kết trỏ đến execution đó; các lượt truy cập sau trả về 410 Gone.

H: tính năng này có bật mặc định không?

Cần quản trị viên bật rõ ràng qua biến môi trường BRAIDRUN_PUBLIC_BASE_URL; chưa bật thì giao diện không hiển thị nút chia sẻ. Xem tài liệu vận hành PRODUCTION_GUIDE §2.4.