@things-factory/figure-service 10.1.25 → 10.1.27

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 (34) hide show
  1. package/coverage/clover.xml +6 -0
  2. package/coverage/coverage-final.json +1 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +87 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +101 -0
  7. package/coverage/lcov-report/prettify.css +1 -0
  8. package/coverage/lcov-report/prettify.js +2 -0
  9. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  10. package/coverage/lcov-report/sorter.js +210 -0
  11. package/coverage/lcov.info +0 -0
  12. package/dist-server/service/figure/figure-propose.js +32 -12
  13. package/dist-server/service/figure/figure-propose.js.map +1 -1
  14. package/dist-server/service/figure/figure-query.js +29 -27
  15. package/dist-server/service/figure/figure-query.js.map +1 -1
  16. package/dist-server/service/figure/figure-source.js +6 -7
  17. package/dist-server/service/figure/figure-source.js.map +1 -1
  18. package/dist-server/service/figure/figure-tools.js +4 -3
  19. package/dist-server/service/figure/figure-tools.js.map +1 -1
  20. package/dist-server/tsconfig.tsbuildinfo +1 -0
  21. package/logs/application-2026-09-14-23.log +0 -0
  22. package/package.json +5 -5
  23. package/server/service/figure/figure-ai-flow.test.ts +2 -2
  24. package/server/service/figure/figure-blueprint-query.test.ts +43 -4
  25. package/server/service/figure/figure-gate.test.ts +8 -6
  26. package/server/service/figure/figure-llm-smoke.test.ts +3 -3
  27. package/server/service/figure/figure-propose.test.ts +43 -17
  28. package/server/service/figure/figure-propose.ts +35 -13
  29. package/server/service/figure/figure-quality.test.ts +8 -8
  30. package/server/service/figure/figure-query.ts +34 -29
  31. package/server/service/figure/figure-source.test.ts +13 -5
  32. package/server/service/figure/figure-source.ts +7 -8
  33. package/server/service/figure/figure-tools.test.ts +5 -3
  34. package/server/service/figure/figure-tools.ts +4 -3
@@ -34,6 +34,7 @@ const MINE = { id: 'domain-mine' }
34
34
  const THEIRS = { id: 'domain-theirs' }
35
35
 
36
36
  const SOURCE = {
37
+ version: 2,
37
38
  type: 'MIXER',
38
39
  base: { x: 300, y: 500, z: 300 },
39
40
  detailLevel: 'M',
@@ -41,7 +42,7 @@ const SOURCE = {
41
42
  {
42
43
  name: 'body',
43
44
  primitive: 'cube',
44
- transform: { position: { x: 0, y: 0, z: 0 }, size: { x: 300, y: 400, z: 300 } },
45
+ transform: { position: { x: 0, y: 250, z: 0 }, size: { x: 300, y: 400, z: 300 } },
45
46
  material: { token: 'palette.primary' }
46
47
  }
47
48
  ]
@@ -77,7 +78,8 @@ function install() {
77
78
  compile: model.compile,
78
79
  costOf: model.costOf,
79
80
  scoreOf: model.scoreOf,
80
- validate: model.validate
81
+ validate: model.validate,
82
+ isPlaceholderType: model.isPlaceholderType
81
83
  })
82
84
  }
83
85
 
@@ -217,7 +219,7 @@ describe('대화면 문맥에서 대상을 해소한다', () => {
217
219
  {
218
220
  name: 'lid',
219
221
  primitive: 'cube',
220
- transform: { position: { x: 0, y: 250, z: 0 }, size: { x: 100, y: 20, z: 100 } },
222
+ transform: { position: { x: 0, y: 500, z: 0 }, size: { x: 100, y: 20, z: 100 } },
221
223
  material: { token: 'palette.primary' }
222
224
  }
223
225
  ]
@@ -56,7 +56,8 @@ function getDeps(): any {
56
56
  compile: model.compile,
57
57
  costOf: model.costOf,
58
58
  scoreOf: model.scoreOf,
59
- validate: model.validate
59
+ validate: model.validate,
60
+ isPlaceholderType: model.isPlaceholderType
60
61
  }
61
62
  }
62
63
  return _deps
@@ -158,7 +159,7 @@ function sourceForTool(row: any, host: any): { source: any; draft: boolean } {
158
159
  throw new Error('the unsaved draft is too large to safely review')
159
160
  }
160
161
 
161
- const { validate } = getDeps()
162
+ const { validate, isPlaceholderType } = getDeps()
162
163
  const checked = validate(draft)
163
164
  if (checked.errors.length > 0) {
164
165
  throw new Error(`the unsaved draft is invalid: ${checked.errors.map((one: any) => one.message).join(' · ')}`)
@@ -168,7 +169,7 @@ function sourceForTool(row: any, host: any): { source: any; draft: boolean } {
168
169
  if (draft.type !== row.type) {
169
170
  // 템플릿 기본값 'FIGURE', 임시 draftType('FIGURE_...'), 또는 빈 값인 경우
170
171
  // 현재 열려 있는 Figure의 실제 type으로 보정/정규화한다.
171
- const isGenericOrTempType = !draft.type || draft.type === 'FIGURE' || draft.type.startsWith('FIGURE_')
172
+ const isGenericOrTempType = !draft.type || draft.type === 'FIGURE' || isPlaceholderType(draft.type)
172
173
  if (isGenericOrTempType && row.type) {
173
174
  normalizedDraft = { ...draft, type: row.type }
174
175
  } else {