Skip to content

Commit 50a4daa

Browse files
update skills based on experience
1 parent 9a66279 commit 50a4daa

1 file changed

Lines changed: 24 additions & 1 deletion

File tree

comcheck_api/ai/skill/SKILL.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,19 @@ project = env_ops.add_ag_wall_to_project(project, area_key, wall)
203203

204204
```python
205205
projects = client.list_projects()
206-
target = next(p for p in projects if p["title"] == "My office")
206+
target = next(p for p in projects if p["name"] == "My office") # key is "name", not "title"
207207
project_obj = client.get_project(target["_id"]) # note the underscore
208208
project_obj.project.projectTitle = "My office (revised)"
209209
client.update_project(project_id=target["_id"], project_data=project_obj)
210210
```
211211

212+
`list_projects()` returns **raw, untyped dicts** straight from the API
213+
(no TypedDict enforces the shape). Each entry looks like:
214+
`{"_id", "name", "energyCode", "status", "sharing", "ownedByMe",
215+
"lastUpdated"}`. The display name is under `"name"` — there is **no
216+
`"title"` key** (matching on `"title"` silently fails with
217+
`StopIteration`/`KeyError`).
218+
212219
`get_project(project_id, mode="json")` returns a raw dict instead of
213220
a `ComBuilding` model — handy when you just need the JSON shape.
214221

@@ -247,6 +254,12 @@ else:
247254
`EnergyCodeOptions.CEZ_90_1_2022`. Setting them to raw strings
248255
works at runtime but emits `PydanticSerializationUnexpectedValue`
249256
warnings every time the model serializes.
257+
- **There is no `STEEL_FRAME` wall type — steel framing maps to
258+
`METAL_FRAME_*`.** `WallTypeOptions` members are `WOOD_FRAME_16/24`,
259+
`METAL_FRAME_16/24`, `METAL_WALL_WO_TB`, `METAL_BLDG`, `CONCRETE`,
260+
`MASONRY`, `OTHER` (each suffixed `_AG_WALL`). A user asking for a
261+
"steel-frame wall" wants `WallTypeOptions.METAL_FRAME_16_AG_WALL`
262+
(or `_24_`).
250263
- **`COMcheckClient(api_key=...)` does not auto-read env vars.** No
251264
`COM_API_KEY` fallback exists in `__init__`. Pass it explicitly.
252265
- **`SimulationStatus` is a known-values catalog, not an exhaustive
@@ -256,6 +269,16 @@ else:
256269
don't crash polling. Only `SUCCESS` and `FAILED` are guaranteed
257270
terminal — break/raise on those, keep polling for everything
258271
else (don't enumerate non-terminals).
272+
- **A 500 from `start_run_simulation` usually means bad project
273+
data, not a server outage.** All HTTP errors surface as the same
274+
`COMCheckHTTPError` — there is no validation-specific exception, so
275+
a payload the engine rejects (e.g. a malformed shape like assigning
276+
a list to an object field, or project state the engine won't
277+
accept) comes back as a bare HTTP 500, indistinguishable from a
278+
real outage. To tell them apart, simulate a fresh
279+
`get_default_project_template()` project: if that succeeds, the 500
280+
is your project data, not the server. Inspect
281+
`COMCheckHTTPError.status_code` / `.response_data` for detail.
259282

260283
## When you need more detail
261284

0 commit comments

Comments
 (0)