@newpeak/barista-cli 0.2.199 → 0.2.205

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.
Files changed (63) hide show
  1. package/dist/commands/liberica/teams/fp-config/index.d.ts +3 -0
  2. package/dist/commands/liberica/teams/fp-config/index.d.ts.map +1 -0
  3. package/dist/commands/liberica/teams/fp-config/index.js +15 -0
  4. package/dist/commands/liberica/teams/fp-config/index.js.map +1 -0
  5. package/dist/commands/liberica/teams/fp-config/list.d.ts +3 -0
  6. package/dist/commands/liberica/teams/fp-config/list.d.ts.map +1 -0
  7. package/dist/commands/liberica/teams/fp-config/list.js +43 -0
  8. package/dist/commands/liberica/teams/fp-config/list.js.map +1 -0
  9. package/dist/commands/liberica/teams/fp-config/reset.d.ts +3 -0
  10. package/dist/commands/liberica/teams/fp-config/reset.d.ts.map +1 -0
  11. package/dist/commands/liberica/teams/fp-config/reset.js +48 -0
  12. package/dist/commands/liberica/teams/fp-config/reset.js.map +1 -0
  13. package/dist/commands/liberica/teams/fp-config/set-project.d.ts +3 -0
  14. package/dist/commands/liberica/teams/fp-config/set-project.d.ts.map +1 -0
  15. package/dist/commands/liberica/teams/fp-config/set-project.js +56 -0
  16. package/dist/commands/liberica/teams/fp-config/set-project.js.map +1 -0
  17. package/dist/commands/liberica/teams/fp-config/set-team.d.ts +3 -0
  18. package/dist/commands/liberica/teams/fp-config/set-team.d.ts.map +1 -0
  19. package/dist/commands/liberica/teams/fp-config/set-team.js +65 -0
  20. package/dist/commands/liberica/teams/fp-config/set-team.js.map +1 -0
  21. package/dist/commands/liberica/teams/index.d.ts.map +1 -1
  22. package/dist/commands/liberica/teams/index.js +2 -0
  23. package/dist/commands/liberica/teams/index.js.map +1 -1
  24. package/dist/commands/liberica/teams/issues/fp-actual.d.ts.map +1 -1
  25. package/dist/commands/liberica/teams/issues/fp-actual.js +17 -21
  26. package/dist/commands/liberica/teams/issues/fp-actual.js.map +1 -1
  27. package/dist/commands/liberica/teams/issues/fp-calibrate.d.ts +4 -0
  28. package/dist/commands/liberica/teams/issues/fp-calibrate.d.ts.map +1 -0
  29. package/dist/commands/liberica/teams/issues/fp-calibrate.js +175 -0
  30. package/dist/commands/liberica/teams/issues/fp-calibrate.js.map +1 -0
  31. package/dist/commands/liberica/teams/issues/fp-estimate.d.ts.map +1 -1
  32. package/dist/commands/liberica/teams/issues/fp-estimate.js +18 -35
  33. package/dist/commands/liberica/teams/issues/fp-estimate.js.map +1 -1
  34. package/dist/commands/liberica/teams/issues/fp-guide.d.ts +3 -0
  35. package/dist/commands/liberica/teams/issues/fp-guide.d.ts.map +1 -0
  36. package/dist/commands/liberica/teams/issues/fp-guide.js +199 -0
  37. package/dist/commands/liberica/teams/issues/fp-guide.js.map +1 -0
  38. package/dist/commands/liberica/teams/issues/fp-review.d.ts.map +1 -1
  39. package/dist/commands/liberica/teams/issues/fp-review.js +15 -11
  40. package/dist/commands/liberica/teams/issues/fp-review.js.map +1 -1
  41. package/dist/commands/liberica/teams/issues/fp-stats.d.ts +3 -0
  42. package/dist/commands/liberica/teams/issues/fp-stats.d.ts.map +1 -0
  43. package/dist/commands/liberica/teams/issues/fp-stats.js +126 -0
  44. package/dist/commands/liberica/teams/issues/fp-stats.js.map +1 -0
  45. package/dist/commands/liberica/teams/issues/fp-summary.d.ts.map +1 -1
  46. package/dist/commands/liberica/teams/issues/fp-summary.js +15 -23
  47. package/dist/commands/liberica/teams/issues/fp-summary.js.map +1 -1
  48. package/dist/commands/liberica/teams/issues/index.d.ts.map +1 -1
  49. package/dist/commands/liberica/teams/issues/index.js +10 -0
  50. package/dist/commands/liberica/teams/issues/index.js.map +1 -1
  51. package/dist/core/api/client.d.ts +12 -6
  52. package/dist/core/api/client.d.ts.map +1 -1
  53. package/dist/core/api/client.js +69 -12
  54. package/dist/core/api/client.js.map +1 -1
  55. package/dist/types/fp-config.d.ts +35 -0
  56. package/dist/types/fp-config.d.ts.map +1 -0
  57. package/dist/types/fp-config.js +2 -0
  58. package/dist/types/fp-config.js.map +1 -0
  59. package/dist/types/fp-evaluation.d.ts +23 -127
  60. package/dist/types/fp-evaluation.d.ts.map +1 -1
  61. package/package.json +1 -1
  62. package/skills/barista-cli/data/commands.json +39 -5
  63. package/skills/barista-cli/data/commands.yaml +30 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-calibrate.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-calibrate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fp-estimate.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-estimate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,uBAAuB,IAAI,OAAO,CA0EjD"}
1
+ {"version":3,"file":"fp-estimate.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-estimate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,uBAAuB,IAAI,OAAO,CA0DjD"}
@@ -5,49 +5,38 @@ import { apiClient } from '../../../../core/api/client.js';
5
5
  import { shouldUseJson } from '../../../../utils/output.js';
6
6
  export function createFpEstimateCommand() {
7
7
  const cmd = new Command('fp-estimate');
8
- cmd.description('Submit an FP estimate');
9
- cmd.option('--project-id <id>', 'Project ID');
10
- cmd.option('--estimate-name <name>', 'Estimate name');
11
- cmd.option('--method-type <type>', 'Method type: INDICATIVE | ESTIMATED | DETAILED');
8
+ cmd.description('Submit an FP estimate for a team issue');
9
+ cmd.option('--issue-id <id>', 'Team issue ID (required)');
10
+ cmd.option('--pre-fp <number>', 'Estimated function points');
11
+ cmd.option('--detail-json <json>', 'FP detail JSON (e.g. [{"componentType":"EI","count":10,"fp":30}])');
12
+ cmd.option('--estimator <name>', 'Estimator name');
12
13
  cmd.option('--json', 'Output as JSON');
13
14
  cmd.action(async (options) => {
14
15
  const context = configManager.getCurrentContext();
15
16
  const environment = options.env || context.environment;
16
17
  const tenant = options.tenant || context.tenant;
17
18
  const outputJson = shouldUseJson(options);
18
- if (!options.projectId) {
19
+ if (!options.issueId) {
19
20
  if (outputJson) {
20
- console.log(JSON.stringify({ success: false, error: { code: 'MISSING_PROJECT_ID', message: '--project-id is required' } }));
21
+ console.log(JSON.stringify({ success: false, error: { code: 'MISSING_ISSUE_ID', message: '--issue-id is required' } }));
21
22
  }
22
23
  else {
23
- console.error(chalk.red('\n✗ Error: --project-id is required\n'));
24
- }
25
- process.exit(1);
26
- }
27
- if (!options.estimateName) {
28
- if (outputJson) {
29
- console.log(JSON.stringify({ success: false, error: { code: 'MISSING_ESTIMATE_NAME', message: '--estimate-name is required' } }));
30
- }
31
- else {
32
- console.error(chalk.red('\n✗ Error: --estimate-name is required\n'));
33
- }
34
- process.exit(1);
35
- }
36
- if (!options.methodType) {
37
- if (outputJson) {
38
- console.log(JSON.stringify({ success: false, error: { code: 'MISSING_METHOD_TYPE', message: '--method-type is required' } }));
39
- }
40
- else {
41
- console.error(chalk.red('\n✗ Error: --method-type is required\n'));
24
+ console.error(chalk.red('\n✗ Error: --issue-id is required\n'));
42
25
  }
43
26
  process.exit(1);
44
27
  }
45
28
  const data = {
46
- projectId: options.projectId,
47
- estimateName: options.estimateName,
48
- methodType: options.methodType,
49
- components: [],
29
+ teamIssueId: options.issueId,
50
30
  };
31
+ if (options.preFp !== undefined) {
32
+ data.preFpEstimate = parseInt(options.preFp, 10);
33
+ }
34
+ if (options.detailJson) {
35
+ data.preFpDetailJson = options.detailJson;
36
+ }
37
+ if (options.estimator) {
38
+ data.preFpEstimator = options.estimator;
39
+ }
51
40
  const response = await apiClient.fpEstimate(environment, tenant, data);
52
41
  if (!response.success) {
53
42
  if (outputJson) {
@@ -63,12 +52,6 @@ export function createFpEstimateCommand() {
63
52
  }
64
53
  else {
65
54
  console.log(chalk.green('\n✓ FP estimate submitted successfully\n'));
66
- if (response.data && 'fpEvaluationId' in response.data) {
67
- console.log(` ID: ${response.data.fpEvaluationId}`);
68
- if ('totalFunctionPoints' in response.data) {
69
- console.log(` Total FP: ${response.data.totalFunctionPoints}`);
70
- }
71
- }
72
55
  }
73
56
  });
74
57
  return cmd;
@@ -1 +1 @@
1
- {"version":3,"file":"fp-estimate.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-estimate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fp-estimate.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-estimate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createFpGuideCommand(): Command;
3
+ //# sourceMappingURL=fp-guide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-guide.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwLpC,wBAAgB,oBAAoB,IAAI,OAAO,CA6B9C"}
@@ -0,0 +1,199 @@
1
+ import { Command } from 'commander';
2
+ import { shouldUseJson } from '../../../../utils/output.js';
3
+ function getSectionContent(sectionId) {
4
+ const sections = {
5
+ component: {
6
+ id: 'component',
7
+ title: 'NESMA Function Point Component Identification',
8
+ content: `NESMA defines five function point component types for measuring software size:
9
+
10
+ Internal Logical Files (ILF)
11
+ An ILF is a user-identifiable group of logically related data or control
12
+ information maintained by the application. It is an internally stored file
13
+ that is modified (created, updated, deleted) through Elementary Processes.
14
+
15
+ External Interface Files (EIF)
16
+ An EIF is a user-identifiable group of logically related data referenced
17
+ by the application but maintained by another application. It is read-only
18
+ from the perspective of the current application.
19
+
20
+ External Inputs (EI)
21
+ An EI is an Elementary Process that processes data or control information
22
+ from outside the application boundary. It maintains one or more ILFs or
23
+ alters system behavior.
24
+
25
+ External Outputs (EO)
26
+ An EO is an Elementary Process that sends data or control information
27
+ outside the application boundary. It involves calculations or derived data.
28
+
29
+ External Queries (EQ)
30
+ An EQ is an Elementary Process that sends data or control information
31
+ outside the application boundary. It retrieves data without calculations
32
+ or derived data.
33
+
34
+ Decision Tree (simplified):
35
+ 1. Does the process maintain an ILF?
36
+ - Yes → Is the data derived? → Yes = EO, No = EI
37
+ - No → Is the application boundary crossed?
38
+ → Yes = EQ, No = Not FP-countable
39
+
40
+ ERP Business Scenario Examples:
41
+ - ILF: Customer Master, Material Master, Sales Order Header
42
+ - EIF: Customer Credit Rating (from external system)
43
+ - EI: Create Sales Order, Post Goods Receipt, Confirm Production
44
+ - EO: Monthly Billing Report, Inventory Aging Analysis
45
+ - EQ: Check Stock Level, Lookup Customer Balance`,
46
+ },
47
+ matrix: {
48
+ id: 'matrix',
49
+ title: 'NESMA Complexity Matrix (Estimated Method)',
50
+ content: `The complexity of each function type is determined by the number of
51
+ Data Element Types (DETs) and Record Element Types (RETs) or
52
+ File Types Referenced (FTRs).
53
+
54
+ ILF/EIF Complexity (DET × RET):
55
+ 1-19 DETs 20-50 DETs 51+ DETs
56
+ 1 RET LOW LOW AVERAGE
57
+ 2-5 RETs LOW AVERAGE HIGH
58
+ 6+ RETs AVERAGE HIGH HIGH
59
+
60
+ EI Complexity (DET × FTR):
61
+ 1-4 DETs 5-15 DETs 16+ DETs
62
+ 0-1 FTRs LOW LOW AVERAGE
63
+ 2 FTRs LOW AVERAGE HIGH
64
+ 3+ FTRs AVERAGE HIGH HIGH
65
+
66
+ EO/EQ Complexity (DET × FTR):
67
+ 1-5 DETs 6-19 DETs 20+ DETs
68
+ 0-1 FTRs LOW LOW AVERAGE
69
+ 2-3 FTRs LOW AVERAGE HIGH
70
+ 4+ FTRs AVERAGE HIGH HIGH
71
+
72
+ Complexity Weights:
73
+ Component LOW AVERAGE HIGH
74
+ ILF 7 10 15
75
+ EIF 5 7 10
76
+ EI 4 5 7
77
+ EO 3 4 6
78
+ EQ 3 4 6`,
79
+ },
80
+ method: {
81
+ id: 'method',
82
+ title: 'NESMA Counting Methods',
83
+ content: `NESMA defines three counting methods with increasing precision:
84
+
85
+ 1. Indicative Function Point Analysis (快速估算)
86
+ Uses only ILF and EIF counts. No DET/RET analysis needed.
87
+
88
+ Formula: FP = (35 × #ILF) + (15 × #EIF)
89
+
90
+ Best for: Early-stage scoping, feasibility studies, budget estimation
91
+ Accuracy: +/- 25% typically
92
+
93
+ 2. Estimated Function Point Analysis (标准估算)
94
+ Classifies each component as LOW, AVERAGE, or HIGH using
95
+ the complexity matrix. Most commonly used method.
96
+
97
+ Formula: FP = Sum of all component weights
98
+ = (ILF_low × 7) + (ILF_avg × 10) + (ILF_high × 15) + ...
99
+
100
+ Best for: Project planning, pricing, baseline measurement
101
+ Accuracy: +/- 15% typically
102
+
103
+ 3. Detailed Function Point Analysis (详细计数)
104
+ Full DET/RET (or DET/FTR) counting for every component.
105
+ Each component's complexity is individually determined.
106
+
107
+ Best for: Fixed-price contracts, regulatory compliance
108
+ Accuracy: +/- 5% typically
109
+
110
+ Method Selection Guide:
111
+ Phase Recommended Method
112
+ --------------------------------------------
113
+ Feasibility/Scoping Indicative
114
+ Project Planning Estimated
115
+ Pricing/Contract Estimated or Detailed
116
+ Acceptance Testing Detailed
117
+ Benchmarking Estimated`,
118
+ },
119
+ example: {
120
+ id: 'example',
121
+ title: 'NESMA Enhancement Project Example',
122
+ content: `Enhancement Function Point Analysis (EFPA) measures the size of changes
123
+ to an existing application.
124
+
125
+ EFPA Formula:
126
+ EFP = ADDED + CHANGED + DELETED
127
+
128
+ Where:
129
+ ADDED = Function points of new components added
130
+ CHANGED = Function points of changed components × Impact Factor
131
+ DELETED = Function points of deleted components
132
+
133
+ Impact Factor:
134
+ Determines how much of a component was changed:
135
+
136
+ Impact Level Factor Description
137
+ --------------------------------------------
138
+ Low 0.25 1-2 data elements changed, no structural change
139
+ Average 0.50 3-10 data elements or minor structural change
140
+ High 0.75 Significant structural change, >10 data elements
141
+ Complete 1.00 Component completely replaced
142
+
143
+ Example Scenario: Modify Customer Management Module
144
+
145
+ ADDED:
146
+ - New field "Preferred Language" in Customer Master (ILF): 7 FP
147
+ - New "Customer Preference" sub-screen (EO): 4 FP
148
+ - Total ADDED: 11 FP
149
+
150
+ CHANGED:
151
+ - Customer Search (EQ): Improved search criteria
152
+ - Pre: 3 FP, Post: 4 FP, Impact: AVERAGE (0.50)
153
+ - CHANGED = 4 × 0.50 = 2 FP
154
+ - Total CHANGED: 2 FP
155
+
156
+ DELETED:
157
+ - Legacy "Customer Group" report (EO): 3 FP
158
+
159
+ EFPA = 11 + 2 + 3 = 16 FP
160
+
161
+ PDR-Based Effort Estimation:
162
+ Effort (hours) = FP × PDR (Process Delivery Rate)
163
+
164
+ Example: 16 FP × 8.5 hours/FP = 136 hours (approximately 17 person-days)`,
165
+ },
166
+ };
167
+ return sections[sectionId] || sections.component;
168
+ }
169
+ function getAllSections() {
170
+ return ['component', 'matrix', 'method', 'example'].map(id => getSectionContent(id));
171
+ }
172
+ export function createFpGuideCommand() {
173
+ const cmd = new Command('fp-guide');
174
+ cmd.description('NESMA function point evaluation methodology reference guide');
175
+ cmd.option('--section <id>', 'Section to display: component, matrix, method, example');
176
+ cmd.option('--json', 'Output as JSON');
177
+ cmd.action(async (options) => {
178
+ const outputJson = shouldUseJson(options);
179
+ let sections;
180
+ if (options.section) {
181
+ sections = [getSectionContent(options.section)];
182
+ }
183
+ else {
184
+ sections = getAllSections();
185
+ }
186
+ if (outputJson) {
187
+ console.log(JSON.stringify({ sections }, null, 2));
188
+ }
189
+ else {
190
+ for (const section of sections) {
191
+ console.log(`\n═══ ${section.title} ═══\n`);
192
+ console.log(section.content);
193
+ }
194
+ console.log();
195
+ }
196
+ });
197
+ return cmd;
198
+ }
199
+ //# sourceMappingURL=fp-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-guide.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAQ5D,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,MAAM,QAAQ,GAAiC;QAC7C,SAAS,EAAE;YACT,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,+CAA+C;YACtD,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAqCsC;SAChD;QAED,MAAM,EAAE;YACN,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,4CAA4C;YACnD,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA4B2B;SACrC;QAED,MAAM,EAAE;YACN,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAkCqB;SAC/B;QAED,OAAO,EAAE;YACP,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,mCAAmC;YAC1C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA0C8D;SACxE;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,GAAG,CAAC,WAAW,CAAC,6DAA6D,CAAC,CAAC;IAE/E,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,wDAAwD,CAAC,CAAC;IACvF,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEvC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,QAAwB,CAAC;QAC7B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,cAAc,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fp-review.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,IAAI,OAAO,CAuE/C"}
1
+ {"version":3,"file":"fp-review.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,IAAI,OAAO,CA2E/C"}
@@ -5,22 +5,23 @@ import { apiClient } from '../../../../core/api/client.js';
5
5
  import { shouldUseJson } from '../../../../utils/output.js';
6
6
  export function createFpReviewCommand() {
7
7
  const cmd = new Command('fp-review');
8
- cmd.description('Review an FP estimate');
9
- cmd.option('--evaluation-id <id>', 'FP evaluation ID');
8
+ cmd.description('Review (approve/reject) an FP estimate for a team issue');
9
+ cmd.option('--issue-id <id>', 'Team issue ID (required)');
10
10
  cmd.option('--status <status>', 'Review status: APPROVED | REJECTED');
11
- cmd.option('--comment <text>', 'Review comment');
11
+ cmd.option('--note <text>', 'Review note');
12
+ cmd.option('--reviewer <name>', 'Reviewer name');
12
13
  cmd.option('--json', 'Output as JSON');
13
14
  cmd.action(async (options) => {
14
15
  const context = configManager.getCurrentContext();
15
16
  const environment = options.env || context.environment;
16
17
  const tenant = options.tenant || context.tenant;
17
18
  const outputJson = shouldUseJson(options);
18
- if (!options.evaluationId) {
19
+ if (!options.issueId) {
19
20
  if (outputJson) {
20
- console.log(JSON.stringify({ success: false, error: { code: 'MISSING_EVALUATION_ID', message: '--evaluation-id is required' } }));
21
+ console.log(JSON.stringify({ success: false, error: { code: 'MISSING_ISSUE_ID', message: '--issue-id is required' } }));
21
22
  }
22
23
  else {
23
- console.error(chalk.red('\n✗ Error: --evaluation-id is required\n'));
24
+ console.error(chalk.red('\n✗ Error: --issue-id is required\n'));
24
25
  }
25
26
  process.exit(1);
26
27
  }
@@ -44,11 +45,14 @@ export function createFpReviewCommand() {
44
45
  process.exit(1);
45
46
  }
46
47
  const data = {
47
- fpEvaluationId: options.evaluationId,
48
- status: options.status,
48
+ teamIssueId: options.issueId,
49
+ fpReviewStatus: options.status,
49
50
  };
50
- if (options.comment) {
51
- data.reviewComment = options.comment;
51
+ if (options.note) {
52
+ data.fpReviewNote = options.note;
53
+ }
54
+ if (options.reviewer) {
55
+ data.fpReviewer = options.reviewer;
52
56
  }
53
57
  const response = await apiClient.fpReview(environment, tenant, data);
54
58
  if (!response.success) {
@@ -64,7 +68,7 @@ export function createFpReviewCommand() {
64
68
  console.log(JSON.stringify(response, null, 2));
65
69
  }
66
70
  else {
67
- console.log(chalk.green(`\n✓ FP estimate ${options.status.toLowerCase()} successfully\n`));
71
+ console.log(chalk.green(`\n✓ FP ${options.status === 'APPROVED' ? 'approved' : 'rejected'} successfully\n`));
68
72
  }
69
73
  });
70
74
  return cmd;
@@ -1 +1 @@
1
- {"version":3,"file":"fp-review.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fp-review.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createFpStatsCommand(): Command;
3
+ //# sourceMappingURL=fp-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-stats.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,wBAAgB,oBAAoB,IAAI,OAAO,CA4G9C"}
@@ -0,0 +1,126 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { configManager } from '../../../../core/config/manager.js';
4
+ import { apiClient } from '../../../../core/api/client.js';
5
+ import { shouldUseJson } from '../../../../utils/output.js';
6
+ function getLoadCheckLabel(status) {
7
+ switch (status) {
8
+ case 'overload': return '超载';
9
+ case 'underload': return '不足';
10
+ case 'normal': return '正常';
11
+ default: return '无数据';
12
+ }
13
+ }
14
+ function formatModuleStats(moduleStats) {
15
+ if (!moduleStats || moduleStats.length === 0)
16
+ return '无';
17
+ return moduleStats.map(m => `${m.projectName || '未知'}: ${m.count ?? 0} issues, ${m.fpActual ?? m.fpEstimate ?? 0} FP`).join(' | ');
18
+ }
19
+ function formatDeviationWarnings(warnings) {
20
+ if (!warnings || warnings.length === 0)
21
+ return '无';
22
+ return warnings.map(w => `${w.teamIssueCode || ''} ${w.issueTitle || ''} (偏差: ${w.deviationPercent?.toFixed(1) ?? '?'}%)`).join('\n ');
23
+ }
24
+ export function createFpStatsCommand() {
25
+ const cmd = new Command('fp-stats');
26
+ cmd.description('FP multi-dimensional statistics and time series analysis');
27
+ cmd.option('--project-id <id>', 'Filter by project ID');
28
+ cmd.option('--tag <tag>', 'Filter by tag');
29
+ cmd.option('--from <date>', 'Start date (YYYY-MM-DD)');
30
+ cmd.option('--to <date>', 'End date (YYYY-MM-DD)');
31
+ cmd.option('--by-day', 'Group by day');
32
+ cmd.option('--by-week', 'Group by week');
33
+ cmd.option('--by-month', 'Group by month');
34
+ cmd.option('--health', 'Include team load health check');
35
+ cmd.option('--json', 'Output as JSON');
36
+ cmd.action(async (options) => {
37
+ const context = configManager.getCurrentContext();
38
+ const environment = options.env || context.environment;
39
+ const tenant = options.tenant || context.tenant;
40
+ const outputJson = shouldUseJson(options);
41
+ const params = {};
42
+ if (options.projectId)
43
+ params.projectId = options.projectId;
44
+ if (options.tag)
45
+ params.tag = options.tag;
46
+ if (options.from)
47
+ params.startDate = options.from;
48
+ if (options.to)
49
+ params.endDate = options.to;
50
+ if (options.byDay)
51
+ params.groupBy = 'day';
52
+ else if (options.byWeek)
53
+ params.groupBy = 'week';
54
+ else if (options.byMonth)
55
+ params.groupBy = 'month';
56
+ const response = await apiClient.fpStats(environment, tenant, params);
57
+ if (!response.success) {
58
+ if (outputJson) {
59
+ console.log(JSON.stringify(response));
60
+ }
61
+ else {
62
+ console.error(chalk.red(`\n✗ Error: ${response.error?.message || 'Unknown error'}\n`));
63
+ }
64
+ process.exit(1);
65
+ }
66
+ const data = response.data || {};
67
+ if (outputJson) {
68
+ const output = { success: true, data: {} };
69
+ const d = output.data;
70
+ d.totalIssues = data.totalIssues;
71
+ d.totalFpEstimate = data.totalFpEstimate;
72
+ d.totalFpActual = data.totalFpActual;
73
+ d.avgFpEstimate = data.avgFpEstimate;
74
+ d.avgFpActual = data.avgFpActual;
75
+ d.deviationThreshold = data.deviationThreshold;
76
+ if (options.health || data.loadCheckStatus) {
77
+ d.loadCheckStatus = data.loadCheckStatus;
78
+ d.estimatedWorkDays = data.estimatedWorkDays;
79
+ }
80
+ d.datePoints = data.datePoints || [];
81
+ d.moduleStats = data.moduleStats || [];
82
+ d.deviationWarnings = data.deviationWarnings || [];
83
+ if (d.datePoints && Array.isArray(d.datePoints) && d.datePoints.length > 0) {
84
+ d.hasTimeBuckets = true;
85
+ }
86
+ console.log(JSON.stringify(output, null, 2));
87
+ }
88
+ else {
89
+ console.log(chalk.bold('\n=== FP Statistics ===\n'));
90
+ console.log(` ${chalk.cyan('Total Issues:')} ${data.totalIssues ?? 0}`);
91
+ console.log(` ${chalk.cyan('Total FP Estimate:')} ${data.totalFpEstimate ?? 0}`);
92
+ console.log(` ${chalk.cyan('Total FP Actual:')} ${data.totalFpActual ?? 0}`);
93
+ console.log(` ${chalk.cyan('Avg FP Estimate:')} ${data.avgFpEstimate != null ? Number(data.avgFpEstimate).toFixed(1) : '-'}`);
94
+ console.log(` ${chalk.cyan('Avg FP Actual:')} ${data.avgFpActual != null ? Number(data.avgFpActual).toFixed(1) : '-'}`);
95
+ console.log(` ${chalk.cyan('Threshold:')} ${data.deviationThreshold != null ? (Number(data.deviationThreshold) * 100).toFixed(0) + '%' : '20%'}`);
96
+ if (options.health || data.loadCheckStatus) {
97
+ const loadStatus = data.loadCheckStatus;
98
+ const workDays = data.estimatedWorkDays;
99
+ console.log(` ${chalk.cyan('Load Check:')} ${getLoadCheckLabel(loadStatus)}`);
100
+ if (workDays != null) {
101
+ console.log(` ${chalk.cyan('Est. Work Days:')} ${workDays}`);
102
+ }
103
+ }
104
+ const datePoints = data.datePoints;
105
+ if (datePoints && datePoints.length > 0) {
106
+ console.log(` ${chalk.cyan('Time Series:')} ${datePoints.length} data points`);
107
+ const recent = datePoints.slice(-3);
108
+ for (const dp of recent) {
109
+ console.log(` ${dp.datePoint || '-'}: ${dp.count ?? 0} issues, ${dp.fpActual ?? dp.fpEstimate ?? 0} FP`);
110
+ }
111
+ }
112
+ const moduleStats = data.moduleStats;
113
+ if (moduleStats && moduleStats.length > 0) {
114
+ console.log(` ${chalk.cyan('By Module:')} ${formatModuleStats(moduleStats)}`);
115
+ }
116
+ const deviationWarnings = data.deviationWarnings;
117
+ if (deviationWarnings && deviationWarnings.length > 0) {
118
+ console.log(` ${chalk.yellow('Deviation Warnings:')}`);
119
+ console.log(` ${formatDeviationWarnings(deviationWarnings)}`);
120
+ }
121
+ console.log();
122
+ }
123
+ });
124
+ return cmd;
125
+ }
126
+ //# sourceMappingURL=fp-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp-stats.js","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-stats.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fp-summary.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,sBAAsB,IAAI,OAAO,CAgDhD"}
1
+ {"version":3,"file":"fp-summary.d.ts","sourceRoot":"","sources":["../../../../../src/commands/liberica/teams/issues/fp-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,sBAAsB,IAAI,OAAO,CA6ChD"}
@@ -5,26 +5,26 @@ import { apiClient } from '../../../../core/api/client.js';
5
5
  import { shouldUseJson } from '../../../../utils/output.js';
6
6
  export function createFpSummaryCommand() {
7
7
  const cmd = new Command('fp-summary');
8
- cmd.description('Get FP summary statistics');
9
- cmd.option('--project-id <id>', 'Filter by project ID');
10
- cmd.option('--start-date <date>', 'Start date');
11
- cmd.option('--end-date <date>', 'End date');
12
- cmd.option('--method-type <type>', 'Filter by method type');
8
+ cmd.description('Get FP summary for a team issue');
9
+ cmd.option('--issue-id <id>', 'Team issue ID (required)');
13
10
  cmd.option('--json', 'Output as JSON');
14
11
  cmd.action(async (options) => {
15
12
  const context = configManager.getCurrentContext();
16
13
  const environment = options.env || context.environment;
17
14
  const tenant = options.tenant || context.tenant;
18
15
  const outputJson = shouldUseJson(options);
19
- const params = {};
20
- if (options.projectId)
21
- params.projectId = options.projectId;
22
- if (options.startDate)
23
- params.startDate = options.startDate;
24
- if (options.endDate)
25
- params.endDate = options.endDate;
26
- if (options.methodType)
27
- params.methodType = options.methodType;
16
+ if (!options.issueId) {
17
+ if (outputJson) {
18
+ console.log(JSON.stringify({ success: false, error: { code: 'MISSING_ISSUE_ID', message: '--issue-id is required' } }));
19
+ }
20
+ else {
21
+ console.error(chalk.red('\n✗ Error: --issue-id is required\n'));
22
+ }
23
+ process.exit(1);
24
+ }
25
+ const params = {
26
+ teamIssueId: options.issueId,
27
+ };
28
28
  const response = await apiClient.fpSummary(environment, tenant, params);
29
29
  if (!response.success) {
30
30
  if (outputJson) {
@@ -39,15 +39,7 @@ export function createFpSummaryCommand() {
39
39
  console.log(JSON.stringify(response, null, 2));
40
40
  }
41
41
  else {
42
- if (response.data && 'totalEstimates' in response.data) {
43
- console.log(chalk.bold('\nFP Summary'));
44
- console.log(` Total Projects: ${response.data.totalProjects}`);
45
- console.log(` Total Estimates: ${response.data.totalEstimates}`);
46
- console.log(` Total Function Points: ${response.data.totalFunctionPoints}`);
47
- }
48
- else {
49
- console.log(chalk.green('\n✓ FP summary retrieved\n'));
50
- }
42
+ console.log(chalk.green('\n✓ FP summary retrieved successfully\n'));
51
43
  }
52
44
  });
53
45
  return cmd;