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

Автоматизація щоденного журналу

Експортуйте та автоматизуйте щоденні будівельні журнали для ведення документації.

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

Щоденний запис
Погода
Робоча сила
Обладнання
Роботи
Нотатки
Експорт
Дані JSON
Звіт CSV
Зведення PDF
Архів
Тижневий пакет
Місячний звіт
Історія проєкту
Запис → Експорт → Архів

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

Експорт щоденних журналів

PROJECT_ID="b.project-id"

# Get logs for date range
START_DATE="2024-02-01"
END_DATE="2024-02-29"

raps acc dailylog list "$PROJECT_ID" \
  --from "$START_DATE" \
  --to "$END_DATE" \
  --output json > daily-logs.json

Форматування для читання

cat daily-logs.json | jq -r '.[] |
  "=== \(.date) ===",
  "Weather: \(.weather.condition) (\(.weather.tempHigh)°/\(.weather.tempLow)°)",
  "Manpower: \(.manpower.total) workers",
  "",
  "Activities:",
  (.activities[] | "  - \(.description)"),
  "",
  "Notes:",
  "  \(.notes)",
  ""
'

Експорт у CSV

# Daily summary CSV
cat daily-logs.json | jq -r '
  ["Date", "Weather", "Temp High", "Temp Low", "Workers", "Notes"],
  (.[] | [
    .date,
    .weather.condition,
    .weather.tempHigh,
    .weather.tempLow,
    .manpower.total,
    .notes
  ]) | @csv
' > daily-log-summary.csv

# Activities detail CSV
cat daily-logs.json | jq -r '
  ["Date", "Activity", "Location", "Crew Size"],
  (.[] | .date as $date | .activities[] | [
    $date,
    .description,
    .location,
    .crewSize
  ]) | @csv
' > activities-detail.csv

Тижневе зведення

# Group by week and summarize
cat daily-logs.json | jq '
  group_by(.date[:10] | strptime("%Y-%m-%d") | strftime("%Y-W%V")) |
  map({
    week: .[0].date[:10] | strptime("%Y-%m-%d") | strftime("%Y-W%V"),
    days: length,
    totalWorkers: [.[].manpower.total] | add,
    avgWorkers: ([.[].manpower.total] | add / length | floor),
    activities: [.[].activities[].description] | unique
  })'

CI/CD-конвеєр

# .github/workflows/dailylog-export.yml
name: Daily Log Export

on:
  schedule:
    - cron: '0 5 * * *'  # Daily at 5 AM
  workflow_dispatch:
    inputs:
      date_range:
        description: 'Date range (e.g., "2024-02-01:2024-02-29")'
        required: false

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

jobs:
  export-logs:
    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: Set date range
        run: |
          if [ -n "${{ inputs.date_range }}" ]; then
            START=$(echo "${{ inputs.date_range }}" | cut -d: -f1)
            END=$(echo "${{ inputs.date_range }}" | cut -d: -f2)
          else
            # Default to last 7 days
            END=$(date +%Y-%m-%d)
            START=$(date -d '7 days ago' +%Y-%m-%d)
          fi
          echo "START_DATE=$START" >> $GITHUB_ENV
          echo "END_DATE=$END" >> $GITHUB_ENV

      - name: Export daily logs
        env:
          APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
          APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}
        run: |
          mkdir -p ./logs-export

          raps acc dailylog list "$PROJECT_ID" \
            --from "$START_DATE" \
            --to "$END_DATE" \
            --output json > ./logs-export/daily-logs.json

      - name: Generate reports
        run: |
          # Summary report
          echo "# Daily Log Report" > ./logs-export/report.md
          echo "Period: $START_DATE to $END_DATE" >> ./logs-export/report.md
          echo "" >> ./logs-export/report.md

          DAYS=$(jq 'length' ./logs-export/daily-logs.json)
          TOTAL_WORKERS=$(jq '[.[].manpower.total] | add' ./logs-export/daily-logs.json)
          AVG_WORKERS=$(jq '[.[].manpower.total] | add / length | floor' ./logs-export/daily-logs.json)

          echo "## Summary" >> ./logs-export/report.md
          echo "- Days logged: $DAYS" >> ./logs-export/report.md
          echo "- Total worker-days: $TOTAL_WORKERS" >> ./logs-export/report.md
          echo "- Average daily workforce: $AVG_WORKERS" >> ./logs-export/report.md
          echo "" >> ./logs-export/report.md

          # Weather summary
          echo "## Weather" >> ./logs-export/report.md
          jq -r '
            group_by(.weather.condition) |
            map({condition: .[0].weather.condition, days: length}) |
            .[] | "- \(.condition): \(.days) days"
          ' ./logs-export/daily-logs.json >> ./logs-export/report.md

          # CSV export
          jq -r '["Date","Weather","Workers","Notes"], (.[] | [.date, .weather.condition, .manpower.total, .notes]) | @csv' ./logs-export/daily-logs.json > ./logs-export/summary.csv

      - name: Upload exports
        uses: actions/upload-artifact@v4
        with:
          name: dailylog-export
          path: ./logs-export/

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

Щодня о 5:00
Розклад
Експорт
Визначення діапазону дат
Отримання щоденних журналів
Звіти
report.md
summary.csv
daily-logs.json

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

Отримання нещодавніх журналів

User: "Show me this week's daily logs"
КористувачAI-асистентRAPS MCPACC Cloud
Корист.Щоденні журнали за цей тижденьAI
AI: Розрахунок діапазону дат (Пн-сьогодні)
AIaps_acc_dailylog_list(project_id, from, to)MCP
MCPОтримання щоденних журналівACC
ACCДані журналівMCP
AI: Форматування зведення
AIТижневе зведення журналуКорист.

Відповідь AI:

Щоденні журнали: 12-16 лютого 2024

ДатаПогодаРобітникиОсновні роботи
Пн 12Сонячно, 18°45Заливка фундаменту - Зона B
Вт 13Хмарно, 14°52Монтаж металоконструкцій - Рівень 2
Ср 14Дощ, 9°28Лише внутрішні роботи
Чт 15Сонячно, 17°55Чорнові MEP-роботи - Рівень 1
Пт 16Сонячно, 20°58Зовнішній каркас - Північ

Зведення за тиждень:

  • Всього людино-днів: 238
  • Середня: 48 робітників/день
  • Затримки через погоду: 1 день

Пошук у журналах

User: "Find days when we had concrete pours last month"

Відповідь AI:

Бетонні заливки у січні 2024:

ДатаРоботаРозташуванняРобітники
8 січЗаливка фундаментуЗона A24
15 січЗаливка плитиРівень 132
22 січЗаливка колонОсі 3-518
29 січЗаливка плитиРівень 235

Зведення:

  • 4 дні бетонних заливок
  • 109 робітників загалом у дні заливок
  • Усі завершені успішно

Шаблони звітів

Місячне зведення

# Generate monthly summary
MONTH="2024-02"
START="${MONTH}-01"
END="${MONTH}-28"

raps acc dailylog list "$PROJECT_ID" --from "$START" --to "$END" --output json | jq '
  {
    period: "'"$MONTH"'",
    daysLogged: length,
    totalMandays: [.[].manpower.total] | add,
    averageDaily: ([.[].manpower.total] | add / length | floor),
    weatherBreakdown: (group_by(.weather.condition) | map({condition: .[0].weather.condition, days: length})),
    activitiesCount: [.[].activities | length] | add
  }'

Звіт про вплив погоди

cat daily-logs.json | jq '
  group_by(.weather.condition) |
  map({
    weather: .[0].weather.condition,
    days: length,
    avgWorkers: ([.[].manpower.total] | add / length | floor),
    activities: [.[].activities | length] | add
  }) |
  sort_by(-.days)'

Тренд робочої сили

cat daily-logs.json | jq '
  [.[] | {date: .date, workers: .manpower.total}] |
  sort_by(.date)'

Пов’язане