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

Управління проблемами та RFI

Керуйте проблемами та RFI за допомогою масових операцій, експорту та автоматизації.

RAPS ACC issues demo

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

Проблеми ACC
Issues API
RFI
Вкладення
Операції
Перелік/Фільтрація
Експорт
Оновлення
Створення
Формати експорту
JSON
CSV
Звіт
Аналіз
Зведення за статусом
Відстеження прострочених
Звіт по відповідальних
Проблеми → Операції → Експорт → Аналіз

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

Перелік усіх проблем

PROJECT_ID="b.project-id"

# List all issues
raps acc issue list "$PROJECT_ID"

# Export to JSON
raps acc issue list "$PROJECT_ID" --output json > issues.json

# Filter open issues
cat issues.json | jq '[.[] | select(.status == "open")]' > open-issues.json

Експорт проблем у CSV

cat issues.json | jq -r '
  ["ID", "Title", "Status", "Priority", "Assignee", "Due Date", "Created"],
  (.[] | [
    .id,
    .title,
    .status,
    .priority,
    .assignee,
    .dueDate,
    .createdAt
  ]) | @csv
' > issues-report.csv

Деталі проблеми з вкладеннями

ISSUE_ID="issue-123"

# Get issue details
raps acc issue get "$PROJECT_ID" "$ISSUE_ID" --output json > issue-detail.json

# List attachments
jq -r '.attachments[] | "\(.id): \(.name)"' issue-detail.json

# Download attachments
jq -r '.attachments[].id' issue-detail.json | while read attach_id; do
  raps acc attachment download "$PROJECT_ID" "$attach_id" --output ./attachments/
done

Пошук прострочених проблем

TODAY=$(date +%Y-%m-%d)

cat issues.json | jq --arg today "$TODAY" '
  [.[] | select(.status == "open" and .dueDate != null and .dueDate < $today)]
' > overdue-issues.json

echo "Overdue issues: $(jq 'length' overdue-issues.json)"

Управління RFI

# List all RFIs
raps acc rfi list "$PROJECT_ID" --output json > rfis.json

# Export RFI summary
cat rfis.json | jq -r '
  ["Number", "Subject", "Status", "Ball In Court", "Due Date"],
  (.[] | [.number, .subject, .status, .ballInCourt, .dueDate])
  | @csv
' > rfi-summary.csv

# Find open RFIs
cat rfis.json | jq '[.[] | select(.status == "open")]' > open-rfis.json

CI/CD-конвеєр

# .github/workflows/issue-management.yml
name: Issue Management

on:
  schedule:
    - cron: '0 8 * * 1-5'  # Weekdays at 8 AM
  workflow_dispatch:

env:
  PROJECT_ID: ${{ secrets.ACC_PROJECT_ID }}

jobs:
  issue-report:
    runs-on: ubuntu-latest
    steps:
      - name: Install RAPS
        run: cargo install raps

      - name: Authenticate
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
          APS_ACCESS_TOKEN: ${{ secrets.APS_ACCESS_TOKEN }}
          APS_REFRESH_TOKEN: ${{ secrets.APS_REFRESH_TOKEN }}
        run: raps auth login --token "$APS_ACCESS_TOKEN" --refresh-token "$APS_REFRESH_TOKEN" --non-interactive

      - name: Export issues
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          raps acc issue list "$PROJECT_ID" --output json > issues.json
          raps acc rfi list "$PROJECT_ID" --output json > rfis.json

      - name: Generate report
        run: |
          TODAY=$(date +%Y-%m-%d)

          echo "# Issue & RFI Report" > report.md
          echo "Generated: $(date)" >> report.md
          echo "" >> report.md

          # Issues summary
          echo "## Issues Summary" >> report.md
          TOTAL=$(jq 'length' issues.json)
          OPEN=$(jq '[.[] | select(.status == "open")] | length' issues.json)
          OVERDUE=$(jq --arg today "$TODAY" '[.[] | select(.status == "open" and .dueDate < $today)] | length' issues.json)

          echo "- Total: $TOTAL" >> report.md
          echo "- Open: $OPEN" >> report.md
          echo "- Overdue: $OVERDUE" >> report.md
          echo "" >> report.md

          # RFI summary
          echo "## RFI Summary" >> report.md
          RFI_TOTAL=$(jq 'length' rfis.json)
          RFI_OPEN=$(jq '[.[] | select(.status == "open")] | length' rfis.json)

          echo "- Total: $RFI_TOTAL" >> report.md
          echo "- Open: $RFI_OPEN" >> report.md
          echo "" >> report.md

          # Overdue list
          if [ "$OVERDUE" -gt 0 ]; then
            echo "## Overdue Issues" >> report.md
            jq --arg today "$TODAY" -r '
              .[] | select(.status == "open" and .dueDate < $today) |
              "- \(.title) (Due: \(.dueDate), Assignee: \(.assignee))"
            ' issues.json >> report.md
          fi

      - name: Export CSV
        run: |
          jq -r '["ID","Title","Status","Priority","Due Date"], (.[] | [.id,.title,.status,.priority,.dueDate]) | @csv' issues.json > issues.csv
          jq -r '["Number","Subject","Status","Due Date"], (.[] | [.number,.subject,.status,.dueDate]) | @csv' rfis.json > rfis.csv

      - name: Upload reports
        uses: actions/upload-artifact@v4
        with:
          name: issue-reports
          path: |
            report.md
            issues.csv
            rfis.csv

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

Розклад
Щодня о 8:00
Експорт
Отримання проблем
Отримання RFI
Аналіз
Підрахунок за статусом
Пошук прострочених
Звіти
report.md
issues.csv
rfis.csv

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

Зведення проблем

User: "How many open issues do we have on the Main Street project?"
КористувачAI-асистентRAPS MCPACC Cloud
Корист.Кількість відкритих проблем Main StreetAI
AIaps_acc_issue_list(project_id)MCP
MCPОтримання всіх проблемACC
ACCIssues JSONMCP
AI: Фільтрація + Групування за пріоритетом/відповідальним
AIЗведення проблемКорист.

Відповідь AI:

Проєкт Main Street - Відкриті проблеми:

ПріоритетКількість
Критичний2
Високий8
Середній15
Низький5

Всього відкритих: 30 проблем Прострочених: 4 проблеми

Основні відповідальні:

  • John Smith: 12 проблем
  • Jane Doe: 10 проблем
  • Bob Wilson: 8 проблем

Пошук конкретних проблем

User: "Show me all critical issues that are overdue"

Відповідь AI:

Прострочені критичні проблеми:

IDНазваТермінВідповідальний
ISS-42Зіткнення конструктивних балок10 лютJohn Smith
ISS-87Відсутній клас вогнестійкості12 лютJane Doe

Обидві проблеми прострочені. Чи бажаєте відправити нагадування?

Статус RFI

User: "What's the status of our RFIs?"

Відповідь AI:

Зведення статусу RFI:

  • Відкриті: 8 RFI
  • Отримано відповідь: 23 RFI
  • Закриті: 45 RFI

Очікують відповіді (м’яч на боці):

RFIТемаОчікує відДнів
RFI-034Глибина фундаментуІнженер-конструктор5
RFI-041Маршрутизація HVACКонсультант MEP3

Розширені запити

Проблеми за відповідальними

cat issues.json | jq '
  group_by(.assignee) |
  map({assignee: .[0].assignee, count: length, open: [.[] | select(.status == "open")] | length}) |
  sort_by(-.open)'

Хронологія проблем

# Issues created per week
cat issues.json | jq '
  group_by(.createdAt[:10]) |
  map({date: .[0].createdAt[:10], count: length})'

Розподіл за пріоритетом

cat issues.json | jq '
  group_by(.priority) |
  map({priority: .[0].priority, count: length, open: [.[] | select(.status == "open")] | length})'

Пов’язане