Створення пакетів для постачальників
Створення пакетів 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 Corp PO-2024-100 4 15 лют. 16 лют. Beta Mfg PO-2024-098 3 14 лют. 15 лют. Gamma Inc PO-2024-095 6 12 лют. Прострочено
Розширені можливості
Інтеграція з електронною поштою
#!/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