@tocca-systems/twp-cli 0.97.2 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +12 -0
- package/README.md +18 -3
- package/command-model/_routes.json +113 -1
- package/command-model/account-lock.json +1 -1
- package/command-model/accounting-master.json +4 -4
- package/command-model/address.json +1 -1
- package/command-model/agent-loop.json +28 -28
- package/command-model/agent.json +11 -11
- package/command-model/ai-chat-history.json +3 -3
- package/command-model/ai-task-copilot.json +1 -1
- package/command-model/ai-token-usage.json +8 -8
- package/command-model/ai-training-admin.json +15 -0
- package/command-model/ai-training-attempt-admin.json +7 -0
- package/command-model/ai-training-attempt.json +1 -1
- package/command-model/ai-training-program.json +2 -2
- package/command-model/analysis-alert-threshold.json +1 -1
- package/command-model/analysis-page-access-rule.json +3 -3
- package/command-model/analysis.json +3 -3
- package/command-model/announcement.json +6 -6
- package/command-model/api-key.json +5 -5
- package/command-model/api-usage.json +3 -3
- package/command-model/attendance-report-category.json +5 -5
- package/command-model/attendance-report-reason-detail.json +5 -5
- package/command-model/attendance-report-reason.json +5 -5
- package/command-model/attendance-report.json +3 -3
- package/command-model/attendance-timesheet.json +3 -3
- package/command-model/attendance.json +1 -1
- package/command-model/audit-log.json +3 -3
- package/command-model/auth.json +3 -3
- package/command-model/authorize.json +1 -1
- package/command-model/auto-charge.json +3 -3
- package/command-model/badge.json +4 -4
- package/command-model/billing.json +5 -5
- package/command-model/budget.json +8 -8
- package/command-model/business-place.json +2 -2
- package/command-model/capacity.json +4 -4
- package/command-model/cash-flow.json +1 -1
- package/command-model/catalog.json +7 -7
- package/command-model/chat-channel.json +9 -9
- package/command-model/chat-mention-group.json +3 -3
- package/command-model/chat-message.json +8 -8
- package/command-model/chat-presence.json +3 -3
- package/command-model/chat-scheduled-message.json +1 -1
- package/command-model/chat-tenant-connection.json +2 -2
- package/command-model/chat.json +1 -1
- package/command-model/cli-auth.json +1 -1
- package/command-model/cli-tool-catalog.json +1 -1
- package/command-model/cms-tag.json +5 -5
- package/command-model/commuting-expense.json +7 -7
- package/command-model/company-case-document.json +1 -1
- package/command-model/company-contract-document.json +4 -4
- package/command-model/company.json +4 -4
- package/command-model/config.json +2 -2
- package/command-model/container-agent-schedule.json +3 -3
- package/command-model/contract.json +4 -4
- package/command-model/credit.json +16 -15
- package/command-model/cross-project-report.json +1 -1
- package/command-model/customer-campaign.json +4 -4
- package/command-model/customer-contact.json +2 -2
- package/command-model/customer-interaction.json +4 -4
- package/command-model/customer-people.json +3 -3
- package/command-model/customer.json +3 -3
- package/command-model/cycle-time-analysis.json +1 -1
- package/command-model/dashboard-calendar.json +1 -1
- package/command-model/department.json +7 -7
- package/command-model/deposit-plan.json +2 -2
- package/command-model/deposit.json +3 -3
- package/command-model/desktop-release.json +2 -2
- package/command-model/domain-knowledge-doc.json +3 -2
- package/command-model/domain-knowledge.json +6 -4
- package/command-model/dynamo-attachment.json +5 -5
- package/command-model/dynamo-cms.json +12 -12
- package/command-model/dynamo-inquiry.json +9 -9
- package/command-model/dynamo-support.json +3 -3
- package/command-model/equipment-category.json +1 -1
- package/command-model/equipment.json +8 -8
- package/command-model/estimate-case-document.json +5 -5
- package/command-model/estimate-format.json +4 -4
- package/command-model/estimate-no-rule.json +2 -2
- package/command-model/estimate.json +8 -8
- package/command-model/evaluation-pdf.json +1 -1
- package/command-model/evaluation-period.json +5 -5
- package/command-model/evaluation.json +7 -7
- package/command-model/expense-report.json +10 -10
- package/command-model/expense-settings.json +1 -1
- package/command-model/external-integration-proxy.json +30 -30
- package/command-model/faq-notion-import.json +4 -4
- package/command-model/faq.json +4 -4
- package/command-model/favorite.json +1 -1
- package/command-model/feedback.json +7 -7
- package/command-model/fiscal-year-setting.json +4 -4
- package/command-model/floor-map.json +2 -2
- package/command-model/follow-up-message-template.json +2 -2
- package/command-model/goal-sheet.json +4 -4
- package/command-model/google-auth.json +1 -1
- package/command-model/hearing-auth.json +2 -2
- package/command-model/hearing-invitation.json +1 -1
- package/command-model/hearing-session.json +4 -4
- package/command-model/hearing.json +11 -11
- package/command-model/holiday.json +6 -6
- package/command-model/hr-checklist-template.json +4 -4
- package/command-model/hr-checklist.json +2 -2
- package/command-model/hr-qualification.json +2 -2
- package/command-model/html-editor.json +1 -1
- package/command-model/index.json +27 -7
- package/command-model/inquiry-routing.json +5 -5
- package/command-model/invoice-auto-template.json +4 -4
- package/command-model/invoice-no-rule.json +2 -2
- package/command-model/invoice.json +6 -6
- package/command-model/job-title.json +7 -7
- package/command-model/knowledge-qa.json +1 -1
- package/command-model/knowledge-recommendation-feedback.json +1 -1
- package/command-model/knowledge-recommendation.json +1 -1
- package/command-model/license-assignment.json +4 -4
- package/command-model/license-type.json +5 -5
- package/command-model/license.json +5 -5
- package/command-model/login-history.json +2 -2
- package/command-model/man-hour.json +2 -2
- package/command-model/master-announcement.json +2 -2
- package/command-model/master-billing.json +3 -3
- package/command-model/master-pricing.json +4 -4
- package/command-model/master-product.json +5 -5
- package/command-model/master-support.json +6 -6
- package/command-model/master-tenant.json +9 -9
- package/command-model/media-file-comment.json +1 -1
- package/command-model/media-file-version.json +4 -4
- package/command-model/media-file.json +16 -15
- package/command-model/media-folder.json +5 -5
- package/command-model/media-published-file.json +7 -0
- package/command-model/media-sharing-settings.json +7 -0
- package/command-model/meeting-category.json +4 -4
- package/command-model/meeting-pdf.json +1 -1
- package/command-model/meeting-template.json +4 -4
- package/command-model/meeting.json +9 -9
- package/command-model/member.json +1 -1
- package/command-model/microsoft-auth.json +1 -1
- package/command-model/microsoft-graph-proxy-v2.json +22 -22
- package/command-model/milli-credit.json +8 -8
- package/command-model/ms365-calendar-o-auth.json +2 -2
- package/command-model/music-generation.json +5 -5
- package/command-model/my-ai-training.json +2 -2
- package/command-model/my-task.json +4 -4
- package/command-model/my-training.json +4 -4
- package/command-model/news-perspective.json +2 -2
- package/command-model/note-category.json +3 -3
- package/command-model/note-comment.json +1 -1
- package/command-model/note-reaction.json +1 -1
- package/command-model/note-subscription.json +2 -2
- package/command-model/note.json +5 -5
- package/command-model/notification-recipient-rule.json +2 -2
- package/command-model/notification.json +6 -6
- package/command-model/notion-import.json +4 -4
- package/command-model/o-auth-client.json +4 -4
- package/command-model/ojt-approval-inbox.json +6 -0
- package/command-model/ojt-assignment.json +29 -0
- package/command-model/ojt-checklist.json +18 -0
- package/command-model/ojt-permission.json +9 -0
- package/command-model/ojt-plan.json +15 -0
- package/command-model/ojt-progress.json +6 -0
- package/command-model/ojt-report.json +12 -0
- package/command-model/ojt-role-dashboard.json +7 -0
- package/command-model/ojt-structure-change.json +14 -0
- package/command-model/onboarding-template.json +12 -12
- package/command-model/operating-hours.json +1 -1
- package/command-model/org-chart.json +1 -1
- package/command-model/organization-announcement-category.json +3 -3
- package/command-model/organization-announcement.json +5 -5
- package/command-model/payee.json +2 -2
- package/command-model/policy-employee.json +3 -3
- package/command-model/policy.json +7 -7
- package/command-model/position.json +5 -5
- package/command-model/private-agent-loop.json +18 -18
- package/command-model/private-task.json +8 -8
- package/command-model/process.json +5 -5
- package/command-model/profit-analysis.json +2 -2
- package/command-model/profit-summary.json +1 -1
- package/command-model/project-assignment.json +1 -1
- package/command-model/project-auto-assign-settings.json +7 -0
- package/command-model/project-cost.json +4 -4
- package/command-model/project-custom-field.json +4 -4
- package/command-model/project-digest.json +2 -2
- package/command-model/project-evaluation.json +5 -5
- package/command-model/project-health.json +3 -3
- package/command-model/project-inventory-continuation.json +1 -1
- package/command-model/project-inventory-overview.json +1 -1
- package/command-model/project-inventory-request.json +1 -1
- package/command-model/project-inventory-settings.json +1 -1
- package/command-model/project-member.json +3 -3
- package/command-model/project-overview.json +8 -0
- package/command-model/project-process.json +5 -5
- package/command-model/project-profit-analysis.json +1 -1
- package/command-model/project-quality-check-corrective-task.json +1 -1
- package/command-model/project-quality-check-record.json +1 -1
- package/command-model/project-quality-check-scope.json +1 -1
- package/command-model/project-quality-check-status.json +2 -2
- package/command-model/project-repository.json +2 -2
- package/command-model/project-revenue.json +5 -5
- package/command-model/project-status-report-project.json +1 -1
- package/command-model/project-status-report-settings.json +1 -1
- package/command-model/project-task-analytics.json +1 -1
- package/command-model/project-task-category.json +2 -2
- package/command-model/project-task-comment.json +2 -2
- package/command-model/project-task-form-options.json +1 -1
- package/command-model/project-task-group.json +3 -3
- package/command-model/project-task-label.json +2 -2
- package/command-model/project-task-link.json +2 -2
- package/command-model/project-task-milestone.json +4 -4
- package/command-model/project-task-rule.json +6 -6
- package/command-model/project-task-status.json +2 -2
- package/command-model/project-task-template.json +4 -4
- package/command-model/project-task-type.json +2 -2
- package/command-model/project-task-version.json +4 -4
- package/command-model/project-task-watcher.json +1 -1
- package/command-model/project-task.json +15 -15
- package/command-model/project-team-chat.json +2 -2
- package/command-model/project-template.json +5 -5
- package/command-model/project.json +7 -7
- package/command-model/prospect-promotion.json +1 -1
- package/command-model/prospect.json +7 -7
- package/command-model/public-pricing.json +6 -0
- package/command-model/purchase-ai-field-mapping.json +3 -3
- package/command-model/purchase-document.json +5 -5
- package/command-model/purchase-no-rule.json +2 -2
- package/command-model/purchase.json +4 -4
- package/command-model/push-subscription.json +1 -1
- package/command-model/qualification-import.json +2 -2
- package/command-model/qualification.json +4 -4
- package/command-model/quality-check-item.json +4 -4
- package/command-model/rag.json +1 -1
- package/command-model/rating-criteria.json +2 -2
- package/command-model/receivable-closing.json +2 -2
- package/command-model/receivable.json +2 -2
- package/command-model/received-invoice.json +3 -3
- package/command-model/recreation-club.json +4 -4
- package/command-model/report-format-order.json +2 -2
- package/command-model/report-saved-tab.json +3 -3
- package/command-model/report.json +25 -25
- package/command-model/retrospective.json +7 -7
- package/command-model/risk-analysis.json +1 -1
- package/command-model/role-template.json +3 -3
- package/command-model/sales-ai-review-reason-list.json +1 -1
- package/command-model/sales-default-recipient-set.json +2 -2
- package/command-model/sales-pdf.json +9 -9
- package/command-model/sales-recent-recipient.json +1 -1
- package/command-model/sales-rounding-setting.json +1 -1
- package/command-model/sales-setting.json +4 -4
- package/command-model/sales.json +3 -3
- package/command-model/saved-tab.json +3 -3
- package/command-model/saved-task-filter.json +1 -1
- package/command-model/seal-impression.json +2 -2
- package/command-model/segment.json +5 -5
- package/command-model/sidebar-badge-setting.json +1 -1
- package/command-model/skill-analytics.json +4 -4
- package/command-model/skill-category.json +4 -4
- package/command-model/skill-evaluation-export.json +1 -1
- package/command-model/skill-evaluation-record.json +1 -1
- package/command-model/skill-micro-feedback.json +2 -2
- package/command-model/skill-role-assignment.json +1 -1
- package/command-model/skill.json +5 -5
- package/command-model/sns-connection.json +2 -2
- package/command-model/sns-draft.json +6 -0
- package/command-model/sns-media.json +8 -0
- package/command-model/sns-post.json +14 -0
- package/command-model/staff-kpi-setting.json +2 -2
- package/command-model/staff-kpi.json +3 -3
- package/command-model/staffing-board-cell.json +1 -1
- package/command-model/staffing-board-note.json +1 -1
- package/command-model/staffing-board-snapshot.json +3 -3
- package/command-model/staffing-board-tentative-assignment.json +3 -3
- package/command-model/staffing-board-tentative-import.json +1 -1
- package/command-model/staffing-plan.json +5 -5
- package/command-model/statutory-rate-set.json +5 -5
- package/command-model/storage.json +5 -5
- package/command-model/subscription.json +2 -2
- package/command-model/supplier-payment-schedule.json +2 -2
- package/command-model/supplier-payment.json +2 -2
- package/command-model/survey-tracker.json +3 -3
- package/command-model/survey.json +18 -18
- package/command-model/task-analysis.json +1 -1
- package/command-model/task-branch.json +4 -4
- package/command-model/task-recurrence.json +2 -2
- package/command-model/task-wiki-link.json +2 -2
- package/command-model/teams-link.json +1 -1
- package/command-model/teams-sso.json +6 -0
- package/command-model/tenant-ai-key.json +6 -6
- package/command-model/tenant-egress-policy.json +5 -5
- package/command-model/tenant-email-settings.json +1 -1
- package/command-model/tenant-git-hub-settings.json +3 -3
- package/command-model/tenant-rag-settings.json +4 -4
- package/command-model/tenant-rate-override.json +1 -1
- package/command-model/tenant-registration.json +1 -1
- package/command-model/tenant-search.json +1 -1
- package/command-model/tenant-settings.json +13 -13
- package/command-model/terms.json +2 -2
- package/command-model/test-execution.json +3 -3
- package/command-model/test-scenario.json +5 -5
- package/command-model/training-attendance.json +5 -5
- package/command-model/training-master.json +3 -3
- package/command-model/training-session.json +5 -5
- package/command-model/unified-search.json +2 -2
- package/command-model/update-record.json +2 -2
- package/command-model/user-api-key.json +5 -5
- package/command-model/user-assignment-calendar.json +1 -1
- package/command-model/user-assignment.json +11 -11
- package/command-model/user-contract-type.json +5 -5
- package/command-model/user-contract.json +2 -2
- package/command-model/user-group.json +3 -3
- package/command-model/user-info.json +1 -1
- package/command-model/user-invitation.json +4 -4
- package/command-model/user-list-display-setting.json +1 -1
- package/command-model/user-list-item-order.json +1 -1
- package/command-model/user-management.json +9 -9
- package/command-model/user-qualification.json +1 -1
- package/command-model/user-recent-work.json +1 -1
- package/command-model/user-shortcut-setting.json +1 -1
- package/command-model/user-skill-profile.json +3 -3
- package/command-model/user.json +11 -11
- package/command-model/video-generation.json +7 -7
- package/command-model/well-known.json +2 -2
- package/command-model/whisper.json +2 -2
- package/command-model/wiki-collection.json +4 -4
- package/command-model/wiki-notion-import.json +3 -3
- package/command-model/wiki-template.json +4 -4
- package/command-model/wiki.json +9 -9
- package/command-model/worker-agent-run.json +4 -4
- package/command-model/worker-agent.json +7 -7
- package/command-model/workflow-ai-review.json +1 -1
- package/command-model/workflow-analysis.json +1 -1
- package/command-model/workflow-approval-delegation.json +3 -3
- package/command-model/workflow-approval.json +4 -4
- package/command-model/workflow-attachment-pdf-preview.json +1 -1
- package/command-model/workflow-comment-attachment.json +3 -3
- package/command-model/workflow-estimate-input.json +4 -4
- package/command-model/workflow-instance.json +6 -6
- package/command-model/workflow-tracker.json +5 -5
- package/command-model/workflow.json +7 -7
- package/command-model/workload-alert.json +2 -2
- package/dist/{api-command-STY4LFJG.js → api-command-VDEHGVMH.js} +1 -1
- package/dist/{app-XFKEG3JB.js → app-3RAQDCXW.js} +2 -2
- package/dist/{chunk-QKTEMDDP.js → chunk-C6AOVOVD.js} +48 -19
- package/dist/{chunk-NZ7WI4RZ.js → chunk-CDAU3M7F.js} +4 -4
- package/dist/{chunk-6HBZRMDD.js → chunk-FZ55A6NN.js} +8 -8
- package/dist/{chunk-T6ARS4Y3.js → chunk-HOCPACZF.js} +1 -1
- package/dist/{chunk-BEUPNDJE.js → chunk-SLZ3KVFA.js} +3 -3
- package/dist/cli.js +10 -6
- package/dist/{media-GXTZJ5L4.js → media-J475DUVM.js} +1 -1
- package/dist/{oneshot-JAA46MUA.js → oneshot-ZG65R6KG.js} +1 -1
- package/dist/project-XOQNM7DP.js +4 -0
- package/dist/{registry-E4TNSUNA.js → registry-5ACTRYN2.js} +1 -1
- package/dist/{run-7Q3XLJFT.js → run-CX7LUVBB.js} +1 -1
- package/dist/{staffing-board-5K35Z4O5.js → staffing-board-S6VXUPEX.js} +32 -29
- package/dist/{user-ECG5E32W.js → user-6IYB3OJE.js} +5 -4
- package/package.json +1 -1
- package/dist/project-2MWLBXAB.js +0 -4
|
@@ -10,41 +10,44 @@ const current=`${String(now.getFullYear())}-${String(now.getMonth()+1).padStart(
|
|
|
10
10
|
usage);range={from:month,to:month,defaulted:false}}else if(from===void 0&&to===void 0){range=defaultBoardRange(now)}else if(from===void 0||to===void 0){throw new UsageError("--from \u3068 --to \u306F\u4E21\u65B9\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF081\u304B\u6708\u3060\u3051\u306A\u3089 --month\uFF09",usage)}else{range={from,to,defaulted:false}}if(range.from>range.to)throw new UsageError(`--from\uFF08${range.from}\uFF09\u304C --to\uFF08${range.to}\uFF09\u3088\u308A\u5F8C\u306B\u306A\u3063\u3066\u3044\u307E\u3059`,
|
|
11
11
|
usage);if(monthsBetween(range.from,range.to).length>MAX_MONTHS){throw new UsageError(`\u671F\u9593\u306F${String(MAX_MONTHS)}\u304B\u6708\u307E\u3067\u3067\u3059\uFF08${range.from} \u301C ${range.to}\uFF09`,usage)}return range}function boardRangeNotes(range){return range.defaulted?[`\u671F\u9593\u306E\u6307\u5B9A\u304C\u7121\u3044\u306E\u3067\u753B\u9762\u306E\u521D\u671F\u8868\u793A\u3068\u540C\u3058\u7FCC\u6708\u304B\u3089${String(DEFAULT_MONTHS)}\u304B\u6708\uFF08${range.from} \u301C ${range.
|
|
12
12
|
to}\u30FB\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u306B\u3057\u307E\u3059\u3002`]:[]}var UNIT_FLAG={name:"--unit",summary:"\u8868\u793A\u5358\u4F4D\uFF08hours\uFF1D\u6642\u9593\u30FB\u65E2\u5B9A / fte\uFF1D\u4EBA\u6708 / percent\uFF1D\u5272\u5408\uFF09\u3002table / text / tsv \u3060\u3051\u306B\u52B9\u304F",takesValue:true,placeholder:"<hours|fte|percent>"};var BY_PROJECT_FLAG={name:"--by-project",summary:"\u30E1\u30F3\u30D0\u30FC\xD7\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u884C\u3067\u51FA\u3059\uFF08\u753B\u9762\u3067\u884C\u3092\u958B\u3044\u305F\u5185\u8A33\uFF09",
|
|
13
|
-
takesValue:false};var INCLUDE_TENTATIVE_FLAG={name:"--include-tentative",summary:"\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5408\u8A08\u306B\u8DB3\u3059\uFF08\u753B\u9762\u306E\u300C\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u542B\u3081\u308B\u300D\u5207\u66FF\uFF09",takesValue:false};var
|
|
14
|
-
function unitOf(input){const raw=input.flags.get(UNIT_FLAG.name)?.trim()??"hours";if(raw!=="hours"&&raw!=="fte"&&raw!=="percent"){throw new UsageError(`--unit \u306F hours / fte / percent \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
|
|
15
|
-
percent":return standard>0?`${(hours/standard*100).toFixed(0)}%`:"-";default:return`${hours.toFixed(1)}h`}}function num(value){return typeof value==="number"&&Number.isFinite(value)?value:0}function monthIndex(entries){const out=new Map;if(!Array.isArray(entries))return out;for(const entry of entries){
|
|
16
|
-
body[VIEW_KEY]:void 0);return{unit:view["unit"]??"hours",byProject:view["byProject"]===true,excludedProjectIds:Array.isArray(view["excludedProjectIds"])?view["excludedProjectIds"]:[],tentatives:Array.isArray(view["tentatives"])?view["tentatives"]:null
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
takesValue:false};var INCLUDE_TENTATIVE_FLAG={name:"--include-tentative",summary:"\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5408\u8A08\u306B\u8DB3\u3059\uFF08\u753B\u9762\u306E\u300C\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u542B\u3081\u308B\u300D\u5207\u66FF\uFF09",takesValue:false};var INCLUDE_HIDDEN_FLAG={name:"--include-hidden",summary:"\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\uFF08\u65E2\u5B9A\u306F\u6B63\u793E\u54E1\u4EE5\u5916\u30FB\u624B\u52D5\u3067\u975E\u8868\u793A\u306B\u3057\u305F\u4EBA\uFF09\u3082\u542B\u3081\u308B\uFF08\u753B\u9762\u306E\u300C\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\u3082\u8868\u793A\u3059\u308B\u300D\uFF09",
|
|
14
|
+
takesValue:false};var SHOW_USAGE="twp staffing-board show [--month <YYYY-MM> | --from <YYYY-MM> --to <YYYY-MM>] [--unit hours|fte|percent] [--by-project] [--include-tentative] [--include-hidden] [--user <\u30E6\u30FC\u30B6\u30FC>] [--department <\u90E8\u7F72>]";function unitOf(input){const raw=input.flags.get(UNIT_FLAG.name)?.trim()??"hours";if(raw!=="hours"&&raw!=="fte"&&raw!=="percent"){throw new UsageError(`--unit \u306F hours / fte / percent \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\
|
|
15
|
+
\uFF09`,SHOW_USAGE)}return raw}function formatBoardValue(hours,standardHours,unit){const standard=typeof standardHours==="number"?standardHours:0;switch(unit){case"fte":return standard>0?(hours/standard).toFixed(2):"-";case"percent":return standard>0?`${(hours/standard*100).toFixed(0)}%`:"-";default:return`${hours.toFixed(1)}h`}}function num(value){return typeof value==="number"&&Number.isFinite(value)?value:0}function monthIndex(entries){const out=new Map;if(!Array.isArray(entries))return out;for(const entry of entries){
|
|
16
|
+
if(isRecord(entry)&&typeof entry["year_month"]==="string")out.set(entry["year_month"],entry)}return out}var VIEW_KEY="__twp_staffing_board_view";function viewOf(body){const view=recordOf(isRecord(body)?body[VIEW_KEY]:void 0);return{unit:view["unit"]??"hours",byProject:view["byProject"]===true,excludedProjectIds:Array.isArray(view["excludedProjectIds"])?view["excludedProjectIds"]:[],tentatives:Array.isArray(view["tentatives"])?view["tentatives"]:null,includeHidden:view["includeHidden"]===true}}function boardUsers(body){
|
|
17
|
+
const users=listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9");return viewOf(body).includeHidden?users:users.filter(u=>u["is_board_visible"]!==false)}function hiddenCount(body){return listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9").filter(u=>u["is_board_visible"]===false).length}function boardMonthHours(user,ym,view){const excluded=new Set(view.excludedProjectIds);const assigned=num(monthIndex(user["by_month"]).get(ym)?.["assigned_hours"]);let excludedHours=0;const projects=Array.
|
|
18
|
+
isArray(user["projects"])?user["projects"].map(recordOf):[];for(const project of projects){const id=project["project_id"];if(project["is_unassigned"]===true||typeof id!=="string"||!excluded.has(id))continue;const cell=monthIndex(project["by_month"]).get(ym);if(cell!==void 0&&cell["is_estimated"]!==true)excludedHours+=num(cell["hours"])}const base=Math.max(0,assigned-excludedHours);if(view.tentatives===null)return base;const tentative=view.tentatives.filter(t=>t["user_id"]===user["user_id"]&&!(typeof t["\
|
|
19
|
+
project_id"]==="string"&&excluded.has(t["project_id"]))).reduce((sum,t)=>sum+num(recordOf(t["monthly_hours"])[ym]),0);return base+tentative}function boardRows(body){const view=viewOf(body);const months=responseMonths(body);return boardUsers(body).map(user=>{const byMonth=monthIndex(user["by_month"]);const cells={};let total=0;for(const ym of months){const m=byMonth.get(ym);if(m===void 0){cells[ym]=null;continue}const hours=boardMonthHours(user,ym,view);total+=hours;const estimated=num(m["estimat\
|
|
20
|
+
ed_hours"]);const showEstimated=estimated>0&&(view.unit==="hours"||num(m["standard_hours"])>0);cells[ym]=`${formatBoardValue(hours,m["standard_hours"],view.unit)}${showEstimated?` (+\u63A8\u5B9A ${formatBoardValue(estimated,m["standard_hours"],view.unit)})`:""}`}return{department_name:user["department_name"]??null,user_name:user["user_name"]??null,...cells,total_hours:Math.round(total*10)/10,user_id:user["user_id"]??null}})}function boardProjectRows(body){const view=viewOf(body);const excluded=new Set(
|
|
21
|
+
view.excludedProjectIds);const months=responseMonths(body);const rows=[];for(const user of boardUsers(body)){const standards=monthIndex(user["by_month"]);const projects=Array.isArray(user["projects"])?user["projects"].map(recordOf):[];for(const project of projects){const byMonth=monthIndex(project["by_month"]);const cells={};for(const ym of months){const m=byMonth.get(ym);const hours=num(m?.["hours"]);cells[ym]=m===void 0||hours<=0?null:`${formatBoardValue(hours,standards.get(ym)?.["standard_hou\
|
|
22
|
+
rs"],view.unit)}${m["is_estimated"]===true?" (\u63A8\u5B9A)":""}`}const id=project["project_id"];rows.push({user_name:user["user_name"]??null,project_name:project["project_name"]??null,...cells,excluded:typeof id==="string"&&excluded.has(id),unassigned:project["is_unassigned"]===true,user_id:user["user_id"]??null,project_id:id??null})}}return rows}function shownTentatives(body,tentatives){const users=new Set(boardUsers(body).map(u=>u["user_id"]));return tentatives.filter(t=>users.has(t["user_id"])).
|
|
23
|
+
length}function showPlan(input){noArgs(input,SHOW_USAGE);const range=boardRange(input,SHOW_USAGE);unitOf(input);return{method:"GET",path:BOARD_PATH,query:{start_ym:range.from,end_ym:range.to,user_id:resolvedOrUndefined(input,"userId"),department_id:resolvedOrUndefined(input,"departmentId")}}}var showOperation={name:"show",summary:"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8868\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u306E\u30A2\u30B5\u30A4\u30F3\u5DE5\u6570\uFF09\u3092\u8868\u793A\u3059\u308B",
|
|
23
24
|
usage:SHOW_USAGE,description:`\u753B\u9762\u300C\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u300D\u306E\u8868\u3068\u540C\u3058\u5024\u3092\u51FA\u3057\u307E\u3059\uFF08GET /api/v2/analysis/staffing-board \uFF0B \u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u8A2D\u5B9A\uFF09\u3002
|
|
24
25
|
\u671F\u9593\u3092\u7701\u304F\u3068\u753B\u9762\u306E\u521D\u671F\u8868\u793A\u3068\u540C\u3058\u7FCC\u6708\u304B\u3089${String(DEFAULT_MONTHS)}\u304B\u6708\uFF08\u3053\u306E\u7AEF\u672B\u306E\u6642\u8A08\uFF09\u3067\u3059\u3002\u671F\u9593\u306F${String(MAX_MONTHS)}\u304B\u6708\u307E\u3067\u3067\u3059\u3002
|
|
25
26
|
\u5404\u6708\u306F\u300C\u6B63\u5F0F\u30A2\u30B5\u30A4\u30F3\u306E\u5408\u8A08 \u2212 \u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u300D\u3067\u3001--include-tentative \u3067\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u8DB3\u3057\u307E\u3059\uFF08\u753B\u9762\u306E\u5207\u66FF\u3068\u540C\u3058\uFF09\u3002
|
|
26
27
|
\u63A8\u5B9A\u6642\u9593\uFF08\u30A2\u30B5\u30A4\u30F3\u671F\u9593\u304C\u672A\u5165\u529B\u3067\u6848\u4EF6\u306E\u65E2\u5B9A\u304B\u3089\u51FA\u3057\u305F\u5024\uFF09\u306F\u5408\u8A08\u306B\u542B\u3081\u305A\u3001(+\u63A8\u5B9A \u2026) \u3068\u6DFB\u3048\u307E\u3059\u3002
|
|
27
28
|
--unit \u3067\u6642\u9593 / \u4EBA\u6708\uFF08FTE\uFF09/ \u5272\u5408\u306B\u63DB\u7B97\u3057\u307E\u3059\uFF08\u5206\u6BCD\u306F\u305D\u306E\u30E1\u30F3\u30D0\u30FC\u30FB\u305D\u306E\u6708\u306E\u6A19\u6E96\u6642\u9593\u3002\u753B\u9762\u3068\u540C\u3058\u5F0F\uFF09\u3002
|
|
28
29
|
--by-project \u3067\u30E1\u30F3\u30D0\u30FC\xD7\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u884C\u306B\u3057\u307E\u3059\u3002
|
|
30
|
+
\u753B\u9762\u3068\u540C\u3058\u304F\u3001\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\uFF08\u65E2\u5B9A\u306F\u6B63\u793E\u54E1\u4EE5\u5916\u30FB\u624B\u52D5\u3067\u975E\u8868\u793A\u306B\u3057\u305F\u4EBA\uFF09\u306F\u9664\u304D\u307E\u3059\u3002--include-hidden \u3067\u542B\u3081\u307E\u3059\u3002
|
|
29
31
|
\u30BB\u30EB\u5DE5\u6570\u306E\u66F4\u65B0\u306F twp staffing-board cell set \u3067\u3059\uFF08\u753B\u9762\u3068\u540C\u30581\u304B\u6708\u5358\u4F4D\u30FB\u30DC\u30FC\u30C9\u306E\u7DE8\u96C6\u53EF\u304C\u8981\u308A\u307E\u3059\uFF09\u3002
|
|
30
|
-
--output json \u306F\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B excluded_project_ids\uFF08\u3068 --include-tentative \u306A\u3089 tentative_assignments\uFF09\u3092\u8DB3\u3057\u305F\u3082\u306E\u3067\u3001\u63DB\u7B97\u524D\u306E\u5024\u3067\u3059\u3002`,flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,UNIT_FLAG,BY_PROJECT_FLAG,INCLUDE_TENTATIVE_FLAG,USER_FLAG,DEPARTMENT_FLAG],
|
|
31
|
-
input,ctx)},plan:showPlan,plannedNotes:input=>[...boardRangeNotes(boardRange(input,SHOW_USAGE)),`\u3053\u306E\u3042\u3068\u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u8A2D\u5B9A\uFF08GET ${BOARD_PATH}/settings\uFF09${input.flags.has(INCLUDE_TENTATIVE_FLAG.name)?"\u3068\u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08GET \u2026/tentative-assignments\uFF09":""}\u3082\u8AAD\u307F\u307E\u3059\u3002`],
|
|
32
|
-
send({method:"GET",path:`${BOARD_PATH}/settings`}),"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8A2D\u5B9A"));const excluded=Array.isArray(settings["excluded_project_ids"])?settings["excluded_project_ids"].filter(v=>typeof v==="string"):[];let tentatives=null;if(input.flags.has(INCLUDE_TENTATIVE_FLAG.name)){tentatives=listIn(await ctx.send({method:"GET",path:TENTATIVE_PATH,
|
|
33
|
-
board))return board;const view={unit:unitOf(input),byProject:input.flags.has(BY_PROJECT_FLAG.name),excludedProjectIds:excluded,tentatives};return{...board,[VIEW_KEY]:view}},summarize:body=>viewOf(body).byProject?boardProjectRows(body):boardRows(body),raw:body=>{listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9");
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
\
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
takesValue:true,placeholder:"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
usage)
|
|
46
|
-
usage)
|
|
47
|
-
"
|
|
32
|
+
--output json \u306F\u30B5\u30FC\u30D0\u306E\u5FDC\u7B54\u306B excluded_project_ids\uFF08\u3068 --include-tentative \u306A\u3089 tentative_assignments\uFF09\u3092\u8DB3\u3057\u305F\u3082\u306E\u3067\u3001\u63DB\u7B97\u524D\u306E\u5024\u3067\u3059\uFF08\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC\u3082 is_board_visible: false \u3067\u542B\u307F\u307E\u3059\uFF09\u3002`,flags:[MONTH_FLAG,FROM_FLAG,TO_FLAG,UNIT_FLAG,BY_PROJECT_FLAG,INCLUDE_TENTATIVE_FLAG,INCLUDE_HIDDEN_FLAG,USER_FLAG,DEPARTMENT_FLAG],
|
|
33
|
+
forbidden:FORBIDDEN,async prepare(input,ctx){noArgs(input,SHOW_USAGE);boardRange(input,SHOW_USAGE);unitOf(input);return resolveFilters(input,ctx)},plan:showPlan,plannedNotes:input=>[...boardRangeNotes(boardRange(input,SHOW_USAGE)),`\u3053\u306E\u3042\u3068\u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u8A2D\u5B9A\uFF08GET ${BOARD_PATH}/settings\uFF09${input.flags.has(INCLUDE_TENTATIVE_FLAG.name)?"\u3068\u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08GET \u2026/tentative-assignments\uFF09":""}\u3082\u8AAD\u307F\u307E\u3059\u3002`],
|
|
34
|
+
async execute(input,ctx){const plan=showPlan(input);const board=await ctx.send(plan);const settings=recordOf(dataOf(await ctx.send({method:"GET",path:`${BOARD_PATH}/settings`}),"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\u306E\u8A2D\u5B9A"));const excluded=Array.isArray(settings["excluded_project_ids"])?settings["excluded_project_ids"].filter(v=>typeof v==="string"):[];let tentatives=null;if(input.flags.has(INCLUDE_TENTATIVE_FLAG.name)){tentatives=listIn(await ctx.send({method:"GET",path:TENTATIVE_PATH,
|
|
35
|
+
query:{start_ym:plan.query?.["start_ym"],end_ym:plan.query?.["end_ym"]}}),"items","\u4EEE\u30A2\u30B5\u30A4\u30F3")}if(!isRecord(board))return board;const view={unit:unitOf(input),byProject:input.flags.has(BY_PROJECT_FLAG.name),excludedProjectIds:excluded,tentatives,includeHidden:input.flags.has(INCLUDE_HIDDEN_FLAG.name)};return{...board,[VIEW_KEY]:view}},summarize:body=>viewOf(body).byProject?boardProjectRows(body):boardRows(body),raw:body=>{listIn(body,"users","\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9");
|
|
36
|
+
if(!isRecord(body))return body;const view=viewOf(body);const rest={...body,excluded_project_ids:view.excludedProjectIds};if(view.tentatives!==null)rest["tentative_assignments"]=view.tentatives;delete rest[VIEW_KEY];return rest},notes:body=>{const view=viewOf(body);const hidden=hiddenCount(body);return[...periodNote(body),...hidden>0?[view.includeHidden?`\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC ${String(hidden)} \u540D\u3082\u542B\u3081\u3066\u3044\u307E\u3059\u3002`:
|
|
37
|
+
`\u30DC\u30FC\u30C9\u3067\u975E\u8868\u793A\u306E\u30E1\u30F3\u30D0\u30FC ${String(hidden)} \u540D\u3092\u9664\u3044\u3066\u3044\u307E\u3059\uFF08--include-hidden \u3067\u542B\u3081\u307E\u3059\uFF09\u3002`]:[],...view.excludedProjectIds.length>0?[`\u96C6\u8A08\u5BFE\u8C61\u5916\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ${String(view.excludedProjectIds.length)} \u4EF6\u3092\u5408\u8A08\u304B\u3089\u9664\u3044\u3066\u3044\u307E\u3059\u3002`]:[],view.tentatives===null?"\u4EEE\u30A2\u30B5\u30A4\u30F3\u306F\u542B\u307F\u307E\u305B\u3093\uFF08--include-tentat\
|
|
38
|
+
ive \u3067\u8DB3\u3057\u307E\u3059\uFF09\u3002":view.byProject?"--by-project \u306E\u884C\u306F\u6B63\u5F0F\u30A2\u30B5\u30A4\u30F3\u3060\u3051\u3067\u3001\u4EEE\u30A2\u30B5\u30A4\u30F3\u306F\u542B\u307F\u307E\u305B\u3093\u3002":`\u8868\u793A\u3057\u305F\u30E1\u30F3\u30D0\u30FC\u306E\u4EEE\u30A2\u30B5\u30A4\u30F3 ${String(shownTentatives(body,view.tentatives))} \u4EF6\u3092\u5408\u8A08\u306B\u542B\u3081\u3066\u3044\u307E\u3059\u3002`]}};var PROBABILITIES=["confirmed","likely","pre","on_hold"];var PROBABILITY_LABELS={
|
|
39
|
+
confirmed:"\u78BA\u5B9A",likely:"\u307B\u307C\u78BA\u5B9A",pre:"\u30D7\u30EC",on_hold:"\u4FDD\u7559"};var TENTATIVE_USER_FLAG={name:"--user",summary:"\u30E1\u30F3\u30D0\u30FC\uFF08\u6C0F\u540D\u30FB\u30E1\u30FC\u30EB\u30FBID\u30FBme\uFF09",takesValue:true,placeholder:"<\u30E6\u30FC\u30B6\u30FC>"};var TENTATIVE_PROJECT_FLAG={name:"--project",summary:"\u65E2\u5B58\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u30B3\u30FC\u30C9\u30FBID\uFF09",takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"};var PROJECT_NAME_FLAG={
|
|
40
|
+
name:"--project-name",summary:"TWP \u672A\u767B\u9332\u306E\u898B\u8FBC\u307F\u6848\u4EF6\u540D\uFF08200\u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6848\u4EF6\u540D>"};var PROBABILITY_FLAG={name:"--probability",summary:"\u78BA\u5EA6\uFF08confirmed\uFF1D\u78BA\u5B9A / likely\uFF1D\u307B\u307C\u78BA\u5B9A / pre\uFF1D\u30D7\u30EC / on_hold\uFF1D\u4FDD\u7559\uFF09",takesValue:true,placeholder:"<\u78BA\u5EA6>"};var HOURS_FLAG={name:"--hours",summary:"\u6708\u306E\u6642\u9593\uFF08YYYY-MM=\u6642\u9593\uFF09\u3002\u7E70\u308A\u8FD4\u3057\u6307\u5B9A\u3067\u304D\u308B\u3002upd\
|
|
41
|
+
ate \u3067\u306F\u6307\u5B9A\u3057\u305F\u6708\u306E\u96C6\u5408\u3067\u7F6E\u304D\u63DB\u308F\u308B",takesValue:true,placeholder:"<YYYY-MM=\u6642\u9593>",repeatable:true};var NO_HOURS_FLAG={name:"--no-hours",summary:"\u6708\u306E\u6642\u9593\u3092\u7A7A\u306B\u3059\u308B\uFF08\u6642\u671F\u672A\u5B9A\u306E\u898B\u8FBC\u307F\uFF09",takesValue:false};var MEMO_FLAG={name:"--memo",summary:"\u30E1\u30E2\uFF082,000\u6587\u5B57\u307E\u3067\uFF09",takesValue:true,placeholder:"<\u6587\u5B57\u5217>"};var ROLE_FLAG={
|
|
42
|
+
name:"--role",summary:"\u6607\u683C\u6642\u306E\u5F79\u5272\uFF08\u65E2\u5B9A member\u3002\u5024\u306F\u30B5\u30FC\u30D0\u304C\u691C\u67FB\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u5F79\u5272>"};var TENTATIVE_LIST_USAGE="twp staffing-board tentative list [--from <YYYY-MM> --to <YYYY-MM>] [--user <\u30E6\u30FC\u30B6\u30FC>]";var TENTATIVE_CREATE_USAGE="twp staffing-board tentative create --user <\u30E6\u30FC\u30B6\u30FC> (--project <\u30B3\u30FC\u30C9> | --project-name <\u6848\u4EF6\u540D>) --probability <\u78BA\u5EA6> (--hours <YYYY-MM=\u6642\u9593> ... |\
|
|
43
|
+
--no-hours) [--memo <\u6587\u5B57\u5217>]";var TENTATIVE_UPDATE_USAGE="twp staffing-board tentative update <ID> [--user <\u30E6\u30FC\u30B6\u30FC>] [--project <\u30B3\u30FC\u30C9>] [--project-name <\u6848\u4EF6\u540D>] [--probability <\u78BA\u5EA6>] [--hours <YYYY-MM=\u6642\u9593> ... | --no-hours] [--memo <\u6587\u5B57\u5217>]";var TENTATIVE_DELETE_USAGE="twp staffing-board tentative delete <ID> --yes";var TENTATIVE_PROMOTE_USAGE="twp staffing-board tentative promote <ID> [--project <\u30B3\u30FC\u30C9>] [--\
|
|
44
|
+
role <\u5F79\u5272>] --yes";function parseMonthlyHours(values,usage){const out={};for(const raw of values){const match=/^\s*(\d{4}-(?:0[1-9]|1[0-2]))\s*=\s*([0-9]+(?:\.[0-9]+)?)\s*$/.exec(raw);if(match===null)throw new UsageError(`--hours \u306F YYYY-MM=\u6642\u9593 \u306E\u5F62\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage);const[,ym,hours]=match;if(ym in out)throw new UsageError(`--hours \u306B\u540C\u3058\u6708\uFF08${ym}\uFF09\
|
|
45
|
+
\u304C2\u56DE\u3042\u308A\u307E\u3059`,usage);out[ym]=Number(hours)}return out}function probabilityOf(input,usage){const raw=input.flags.get(PROBABILITY_FLAG.name)?.trim();if(raw===void 0)return void 0;if(!PROBABILITIES.includes(raw)){throw new UsageError(`--probability \u306F ${PROBABILITIES.join(" / ")} \u306E\u3044\u305A\u308C\u304B\u3067\u3059\uFF08\u53D7\u3051\u53D6\u3063\u305F\u5024: ${raw}\uFF09`,usage)}return raw}function tentativeBody(input,usage,creating){const body={};const userId=input.
|
|
46
|
+
resolved?.["userId"];const projectId=input.resolved?.["projectId"];const projectName=input.flags.get(PROJECT_NAME_FLAG.name);const probability=probabilityOf(input,usage);const hours=repeatedValues(input,HOURS_FLAG.name);const noHours=input.flags.has(NO_HOURS_FLAG.name);const memo=input.flags.get(MEMO_FLAG.name);if(hours.length>0&&noHours)throw new UsageError("--hours \u3068 --no-hours \u306F\u4F75\u7528\u3067\u304D\u307E\u305B\u3093",usage);if(creating){if(userId===void 0)throw new UsageError("-\
|
|
47
|
+
-user \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(projectId===void 0&&(projectName===void 0||projectName.trim()==="")){throw new UsageError("--project \u304B --project-name \u306E\u3069\u3061\u3089\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage)}if(probability===void 0)throw new UsageError("--probability \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);if(hours.length===0&&!noHours){throw new UsageError("--hours \u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6642\u671F\u672A\u5B9A\u306A\u3089 --no-ho\
|
|
48
|
+
urs\uFF09",usage)}}if(userId!==void 0)body["user_id"]=userId;if(projectId!==void 0)body["project_id"]=projectId;if(projectName!==void 0)body["project_name"]=projectName.trim()===""?null:projectName.trim();if(probability!==void 0)body["probability"]=probability;if(hours.length>0)body["monthly_hours"]=parseMonthlyHours(hours,usage);if(noHours)body["monthly_hours"]={};if(memo!==void 0)body["memo"]=memo===""?null:memo;if(!creating&&Object.keys(body).length===0)throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\
|
|
49
|
+
\u3055\u3044",usage);return body}async function resolveTentativeRefs(input,ctx){const resolved={};const user=input.flags.get(TENTATIVE_USER_FLAG.name);const project=input.flags.get(TENTATIVE_PROJECT_FLAG.name);if(user!==void 0)resolved["userId"]=(await ctx.resolver.user(user,TENTATIVE_USER_FLAG.name)).id;if(project!==void 0)resolved["projectId"]=(await ctx.resolver.project(project)).id;return withResolved(input,resolved)}var TENTATIVE_COLUMNS=["user_id","project_name","probability","hours","memo",
|
|
50
|
+
"project_id","id","updated_at"];function tentativeRow(item){const monthly=recordOf(item["monthly_hours"]);const hours=Object.keys(monthly).sort().map(ym=>`${ym}=${String(monthly[ym])}`).join(" ");const probability=typeof item["probability"]==="string"?item["probability"]:null;return pick({...item,probability:probability===null?null:`${PROBABILITY_LABELS[probability]??probability}\uFF08${probability}\uFF09`,hours},TENTATIVE_COLUMNS)}function tentativeOne(body){const data=dataOf(body,"\u4EEE\u30A2\u30B5\u30A4\u30F3");
|
|
48
51
|
if(!isRecord(data))throw new ApiResponseError("\u4EEE\u30A2\u30B5\u30A4\u30F3\u306E\u5FDC\u7B54\u306E data \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");return data}function tentativeWrite(name){const creating=name==="create";const usage=creating?TENTATIVE_CREATE_USAGE:TENTATIVE_UPDATE_USAGE;return{name,summary:creating?"\u4EEE\u30A2\u30B5\u30A4\u30F3\uFF08\u672A\u767B\u9332\u306E\u898B\u8FBC\u307F\u6848\u4EF6\u3092\u542B\u3080\uFF09\u3092\u767B\u9332\u3059\u308B":
|
|
49
52
|
"\u4EEE\u30A2\u30B5\u30A4\u30F3\u3092\u5909\u66F4\u3059\u308B",usage,description:(creating?"POST /api/v2/analysis/staffing-board/tentative-assignments \u3067\u3059\u3002\u6B63\u30C7\u30FC\u30BF\uFF08ProjectMember\uFF09\u306B\u306F\u5165\u3089\u305A\u3001\u30DC\u30FC\u30C9\u306E\u5225\u8868\u793A\u306B\u3060\u3051\u8F09\u308A\u307E\u3059\u3002\n":"PUT /api/v2/analysis/staffing-board/tentative-assignments/{id} \u3067\u3059\u3002\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308A\u307E\u3059\u3002\n--hours \u306F\u6708\u306E\u96C6\u5408\u3092\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\u307E\u3059\uFF08\u8DB3\u3059\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u6B8B\u3057\u305F\u3044\u6708\u3082\u4E26\u3079\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n")+
|
|
50
53
|
"\u78BA\u5EA6\u306F confirmed\uFF08\u78BA\u5B9A\uFF09/ likely\uFF08\u307B\u307C\u78BA\u5B9A\uFF09/ pre\uFF08\u30D7\u30EC\uFF09/ on_hold\uFF08\u4FDD\u7559\uFF09\u3067\u3059\u3002\u7DE8\u96C6\u53EF\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002",flags:[TENTATIVE_USER_FLAG,TENTATIVE_PROJECT_FLAG,PROJECT_NAME_FLAG,PROBABILITY_FLAG,HOURS_FLAG,NO_HOURS_FLAG,MEMO_FLAG],forbidden:writeForbidden,async prepare(input,ctx){if(creating)noArgs(input,usage);else idArg(input,"\u4EEE\u30A2\u30B5\u30A4\u30F3",
|
|
@@ -107,4 +110,4 @@ void 0)throw new UsageError("--month \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\
|
|
|
107
110
|
\uFF08\u65B0\u3057\u3044\u9806\uFF09",usage:CELL_HISTORY_USAGE,description:"GET /api/v2/analysis/staffing-board/cells/history \u3067\u3059\uFF08\u753B\u9762\u306E\u30BB\u30EB\u306E\u4FEE\u6B63\u5C65\u6B74\u3068\u540C\u3058\uFF09\u3002\n\n"+LIST_PAGING_HELP,flags:[CELL_PROJECT_FLAG,CELL_USER_FLAG,...LIST_FLAGS],paging:envelopePaging({label:"\u30BB\u30EB\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74"}),forbidden:FORBIDDEN,prepare:(input,ctx)=>resolveCellRefs(input,ctx,CELL_HISTORY_USAGE),plan:input=>({
|
|
108
111
|
method:"GET",path:`${CELL_PATH}/history`,query:{project_id:requireResolved(input,"projectId"),user_id:requireResolved(input,"userId"),limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>listIn(body,"items","\u30BB\u30EB\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74").map(row=>({created_at:row["created_at"]??null,created_by_name:row["created_by_name"]??null,action:row["action"]??null,comment:row["comment"]??null,changes:Array.isArray(row["changes"])?
|
|
109
112
|
JSON.stringify(row["changes"]):null,id:row["id"]??null})),raw:body=>listIn(body,"items","\u30BB\u30EB\u5DE5\u6570\u306E\u4FEE\u6B63\u5C65\u6B74")}]};var staffingBoardDomain={name:"staffing-board",summary:"\u8981\u54E1\u8ABF\u6574\u30DC\u30FC\u30C9\uFF08\u30E1\u30F3\u30D0\u30FC\xD7\u6708\u306E\u5DE5\u6570\u8868\u30FB\u30BB\u30EB\u5DE5\u6570\u30FB\u4EEE\u30A2\u30B5\u30A4\u30F3\u30FB\u30E1\u30E2\u30FB\u30B9\u30CA\u30C3\u30D7\u30B7\u30E7\u30C3\u30C8\uFF09",operations:[showOperation],subresources:[cellResource,
|
|
110
|
-
tentativeResource,noteResource,snapshotResource]};export{boardMonthHours,boardProjectRows,boardRange,boardRows,cellHours,defaultBoardRange,diffRows,formatBoardValue,noteTarget,parseMonthlyHours,snapshotRows,staffingBoardDomain,tentativeBody,tentativeRow};
|
|
113
|
+
tentativeResource,noteResource,snapshotResource]};export{boardMonthHours,boardProjectRows,boardRange,boardRows,boardUsers,cellHours,defaultBoardRange,diffRows,formatBoardValue,noteTarget,parseMonthlyHours,snapshotRows,staffingBoardDomain,tentativeBody,tentativeRow};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-
|
|
4
|
-
import{readCsvFileText}from"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import"./chunk-TQ7TNMW5.js";import"./chunk-7KU2EXEE.js";import{USER_REF_FLAG,USER_REF_HELP,prepareUser,userPath}from"./chunk-UVCJXHWN.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import{booleanText,boundedText,isoDate,isoDateValue}from"./chunk-JJSBBWJ5.js";
|
|
5
|
-
import"./chunk-BD7O73GK.js";import{repeatedValues}from"./chunk-VGT2EGH6.js";import{DEPARTMENTS_PATH,ORG_MASTER_LIMIT,POSITIONS_PATH}from"./chunk-4DOPQ74T.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,
|
|
6
|
-
singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";
|
|
3
|
+
import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems}from"./chunk-C6AOVOVD.js";import{FISCAL_YEAR_FLAG,fiscalYear,skillNames}from"./chunk-37ZCPHYE.js";import{LICENSE_FEATURE_NAMES,levelHoldsSeat,permissionMovesSeat,readLicenses}from"./chunk-2J5A4Q7U.js";import"./chunk-Q3B65OFC.js";import{CONCURRENCY,exportOperation,mapPool,pacedSender}from"./chunk-ZFSQJAYZ.js";import"./chunk-FBTOIECJ.js";import{inspectLocalFile,isCommitted,issued}from"./chunk-JULG6KDV.js";
|
|
4
|
+
import{checkUploadQuota}from"./chunk-V64CGX7V.js";import{readCsvFileText}from"./chunk-QLENN5DD.js";import"./chunk-RMFLTSOV.js";import"./chunk-TQ7TNMW5.js";import"./chunk-7KU2EXEE.js";import{USER_REF_FLAG,USER_REF_HELP,prepareUser,userPath}from"./chunk-UVCJXHWN.js";import{createFlags,fieldBody,hasAnyField,resolveRefFields,updateFlags}from"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import{booleanText,boundedText,isoDate,isoDateValue}from"./chunk-JJSBBWJ5.js";
|
|
5
|
+
import"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import{repeatedValues}from"./chunk-VGT2EGH6.js";import{DEPARTMENTS_PATH,ORG_MASTER_LIMIT,POSITIONS_PATH}from"./chunk-4DOPQ74T.js";import{ResolveError,isSafePathSegment}from"./chunk-HVZUXLQ4.js";import{ApiError}from"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import{LIST_FLAGS,LIST_PAGING_HELP,envelopePaging,nonEmpty,positiveInteger,
|
|
6
|
+
shellQuote}from"./chunk-MI6HVYR2.js";import{requireResolved,singleRef,withResolved}from"./chunk-PS5QFKHB.js";import{isRecord,pick}from"./chunk-3ZRMMBP5.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-VFPY2A23.js";import{NotLoggedInError,SessionExpiredError}from"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";
|
|
7
|
+
import"./chunk-VSJBJXZO.js";import fs2 from"fs";var ASSIGNMENT_COLUMNS=["id","department_name","position_name","start_date","end_date","is_primary","is_current","is_approval_route","effective_status"];function assignmentRows(body){const response=isRecord(body)&&"response"in body?body["response"]:body;const list=isRecord(response)?response["list"]:void 0;if(!Array.isArray(list)){throw new ApiResponseError("\u6240\u5C5E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
7
8
|
return list}async function nameMap(ctx,path2,label2){try{const body=await ctx.send({method:"GET",path:path2,query:{limit:ORG_MASTER_LIMIT}});const list=isRecord(body)?body["list"]:void 0;if(!Array.isArray(list))throw new Error(`${label2}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093`);const count=isRecord(body)?body["count"]:void 0;if(typeof count==="number"&&count>list.length){ctx.warn(`${label2}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${list.length} \
|
|
8
9
|
\u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u4E00\u90E8\u306E${label2}\u540D\u306F\u7A7A\u6B04\u3067\u3059\u3002ID \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}const map={};for(const row of list){if(isRecord(row)&&typeof row["id"]==="string"&&typeof row["name"]==="string"){map[row["id"]]=row["name"]}}return map}catch(err){ctx.warn(`${label2}\u540D\u3092\u53D6\u5F97\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081\u3001${label2}\u540D\u306E\u5217\u306F\u7A7A\u6B04\u3067\u3059\uFF08${err.
|
|
9
10
|
message}\uFF09\u3002ID \u306F --output json \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`);return{}}}function assignmentPlan(input){const suffix=input.flags.has("--current")?"/assignments/current":"/assignments";return{method:"GET",path:`/api/v2/organization/users/${userPath(input,suffix)}`}}var listOperation={name:"list",summary:"\u30E6\u30FC\u30B6\u30FC\u306E\u6240\u5C5E\u306E\u5C65\u6B74\u3092\u4E00\u89A7\u3059\u308B",usage:"twp user assignment list <\u30E6\u30FC\u30B6\u30FC> [--current]",
|
package/package.json
CHANGED
package/dist/project-2MWLBXAB.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
-
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems,projectDomain}from"./chunk-QKTEMDDP.js";import"./chunk-FBTOIECJ.js";import"./chunk-TQ7TNMW5.js";import"./chunk-7KU2EXEE.js";import"./chunk-UVCJXHWN.js";import"./chunk-45WIRMGL.js";import"./chunk-EXT4AIDF.js";import"./chunk-JJSBBWJ5.js";import"./chunk-HEH3PUW2.js";import"./chunk-W4NLJ2YK.js";import"./chunk-BD7O73GK.js";import"./chunk-VGT2EGH6.js";import"./chunk-4DOPQ74T.js";
|
|
4
|
-
import"./chunk-HVZUXLQ4.js";import"./chunk-JA5A6UJ2.js";import"./chunk-MMVXE2CJ.js";import"./chunk-II5RVJQN.js";import"./chunk-MI6HVYR2.js";import"./chunk-PS5QFKHB.js";import"./chunk-3ZRMMBP5.js";import"./chunk-VFPY2A23.js";import"./chunk-J7QYPKVK.js";import"./chunk-EDF4U5BT.js";import"./chunk-RZVI6PMW.js";import"./chunk-OKATZ4SN.js";import"./chunk-NHYMHCAT.js";import"./chunk-VSJBJXZO.js";export{ASSIGNED_PROJECT_COLUMNS,assignedProjectItems,projectDomain};
|