Ця сторінка ще не перекладена українською. Показано англійську версію. Переглянути англійською

Створення пакетів для постачальників

Створення пакетів CAD-файлів з тимчасовими посиланнями для завантаження постачальниками.

Огляд процесу

Вибір файлів
CAD-моделі
Креслення
Специфікації
Організація
Створення структури тек
Застосування конвенції іменування
Завантаження в OSS
Завантаження файлів
Організація за постачальником/PO
Генерація посилань
Створення підписаних URL
Встановлення терміну дії
Доставка
Email-пакет
Сторінка завантаження
Вибір→Організація→Завантаження→Поширення→Доставка

Підхід через CLI

Крок 1: Організація файлів за постачальником

SUPPLIER="acme-corp"
ORDER="PO-2024-001"

# Upload CAD files
raps object upload supplier-packages part.stp --key "suppliers/${SUPPLIER}/${ORDER}/part.stp"
raps object upload supplier-packages drawing.pdf --key "suppliers/${SUPPLIER}/${ORDER}/drawing.pdf"
raps object upload supplier-packages spec.pdf --key "suppliers/${SUPPLIER}/${ORDER}/specification.pdf"

Крок 2: Генерація підписаних URL для завантаження

# Generate temporary download links (valid for 24 hours)
echo "Download Package for ${SUPPLIER} - ${ORDER}"
echo "============================================"
echo "Links valid for 24 hours"
echo ""

for file in part.stp drawing.pdf specification.pdf; do
  URL=$(raps object signed-url supplier-packages "suppliers/${SUPPLIER}/${ORDER}/${file}" --minutes 1440)
  echo "${file}:"
  echo "  ${URL}"
  echo ""
done

Крок 3: Створення маніфесту пакета

# Generate package manifest
echo "# Supplier Package Manifest" > package-manifest.md
echo "" >> package-manifest.md
echo "**Supplier:** ${SUPPLIER}" >> package-manifest.md
echo "**PO Number:** ${ORDER}" >> package-manifest.md
echo "**Generated:** $(date)" >> package-manifest.md
echo "**Expires:** $(date -d '+24 hours')" >> package-manifest.md
echo "" >> package-manifest.md
echo "## Files" >> package-manifest.md
echo "" >> package-manifest.md

raps object list supplier-packages --prefix "suppliers/${SUPPLIER}/${ORDER}/" --output json | \
  jq -r '.[] | "- \(.key | split("/") | .[-1]) (\(.size) bytes)"' >> package-manifest.md

Крок 4: Пакетне створення пакетів

#!/bin/bash
# create-supplier-package.sh

SUPPLIER=$1
ORDER=$2
FILES_DIR=$3

BUCKET="supplier-packages"
PREFIX="suppliers/${SUPPLIER}/${ORDER}"

# Upload all files
for file in "${FILES_DIR}"/*; do
  [ -f "$file" ] || continue
  filename=$(basename "$file")
  raps object upload "$BUCKET" "$file" --key "${PREFIX}/${filename}"
done

# Generate links
echo "Package ready for ${SUPPLIER}"
echo "============================="

raps object list "$BUCKET" --prefix "$PREFIX/" --output json | \
  jq -r '.[].key' | while read key; do
    filename=$(basename "$key")
    url=$(raps object signed-url "$BUCKET" "$key" --minutes 1440)
    echo "${filename}: ${url}"
  done

CI/CD-конвеєр

# .github/workflows/supplier-package.yml
name: Supplier Package Creation

on:
  workflow_dispatch:
    inputs:
      supplier:
        description: 'Supplier name'
        required: true
      po_number:
        description: 'PO number'
        required: true
      files_path:
        description: 'Path to files (glob pattern)'
        required: true
      expiry_hours:
        description: 'Link expiry in hours'
        default: '24'

jobs:
  create-package:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install RAPS
        run: cargo install raps

      - name: Upload package files
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          BUCKET="supplier-packages"
          PREFIX="suppliers/${{ inputs.supplier }}/${{ inputs.po_number }}"

          for file in ${{ inputs.files_path }}; do
            [ -f "$file" ] || continue
            filename=$(basename "$file")
            raps object upload "$BUCKET" "$file" --key "${PREFIX}/${filename}"
            echo "Uploaded: ${filename}"
          done

      - name: Generate download links
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          BUCKET="supplier-packages"
          PREFIX="suppliers/${{ inputs.supplier }}/${{ inputs.po_number }}"
          EXPIRY_MINS=$(( ${{ inputs.expiry_hours }} * 60 ))

          echo "# Supplier Package" > package.md
          echo "" >> package.md
          echo "**Supplier:** ${{ inputs.supplier }}" >> package.md
          echo "**PO:** ${{ inputs.po_number }}" >> package.md
          echo "**Created:** $(date)" >> package.md
          echo "**Expires:** $(date -d '+${{ inputs.expiry_hours }} hours')" >> package.md
          echo "" >> package.md
          echo "## Download Links" >> package.md
          echo "" >> package.md

          raps object list "$BUCKET" --prefix "$PREFIX/" --output json | \
            jq -r '.[].key' | while read key; do
              filename=$(basename "$key")
              url=$(raps object signed-url "$BUCKET" "$key" --minutes $EXPIRY_MINS)
              echo "- [${filename}](${url})" >> package.md
            done

      - name: Upload package manifest
        uses: actions/upload-artifact@v4
        with:
          name: supplier-package-${{ inputs.supplier }}-${{ inputs.po_number }}
          path: package.md

Потік конвеєра

Ручний запуск
постачальник + PO + файли
Завантаження
Завантаження файлів в OSS
Організація за постачальником/PO
Генерація посилань
Створення підписаних URL
Встановлення терміну дії
Пакет
package.md

Інтеграція з MCP

Створення пакета

User: "Create a supplier package for Acme Corp with the bracket files for PO-2024-100"
Користувач
AI-асистент
RAPS MCP
APS Cloud
Користувач
Створити пакет для Acme Corp
AI
Визначення файлів для пакета
цикл: Завантаження файлів
AI
aps_object_upload(bucket, file, key)
MCP
Завантаження
цикл: Генерація посилань
AI
aps_object_signed_url(key, minutes=1440)
MCP
Підписаний URL
AI
Пакет готовий з посиланнями для завантаження

Відповідь AI:

Створено пакет для постачальника Acme Corp - PO-2024-100:

Завантажено файлів: 4 Термін дії посилань: 24 години (16 лют. 2024, 15:00)

Посилання для завантаження:

Ви можете поділитися цими посиланнями безпосередньо з постачальником.

Перевірка статусу пакетів

User: "List all active supplier packages"

Відповідь AI:

Активні пакети для постачальників:

ПостачальникPOФайлиСтвореноТермін дії
Acme CorpPO-2024-100415 лют.16 лют.
Beta MfgPO-2024-098314 лют.15 лют.
Gamma IncPO-2024-095612 лют.Прострочено

Розширені можливості

Інтеграція з електронною поштою

#!/bin/bash
# send-package-email.sh

SUPPLIER=$1
EMAIL=$2
ORDER=$3

# Generate package links
LINKS=$(raps object list supplier-packages --prefix "suppliers/${SUPPLIER}/${ORDER}/" --output json | \
  jq -r '.[].key' | while read key; do
    filename=$(basename "$key")
    url=$(raps object signed-url supplier-packages "$key" --minutes 1440)
    echo "- ${filename}: ${url}"
  done)

# Send email (using mailx or similar)
cat <<EOF | mail -s "Download Package for ${ORDER}" "$EMAIL"
Dear Supplier,

Your requested files for ${ORDER} are ready for download.

Files:
${LINKS}

These links will expire in 24 hours.

Best regards,
Manufacturing Team
EOF

Відстеження пакетів

# Log package creation
echo "$(date),${SUPPLIER},${ORDER},created" >> package-log.csv

# Track downloads (requires webhook setup)
raps webhook create \
  --event "download.complete" \
  --callback "https://myapp.com/track-download" \
  --scope "data:read"

Очищення прострочених пакетів

# Delete packages older than 7 days
CUTOFF=$(date -d '-7 days' +%Y%m%d)

raps object list supplier-packages --prefix "suppliers/" --output json | \
  jq -r '.[] | select(.lastModified < "'"$CUTOFF"'") | .key' | \
  while read key; do
    echo "Deleting expired: $key"
    raps object delete supplier-packages "$key"
  done

Пов’язане