Compare commits
12 Commits
main
...
building-f
| Author | SHA1 | Date | |
|---|---|---|---|
| 807e1e016b | |||
| 1f315a40da | |||
| 42a07e2bf8 | |||
| 3a82078bd2 | |||
| 92f2584232 | |||
| 559a296c3a | |||
| d5799d8d99 | |||
| 178a3e656f | |||
| cfb6afcdce | |||
| 58abe588aa | |||
| 46325ee801 | |||
| c65235f377 |
@ -1,86 +0,0 @@
|
||||
---
|
||||
name: gitnexus-cli
|
||||
description: "Use when the user needs to run GitNexus CLI commands like analyze/index a repo, check status, clean the index, generate a wiki, or list indexed repos. Examples: \"Index this repo\", \"Reanalyze the codebase\", \"Generate a wiki\""
|
||||
---
|
||||
|
||||
# GitNexus CLI Commands
|
||||
|
||||
Commands below use `node .gitnexus/run.cjs <command>` — the project-local runner `gitnexus analyze` drops next to the index. It auto-selects an available runner at call time (global `gitnexus`, else `pnpm dlx`, else `npx`), so no package-manager assumption and no global install is required.
|
||||
|
||||
> **Not analyzed yet, or `node .gitnexus/run.cjs` reports `Cannot find module`** (the gitignored runner is absent — e.g. a fresh clone or `git clean`)? (Re)generate it with `npx gitnexus analyze` from the project root. On **npm 11.x**, if `npx` crashes during install (`node.target is null`), install once with `npm i -g gitnexus` (then `gitnexus analyze`) or use `pnpm --allow-build=@ladybugdb/core --allow-build=gitnexus --allow-build=tree-sitter dlx gitnexus@latest analyze`. See [#1939](https://github.com/abhigyanpatwari/GitNexus/issues/1939).
|
||||
|
||||
## Commands
|
||||
|
||||
### analyze — Build or refresh the index
|
||||
|
||||
```bash
|
||||
node .gitnexus/run.cjs analyze
|
||||
```
|
||||
|
||||
Run from the project root. This parses all source files, builds the knowledge graph, writes it to `.gitnexus/`, and generates CLAUDE.md / AGENTS.md context files.
|
||||
|
||||
| Flag | Effect |
|
||||
| -------------- | ---------------------------------------------------------------- |
|
||||
| `--force` | Force full re-index even if up to date |
|
||||
| `--embeddings` | Enable embedding generation for semantic search (off by default) |
|
||||
| `--drop-embeddings` | Drop existing embeddings on rebuild. By default, an `analyze` without `--embeddings` preserves them. |
|
||||
| `--pdg` | Build the program-dependence layers used by `explain` and `pdg_query` (taint, CDG, and REACHING_DEF). |
|
||||
|
||||
**When to run:** First time in a project, after major code changes, or when `gitnexus://repo/{name}/context` reports the index is stale. In Claude Code, a PostToolUse hook detects staleness after `git commit` and `git merge` and notifies the agent to run `analyze` — the hook does not run analyze itself, to avoid blocking the agent for up to 120s and risking KuzuDB corruption on timeout.
|
||||
|
||||
### status — Check index freshness
|
||||
|
||||
```bash
|
||||
node .gitnexus/run.cjs status
|
||||
```
|
||||
|
||||
Shows whether the current repo has a GitNexus index, when it was last updated, and symbol/relationship counts. Use this to check if re-indexing is needed.
|
||||
|
||||
### clean — Delete the index
|
||||
|
||||
```bash
|
||||
node .gitnexus/run.cjs clean
|
||||
```
|
||||
|
||||
Deletes the `.gitnexus/` directory and unregisters the repo from the global registry. Use before re-indexing if the index is corrupt or after removing GitNexus from a project.
|
||||
|
||||
| Flag | Effect |
|
||||
| --------- | ------------------------------------------------- |
|
||||
| `--force` | Skip confirmation prompt |
|
||||
| `--all` | Clean all indexed repos, not just the current one |
|
||||
|
||||
### wiki — Generate documentation from the graph
|
||||
|
||||
```bash
|
||||
node .gitnexus/run.cjs wiki
|
||||
```
|
||||
|
||||
Generates repository documentation from the knowledge graph using an LLM. Requires an API key (saved to `~/.gitnexus/config.json` on first use).
|
||||
|
||||
| Flag | Effect |
|
||||
| ------------------- | ----------------------------------------- |
|
||||
| `--force` | Force full regeneration |
|
||||
| `--model <model>` | LLM model (default: minimax/minimax-m2.5) |
|
||||
| `--base-url <url>` | LLM API base URL |
|
||||
| `--api-key <key>` | LLM API key |
|
||||
| `--concurrency <n>` | Parallel LLM calls (default: 3) |
|
||||
| `--gist` | Publish wiki as a public GitHub Gist |
|
||||
|
||||
### list — Show all indexed repos
|
||||
|
||||
```bash
|
||||
node .gitnexus/run.cjs list
|
||||
```
|
||||
|
||||
Lists all repositories registered in `~/.gitnexus/registry.json`. The MCP `list_repos` tool provides the same information.
|
||||
|
||||
## After Indexing
|
||||
|
||||
1. **Read `gitnexus://repo/{name}/context`** to verify the index loaded
|
||||
2. Use the other GitNexus skills (`exploring`, `debugging`, `impact-analysis`, `refactoring`) for your task
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **"Not inside a git repository"**: Run from a directory inside a git repo
|
||||
- **Index is stale after re-analyzing**: Restart Claude Code to reload the MCP server
|
||||
- **Embeddings slow**: Omit `--embeddings` (it's off by default) or set `OPENAI_API_KEY` for faster API-based embedding
|
||||
@ -1,101 +0,0 @@
|
||||
---
|
||||
name: gitnexus-debugging
|
||||
description: "Use when the user is debugging a bug, tracing an error, or asking why something fails. Examples: \"Why is X failing?\", \"Where does this error come from?\", \"Trace this bug\""
|
||||
---
|
||||
|
||||
# Debugging with GitNexus
|
||||
|
||||
## When to Use
|
||||
|
||||
- "Why is this function failing?"
|
||||
- "Trace where this error comes from"
|
||||
- "Who calls this method?"
|
||||
- "This endpoint returns 500"
|
||||
- Investigating bugs, errors, or unexpected behavior
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. query({search_query: "<error or symptom>"}) → Find related execution flows
|
||||
2. context({name: "<suspect>"}) → See callers/callees/processes
|
||||
3. READ gitnexus://repo/{name}/process/{name} → Trace execution flow
|
||||
4. cypher({statement: "MATCH path..."}) → Custom traces if needed
|
||||
```
|
||||
|
||||
> If "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
|
||||
|
||||
## Checklist
|
||||
|
||||
```
|
||||
- [ ] Understand the symptom (error message, unexpected behavior)
|
||||
- [ ] query for error text or related code
|
||||
- [ ] Identify the suspect function from returned processes
|
||||
- [ ] context to see callers and callees
|
||||
- [ ] Trace execution flow via process resource if applicable
|
||||
- [ ] cypher for custom call chain traces if needed
|
||||
- [ ] Read source files to confirm root cause
|
||||
```
|
||||
|
||||
## Debugging Patterns
|
||||
|
||||
| Symptom | GitNexus Approach |
|
||||
| -------------------- | ---------------------------------------------------------- |
|
||||
| Error message | `query` for error text → `context` on throw sites |
|
||||
| Wrong return value | `context` on the function → trace callees for data flow |
|
||||
| Intermittent failure | `context` → look for external calls, async deps |
|
||||
| Performance issue | `context` → find symbols with many callers (hot paths) |
|
||||
| Recent regression | `detect_changes` to see what your changes affect |
|
||||
| "How does A reach B?" | `trace` between the two symbols — shortest call chain in one call |
|
||||
|
||||
## Tools
|
||||
|
||||
**query** — find code related to error:
|
||||
|
||||
```
|
||||
query({search_query: "payment validation error"})
|
||||
→ Processes: CheckoutFlow, ErrorHandling
|
||||
→ Symbols: validatePayment, handlePaymentError, PaymentException
|
||||
```
|
||||
|
||||
**context** — full context for a suspect:
|
||||
|
||||
```
|
||||
context({name: "validatePayment"})
|
||||
→ Incoming calls: processCheckout, webhookHandler
|
||||
→ Outgoing calls: verifyCard, fetchRates (external API!)
|
||||
→ Processes: CheckoutFlow (step 3/7)
|
||||
```
|
||||
|
||||
**cypher** — custom call chain traces:
|
||||
|
||||
```cypher
|
||||
MATCH path = (a)-[:CodeRelation {type: 'CALLS'}*1..2]->(b:Function {name: "validatePayment"})
|
||||
RETURN [n IN nodes(path) | n.name] AS chain
|
||||
```
|
||||
|
||||
**trace** — shortest call chain between two symbols ("how does A reach B?"), one call instead of chaining `context` hops:
|
||||
|
||||
```
|
||||
trace({ from: "processCheckout", to: "fetchRates" })
|
||||
→ status: ok, hopCount: 3
|
||||
→ hops: processCheckout → validatePayment → verifyCard → fetchRates
|
||||
→ edges: CALLS (1.0), CALLS (0.95), CALLS (1.0)
|
||||
```
|
||||
|
||||
When no path exists, `trace` reports the furthest reachable node — exactly where the chain breaks (dynamic dispatch, reflection, or an external boundary).
|
||||
|
||||
## Example: "Payment endpoint returns 500 intermittently"
|
||||
|
||||
```
|
||||
1. query({search_query: "payment error handling"})
|
||||
→ Processes: CheckoutFlow, ErrorHandling
|
||||
→ Symbols: validatePayment, handlePaymentError
|
||||
|
||||
2. context({name: "validatePayment"})
|
||||
→ Outgoing calls: verifyCard, fetchRates (external API!)
|
||||
|
||||
3. READ gitnexus://repo/my-app/process/CheckoutFlow
|
||||
→ Step 3: validatePayment → calls fetchRates (external)
|
||||
|
||||
4. Root cause: fetchRates calls external API without proper timeout
|
||||
```
|
||||
@ -1,78 +0,0 @@
|
||||
---
|
||||
name: gitnexus-exploring
|
||||
description: "Use when the user asks how code works, wants to understand architecture, trace execution flows, or explore unfamiliar parts of the codebase. Examples: \"How does X work?\", \"What calls this function?\", \"Show me the auth flow\""
|
||||
---
|
||||
|
||||
# Exploring Codebases with GitNexus
|
||||
|
||||
## When to Use
|
||||
|
||||
- "How does authentication work?"
|
||||
- "What's the project structure?"
|
||||
- "Show me the main components"
|
||||
- "Where is the database logic?"
|
||||
- Understanding code you haven't seen before
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. READ gitnexus://repos → Discover indexed repos
|
||||
2. READ gitnexus://repo/{name}/context → Codebase overview, check staleness
|
||||
3. query({search_query: "<what you want to understand>"}) → Find related execution flows
|
||||
4. context({name: "<symbol>"}) → Deep dive on specific symbol
|
||||
5. READ gitnexus://repo/{name}/process/{name} → Trace full execution flow
|
||||
```
|
||||
|
||||
> If step 2 says "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
|
||||
|
||||
## Checklist
|
||||
|
||||
```
|
||||
- [ ] READ gitnexus://repo/{name}/context
|
||||
- [ ] query for the concept you want to understand
|
||||
- [ ] Review returned processes (execution flows)
|
||||
- [ ] context on key symbols for callers/callees
|
||||
- [ ] READ process resource for full execution traces
|
||||
- [ ] Read source files for implementation details
|
||||
```
|
||||
|
||||
## Resources
|
||||
|
||||
| Resource | What you get |
|
||||
| --------------------------------------- | ------------------------------------------------------- |
|
||||
| `gitnexus://repo/{name}/context` | Stats, staleness warning (~150 tokens) |
|
||||
| `gitnexus://repo/{name}/clusters` | All functional areas with cohesion scores (~300 tokens) |
|
||||
| `gitnexus://repo/{name}/cluster/{name}` | Area members with file paths (~500 tokens) |
|
||||
| `gitnexus://repo/{name}/process/{name}` | Step-by-step execution trace (~200 tokens) |
|
||||
|
||||
## Tools
|
||||
|
||||
**query** — find execution flows related to a concept:
|
||||
|
||||
```
|
||||
query({search_query: "payment processing"})
|
||||
→ Processes: CheckoutFlow, RefundFlow, WebhookHandler
|
||||
→ Symbols grouped by flow with file locations
|
||||
```
|
||||
|
||||
**context** — 360-degree view of a symbol:
|
||||
|
||||
```
|
||||
context({name: "validateUser"})
|
||||
→ Incoming calls: loginHandler, apiMiddleware
|
||||
→ Outgoing calls: checkToken, getUserById
|
||||
→ Processes: LoginFlow (step 2/5), TokenRefresh (step 1/3)
|
||||
```
|
||||
|
||||
## Example: "How does payment processing work?"
|
||||
|
||||
```
|
||||
1. READ gitnexus://repo/my-app/context → 918 symbols, 45 processes
|
||||
2. query({search_query: "payment processing"})
|
||||
→ CheckoutFlow: processPayment → validateCard → chargeStripe
|
||||
→ RefundFlow: initiateRefund → calculateRefund → processRefund
|
||||
3. context({name: "processPayment"})
|
||||
→ Incoming: checkoutHandler, webhookHandler
|
||||
→ Outgoing: validateCard, chargeStripe, saveTransaction
|
||||
4. Read src/payments/processor.ts for implementation details
|
||||
```
|
||||
@ -1,138 +0,0 @@
|
||||
---
|
||||
name: gitnexus-guide
|
||||
description: "Use when the user asks about GitNexus itself — available tools, how to query the knowledge graph, MCP resources, graph schema, or workflow reference. Examples: \"What GitNexus tools are available?\", \"How do I use GitNexus?\""
|
||||
---
|
||||
|
||||
# GitNexus Guide
|
||||
|
||||
Quick reference for all GitNexus MCP tools, resources, and the knowledge graph schema.
|
||||
|
||||
## Always Start Here
|
||||
|
||||
For any task involving code understanding, debugging, impact analysis, or refactoring:
|
||||
|
||||
1. **Read `gitnexus://repo/{name}/context`** — codebase overview + check index freshness
|
||||
2. **Match your task to a skill below** and **read that skill file**
|
||||
3. **Follow the skill's workflow and checklist**
|
||||
|
||||
> If step 1 warns the index is stale, run `node .gitnexus/run.cjs analyze` in the terminal first.
|
||||
|
||||
## Skills
|
||||
|
||||
| Task | Skill to read |
|
||||
| -------------------------------------------- | ------------------- |
|
||||
| Understand architecture / "How does X work?" | `gitnexus-exploring` |
|
||||
| Blast radius / "What breaks if I change X?" | `gitnexus-impact-analysis` |
|
||||
| Trace bugs / "Why is X failing?" | `gitnexus-debugging` |
|
||||
| Rename / extract / split / refactor | `gitnexus-refactoring` |
|
||||
| Tools, resources, schema reference | `gitnexus-guide` (this file) |
|
||||
| Index, status, clean, wiki CLI commands | `gitnexus-cli` |
|
||||
|
||||
## Tools Reference
|
||||
|
||||
| Tool | What it gives you |
|
||||
| ---------------- | ------------------------------------------------------------------------ |
|
||||
| `query` | Process-grouped code intelligence — execution flows related to a concept |
|
||||
| `context` | 360-degree symbol view — categorized refs, processes it participates in |
|
||||
| `impact` | Symbol blast radius — what breaks at depth 1/2/3 with confidence |
|
||||
| `trace` | Shortest path between two symbols — "how does A reach B?" in one call |
|
||||
| `detect_changes` | Git-diff impact — what do your current changes affect |
|
||||
| `rename` | Multi-file coordinated rename with confidence-tagged edits |
|
||||
| `cypher` | Raw graph queries (read `gitnexus://repo/{name}/schema` first) |
|
||||
| `explain` | Persisted taint findings — source→sink data flows (needs `analyze --pdg`) |
|
||||
| `pdg_query` | Control/data dependence — what gates X (CDG) / where Y flows (REACHING_DEF); needs `analyze --pdg` |
|
||||
| `check` | Check graph invariants such as circular imports |
|
||||
| `route_map` | API route map — which components/hooks fetch which endpoints, and the handler files that serve them |
|
||||
| `shape_check` | Response-shape drift — keys each route returns vs keys its consumers access (flags MISMATCH) |
|
||||
| `api_impact` | Pre-change report for an API route — consumers, middleware, shape mismatches, risk level |
|
||||
| `tool_map` | MCP/RPC tool definitions and the files that handle them |
|
||||
| `group_list` | List configured multi-repo groups, or one group's config |
|
||||
| `group_sync` | Rebuild a group's Contract Registry (cross-repo HTTP contract links); run after `group.yaml` changes or member re-index |
|
||||
| `list_repos` | Discover indexed repos (paginated — `limit`/`offset`) |
|
||||
|
||||
### Paginating `list_repos`
|
||||
|
||||
`list_repos` is paginated so a large registry is not truncated by MCP/LLM token limits. It takes optional `limit` (default **50**, max **200**) and `offset`, and returns:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"repositories": [
|
||||
{ "name": "...", "path": "...", "indexedAt": "...", "lastCommit": "...", "stats": { } }
|
||||
],
|
||||
"pagination": {
|
||||
"total": 437,
|
||||
"limit": 50,
|
||||
"offset": 0,
|
||||
"returned": 50,
|
||||
"hasMore": true,
|
||||
"nextOffset": 50
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
To enumerate **every** repository, keep calling with `offset` set to `pagination.nextOffset` until `hasMore` is `false`:
|
||||
|
||||
```text
|
||||
list_repos {} → repos 1–50, nextOffset 50, hasMore true
|
||||
list_repos { offset: 50 } → repos 51–100, nextOffset 100, hasMore true
|
||||
…
|
||||
list_repos { offset: 400 } → repos 401–437, hasMore false (done)
|
||||
```
|
||||
|
||||
Notes: `offset` ≥ `total` returns an empty page (with `total` still reported). Out-of-range or malformed `limit`/`offset` (non-integer, `limit` outside `[1, 200]`, `offset < 0`) are rejected with a clear error — `limit` above the max is rejected, not silently capped. The order is deterministic (lower-cased name, then path), so paging never skips or duplicates an entry while the registry is unchanged.
|
||||
|
||||
### Taint findings (`explain`)
|
||||
|
||||
`explain` returns taint findings recorded by `gitnexus analyze --pdg` — intra-procedural `TAINTED` edges plus cross-function `TAINT_PATH` hops where the interprocedural taint phase found a function-level source→sink chain. Each finding includes a sink category (command-injection, code-injection, path-traversal, sql-injection, xss), source/sink lines, and the ordered hop path with the variable carried on each hop.
|
||||
|
||||
- `explain {}` — enumerate all findings for the repo (bounded by `limit`, deterministic order)
|
||||
- `explain { target: "src/vuln.ts" }` — findings in a file (suffix path match accepted)
|
||||
- `explain { target: "runUserCommand" }` — findings in a function (resolved like `context`; ambiguous names return ranked candidates)
|
||||
|
||||
A repo indexed without `--pdg` returns a clear "no taint layer" note. Caveats: closure/callback, property/field, and implicit flows are not modeled, and interprocedural findings are function-level `TAINT_PATH` hops rather than statement-level path proof, so the absence of a finding is **not** proof of safety. `SANITIZES` (sanitizer-kill) edges are queryable via `cypher`.
|
||||
|
||||
### Control & data dependence (`pdg_query`)
|
||||
|
||||
`pdg_query` reads the control/data-dependence layers `gitnexus analyze --pdg` records (CDG + REACHING_DEF, basic-block granular) — the control/data analog of `explain`. It is **always anchored** (a `target` file path or symbol, resolved like `context`) and has two modes:
|
||||
|
||||
- `pdg_query { mode: "controls", target: "..." }` — CDG: "under what condition does X run?". Each edge is a controlling predicate block → dependent block with the branch sense (`'T'`/`'F'`) in `reason`; an edge into an early `return`/`throw` is flagged `guard: true` (guard-clause discovery — the sense depends on the predicate, so don't filter guards by a fixed label).
|
||||
- `pdg_query { mode: "flows", target: "...", variable?: "..." }` — REACHING_DEF def→use edges within the function; pass `variable` to trace one binding.
|
||||
|
||||
A repo indexed without `--pdg` returns a "no PDG layer" note (or "status unknown" when the layer can't be confirmed). Intra-procedural only — cross-function flow is taint's domain (`explain`). The raw CDG/REACHING_DEF edges are also queryable via `cypher`. See the `gitnexus-pdg-query` skill for the full query surface.
|
||||
|
||||
### Shortest path between two symbols (`trace`)
|
||||
|
||||
`trace` answers "how does A reach B?" in one call — the shortest directed path over `CALLS` (plus `HAS_METHOD`, so a class-rooted trace descends into its methods) instead of chaining 3–8 `context`/`impact` hops by hand.
|
||||
|
||||
- `trace { from: "validateUser", to: "executeQuery" }` — shortest path between two symbols.
|
||||
- Disambiguate common names with `from_uid`/`to_uid` (zero-ambiguity) or `from_file`/`to_file`; an ambiguous name returns ranked candidates.
|
||||
- `maxDepth` (default 10, max 30) bounds the search; `includeTests` (default false) lets the traversal pass through test-file symbols.
|
||||
|
||||
Returns ordered `hops` (each `{ name, filePath, startLine }`) and an aligned `edges[]` of `{ relType, confidence }`, so call hops and containment (`HAS_METHOD`) hops stay distinguishable. When no path exists it reports the **furthest** reachable node (where the chain breaks) and sets `truncated: true` if a traversal cap was hit first. Every result carries a `status`: `ok` / `no_path` / `ambiguous` / `not_found` / `error`.
|
||||
|
||||
Cross-repo (experimental): pass `repo: "@groupName"` to trace across a group's member repos — the path may cross **one** `ContractLink` boundary (reported as a `CONTRACT_LINK` hop with the bridged contract in `crossings[]`). Omit `to` entirely to follow `from`'s outgoing HTTP call to whatever provider endpoint it lands on. Groups are configured via `group_list` / `group_sync`.
|
||||
|
||||
## Resources Reference
|
||||
|
||||
Lightweight reads (~100-500 tokens) for navigation:
|
||||
|
||||
| Resource | Content |
|
||||
| ---------------------------------------------- | ----------------------------------------- |
|
||||
| `gitnexus://repo/{name}/context` | Stats, staleness check |
|
||||
| `gitnexus://repo/{name}/clusters` | All functional areas with cohesion scores |
|
||||
| `gitnexus://repo/{name}/cluster/{clusterName}` | Area members |
|
||||
| `gitnexus://repo/{name}/processes` | All execution flows |
|
||||
| `gitnexus://repo/{name}/process/{processName}` | Step-by-step trace |
|
||||
| `gitnexus://repo/{name}/schema` | Graph schema for Cypher |
|
||||
|
||||
## Graph Schema
|
||||
|
||||
**Nodes:** File, Folder, Function, Class, Interface, Method, CodeElement, Community, Process, Route, Tool, plus language-specific types (Struct, Enum, Trait, Impl, Namespace, Module, …) and BasicBlock (`--pdg` indexes only). The full node list lives in `gitnexus://repo/{name}/schema`.
|
||||
**Edges (via CodeRelation.type):** CALLS, IMPORTS, EXTENDS, IMPLEMENTS, DEFINES, CONTAINS, MEMBER_OF, HAS_METHOD, HAS_PROPERTY, ACCESSES, METHOD_OVERRIDES, METHOD_IMPLEMENTS, STEP_IN_PROCESS, HANDLES_ROUTE, FETCHES, HANDLES_TOOL, ENTRY_POINT_OF, WRAPS, QUERIES, INJECTS, plus `--pdg`-only types (CFG, REACHING_DEF, TAINTED, SANITIZES, TAINT_PATH, CDG — zero rows on a default index).
|
||||
|
||||
Read `gitnexus://repo/{name}/schema` before writing Cypher — it is the authoritative schema for the indexed repo.
|
||||
|
||||
```cypher
|
||||
MATCH (caller)-[:CodeRelation {type: 'CALLS'}]->(f:Function {name: "myFunc"})
|
||||
RETURN caller.name, caller.filePath
|
||||
```
|
||||
@ -1,97 +0,0 @@
|
||||
---
|
||||
name: gitnexus-impact-analysis
|
||||
description: "Use when the user wants to know what will break if they change something, or needs safety analysis before editing code. Examples: \"Is it safe to change X?\", \"What depends on this?\", \"What will break?\""
|
||||
---
|
||||
|
||||
# Impact Analysis with GitNexus
|
||||
|
||||
## When to Use
|
||||
|
||||
- "Is it safe to change this function?"
|
||||
- "What will break if I modify X?"
|
||||
- "Show me the blast radius"
|
||||
- "Who uses this code?"
|
||||
- Before making non-trivial code changes
|
||||
- Before committing — to understand what your changes affect
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. impact({target: "X", direction: "upstream"}) → What depends on this
|
||||
2. READ gitnexus://repo/{name}/processes → Check affected execution flows
|
||||
3. detect_changes() → Map current git changes to affected flows
|
||||
4. Assess risk and report to user
|
||||
```
|
||||
|
||||
> If "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
|
||||
|
||||
## Checklist
|
||||
|
||||
```
|
||||
- [ ] impact({target, direction: "upstream"}) to find dependents
|
||||
- [ ] Review d=1 items first (these WILL BREAK)
|
||||
- [ ] Check high-confidence (>0.8) dependencies
|
||||
- [ ] READ processes to check affected execution flows
|
||||
- [ ] detect_changes() for pre-commit check
|
||||
- [ ] Assess risk level and report to user
|
||||
```
|
||||
|
||||
## Understanding Output
|
||||
|
||||
| Depth | Risk Level | Meaning |
|
||||
| ----- | ---------------- | ------------------------ |
|
||||
| d=1 | **WILL BREAK** | Direct callers/importers |
|
||||
| d=2 | LIKELY AFFECTED | Indirect dependencies |
|
||||
| d=3 | MAY NEED TESTING | Transitive effects |
|
||||
|
||||
## Risk Assessment
|
||||
|
||||
| Affected | Risk |
|
||||
| ------------------------------ | -------- |
|
||||
| <5 symbols, few processes | LOW |
|
||||
| 5-15 symbols, 2-5 processes | MEDIUM |
|
||||
| >15 symbols or many processes | HIGH |
|
||||
| Critical path (auth, payments) | CRITICAL |
|
||||
|
||||
## Tools
|
||||
|
||||
**impact** — the primary tool for symbol blast radius:
|
||||
|
||||
```
|
||||
impact({
|
||||
target: "validateUser",
|
||||
direction: "upstream",
|
||||
minConfidence: 0.8,
|
||||
maxDepth: 3
|
||||
})
|
||||
|
||||
→ d=1 (WILL BREAK):
|
||||
- loginHandler (src/auth/login.ts:42) [CALLS, 100%]
|
||||
- apiMiddleware (src/api/middleware.ts:15) [CALLS, 100%]
|
||||
|
||||
→ d=2 (LIKELY AFFECTED):
|
||||
- authRouter (src/routes/auth.ts:22) [CALLS, 95%]
|
||||
```
|
||||
|
||||
**detect_changes** — git-diff based impact analysis:
|
||||
|
||||
```
|
||||
detect_changes({scope: "staged"})
|
||||
|
||||
→ Changed: 5 symbols in 3 files
|
||||
→ Affected: LoginFlow, TokenRefresh, APIMiddlewarePipeline
|
||||
→ Risk: MEDIUM
|
||||
```
|
||||
|
||||
## Example: "What breaks if I change validateUser?"
|
||||
|
||||
```
|
||||
1. impact({target: "validateUser", direction: "upstream"})
|
||||
→ d=1: loginHandler, apiMiddleware (WILL BREAK)
|
||||
→ d=2: authRouter, sessionManager (LIKELY AFFECTED)
|
||||
|
||||
2. READ gitnexus://repo/my-app/processes
|
||||
→ LoginFlow and TokenRefresh touch validateUser
|
||||
|
||||
3. Risk: 2 direct callers, 2 processes = MEDIUM
|
||||
```
|
||||
@ -1,121 +0,0 @@
|
||||
---
|
||||
name: gitnexus-refactoring
|
||||
description: "Use when the user wants to rename, extract, split, move, or restructure code safely. Examples: \"Rename this function\", \"Extract this into a module\", \"Refactor this class\", \"Move this to a separate file\""
|
||||
---
|
||||
|
||||
# Refactoring with GitNexus
|
||||
|
||||
## When to Use
|
||||
|
||||
- "Rename this function safely"
|
||||
- "Extract this into a module"
|
||||
- "Split this service"
|
||||
- "Move this to a new file"
|
||||
- Any task involving renaming, extracting, splitting, or restructuring code
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. impact({target: "X", direction: "upstream"}) → Map all dependents
|
||||
2. query({search_query: "X"}) → Find execution flows involving X
|
||||
3. context({name: "X"}) → See all incoming/outgoing refs
|
||||
4. Plan update order: interfaces → implementations → callers → tests
|
||||
```
|
||||
|
||||
> If "Index is stale" → run `node .gitnexus/run.cjs analyze` in terminal.
|
||||
|
||||
## Checklists
|
||||
|
||||
### Rename Symbol
|
||||
|
||||
```
|
||||
- [ ] rename({symbol_name: "oldName", new_name: "newName", dry_run: true}) — preview all edits
|
||||
- [ ] Review graph edits (high confidence) and text_search edits (review carefully)
|
||||
- [ ] If satisfied: rename({..., dry_run: false}) — apply edits
|
||||
- [ ] detect_changes() — verify only expected files changed
|
||||
- [ ] Run tests for affected processes
|
||||
```
|
||||
|
||||
### Extract Module
|
||||
|
||||
```
|
||||
- [ ] context({name: target}) — see all incoming/outgoing refs
|
||||
- [ ] impact({target, direction: "upstream"}) — find all external callers
|
||||
- [ ] Define new module interface
|
||||
- [ ] Extract code, update imports
|
||||
- [ ] detect_changes() — verify affected scope
|
||||
- [ ] Run tests for affected processes
|
||||
```
|
||||
|
||||
### Split Function/Service
|
||||
|
||||
```
|
||||
- [ ] context({name: target}) — understand all callees
|
||||
- [ ] Group callees by responsibility
|
||||
- [ ] impact({target, direction: "upstream"}) — map callers to update
|
||||
- [ ] Create new functions/services
|
||||
- [ ] Update callers
|
||||
- [ ] detect_changes() — verify affected scope
|
||||
- [ ] Run tests for affected processes
|
||||
```
|
||||
|
||||
## Tools
|
||||
|
||||
**rename** — automated multi-file rename:
|
||||
|
||||
```
|
||||
rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: true})
|
||||
→ 12 edits across 8 files
|
||||
→ 10 graph edits (high confidence), 2 text_search edits (review)
|
||||
→ Changes: [{file_path, edits: [{line, old_text, new_text, confidence}]}]
|
||||
```
|
||||
|
||||
**impact** — map all dependents first:
|
||||
|
||||
```
|
||||
impact({target: "validateUser", direction: "upstream"})
|
||||
→ d=1: loginHandler, apiMiddleware, testUtils
|
||||
→ Affected Processes: LoginFlow, TokenRefresh
|
||||
```
|
||||
|
||||
**detect_changes** — verify your changes after refactoring:
|
||||
|
||||
```
|
||||
detect_changes({scope: "all"})
|
||||
→ Changed: 8 files, 12 symbols
|
||||
→ Affected processes: LoginFlow, TokenRefresh
|
||||
→ Risk: MEDIUM
|
||||
```
|
||||
|
||||
**cypher** — custom reference queries:
|
||||
|
||||
```cypher
|
||||
MATCH (caller)-[:CodeRelation {type: 'CALLS'}]->(f:Function {name: "validateUser"})
|
||||
RETURN caller.name, caller.filePath ORDER BY caller.filePath
|
||||
```
|
||||
|
||||
## Risk Rules
|
||||
|
||||
| Risk Factor | Mitigation |
|
||||
| ------------------- | ----------------------------------------- |
|
||||
| Many callers (>5) | Use rename for automated updates |
|
||||
| Cross-area refs | Use detect_changes after to verify scope |
|
||||
| String/dynamic refs | query to find them |
|
||||
| External/public API | Version and deprecate properly |
|
||||
|
||||
## Example: Rename `validateUser` to `authenticateUser`
|
||||
|
||||
```
|
||||
1. rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: true})
|
||||
→ 12 edits: 10 graph (safe), 2 text_search (review)
|
||||
→ Files: validator.ts, login.ts, middleware.ts, config.json...
|
||||
|
||||
2. Review text_search edits (config.json: dynamic reference!)
|
||||
|
||||
3. rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: false})
|
||||
→ Applied 12 edits across 8 files
|
||||
|
||||
4. detect_changes({scope: "all"})
|
||||
→ Affected: LoginFlow, TokenRefresh
|
||||
→ Risk: MEDIUM — run tests for these flows
|
||||
```
|
||||
BIN
.gitnexus/lbug
BIN
.gitnexus/lbug
Binary file not shown.
BIN
.gitnexus/lbug.wal
Normal file
BIN
.gitnexus/lbug.wal
Normal file
Binary file not shown.
@ -1 +0,0 @@
|
||||
[ 158ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
|
||||
@ -1 +0,0 @@
|
||||
[ 337ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
|
||||
2
.playwright-cli/console-2026-08-16T07-50-01-138Z.log
Normal file
2
.playwright-cli/console-2026-08-16T07-50-01-138Z.log
Normal file
@ -0,0 +1,2 @@
|
||||
[ 344ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
|
||||
[ 72434ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
|
||||
@ -1 +1 @@
|
||||
[ 159ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
|
||||
[ 167ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=9a31a45b:20102
|
||||
@ -1,70 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e58]: 正在加载数据
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- generic [ref=e79]: 正在加载数据
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: 加载中
|
||||
@ -1,80 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [active] [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- dialog "建筑性质筛选" [ref=e94]:
|
||||
- generic [ref=e95]:
|
||||
- heading "建筑性质" [level=2] [ref=e96]
|
||||
- button "关闭" [ref=e97] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e99]
|
||||
- generic [ref=e100]: 未选择
|
||||
- generic [ref=e101]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- generic [ref=e103]:
|
||||
- button "清空当前" [ref=e104] [cursor=pointer]
|
||||
- button "取消" [ref=e105] [cursor=pointer]
|
||||
- button "确认" [ref=e106] [cursor=pointer]
|
||||
@ -1,69 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
@ -1,86 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [active] [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- dialog "建筑性质筛选" [ref=e108]:
|
||||
- generic [ref=e109]:
|
||||
- heading "建筑性质" [level=2] [ref=e110]
|
||||
- button "关闭" [ref=e111] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e113]
|
||||
- generic [ref=e114]: 未选择
|
||||
- tree [ref=e116]:
|
||||
- treeitem [ref=e117]:
|
||||
- button "公共建筑" [ref=e120] [cursor=pointer]
|
||||
- treeitem [ref=e123]:
|
||||
- button "民用建筑" [ref=e126] [cursor=pointer]
|
||||
- treeitem [ref=e129]:
|
||||
- button "工业建筑" [ref=e132] [cursor=pointer]
|
||||
- generic [ref=e135]:
|
||||
- button "清空当前" [ref=e136] [cursor=pointer]
|
||||
- button "取消" [ref=e137] [cursor=pointer]
|
||||
- button "确认" [ref=e138] [cursor=pointer]
|
||||
@ -1,82 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e58]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- dialog "建筑性质筛选" [ref=e108]:
|
||||
- generic [ref=e109]:
|
||||
- heading "建筑性质" [level=2] [ref=e110]
|
||||
- button "关闭" [ref=e111] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e113]: 公共
|
||||
- generic [ref=e114]: 已选 1 项
|
||||
- tree [ref=e139]:
|
||||
- treeitem [ref=e140]:
|
||||
- button "公共建筑" [active] [pressed] [ref=e143] [cursor=pointer]
|
||||
- generic [ref=e135]:
|
||||
- button "清空当前" [ref=e136] [cursor=pointer]
|
||||
- button "取消" [ref=e137] [cursor=pointer]
|
||||
- button "确认" [ref=e138] [cursor=pointer]
|
||||
@ -1,72 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质 1" [pressed] [ref=e146] [cursor=pointer]:
|
||||
- generic [ref=e27]: 建筑性质
|
||||
- strong [ref=e147]: "1"
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- button "清空" [ref=e148] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e149]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
@ -1,89 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质 1" [active] [pressed] [ref=e146] [cursor=pointer]:
|
||||
- generic [ref=e27]: 建筑性质
|
||||
- strong [ref=e147]: "1"
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- button "清空" [ref=e148] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e149]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: "Expected property name or '}' in JSON at position 1 (line 1 column 2)"
|
||||
- dialog "建筑性质筛选" [ref=e150]:
|
||||
- generic [ref=e151]:
|
||||
- heading "建筑性质" [level=2] [ref=e152]
|
||||
- button "关闭" [ref=e153] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e155]
|
||||
- generic [ref=e156]: 已选 1 项
|
||||
- tree [ref=e158]:
|
||||
- treeitem [ref=e159]:
|
||||
- button "公共建筑" [pressed] [ref=e162] [cursor=pointer]
|
||||
- treeitem [ref=e165]:
|
||||
- button "民用建筑" [ref=e168] [cursor=pointer]
|
||||
- treeitem [ref=e171]:
|
||||
- button "工业建筑" [ref=e174] [cursor=pointer]
|
||||
- generic [ref=e177]:
|
||||
- button "清空当前" [ref=e178] [cursor=pointer]
|
||||
- button "取消" [ref=e179] [cursor=pointer]
|
||||
- button "确认" [ref=e180] [cursor=pointer]
|
||||
@ -1,70 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e58]: 正在加载数据
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- generic [ref=e79]: 正在加载数据
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: 加载中
|
||||
@ -1,85 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [active] [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e59]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e60]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e61]
|
||||
- toolbar "标注" [ref=e62]:
|
||||
- button "库" [ref=e63] [cursor=pointer]
|
||||
- button "指" [ref=e64] [cursor=pointer]
|
||||
- button "均" [ref=e65] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e66]
|
||||
- button "Text Tool" [disabled] [ref=e67]
|
||||
- button "Shape Tool" [disabled] [ref=e68]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e69]
|
||||
- button "全屏(F11)" [ref=e70] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e71]
|
||||
- button "切换到表格" [ref=e72] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e73]:
|
||||
- button "缩小" [disabled] [ref=e74]
|
||||
- button "放大" [ref=e75] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e76]
|
||||
- button "右移" [disabled] [ref=e77]
|
||||
- button "重置" [disabled] [ref=e78]
|
||||
- button "收起选择区" [expanded] [ref=e81] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e85]:
|
||||
- tablist "选择内容切换项" [ref=e86]:
|
||||
- tab "自然地理区位" [selected] [ref=e87] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e88] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e89] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e90] [cursor=pointer]
|
||||
- generic [ref=e91]:
|
||||
- generic [ref=e92]: 自然地理区位
|
||||
- generic [ref=e93]: 接口待接入
|
||||
- dialog "建筑性质筛选" [ref=e94]:
|
||||
- generic [ref=e95]:
|
||||
- heading "建筑性质" [level=2] [ref=e96]
|
||||
- button "关闭" [ref=e97] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e99]
|
||||
- generic [ref=e100]: 未选择
|
||||
- tree [ref=e102]:
|
||||
- treeitem [ref=e103]:
|
||||
- button "公共建筑" [ref=e106] [cursor=pointer]
|
||||
- treeitem [ref=e109]:
|
||||
- button "民用建筑" [ref=e112] [cursor=pointer]
|
||||
- treeitem [ref=e115]:
|
||||
- button "工业建筑" [ref=e118] [cursor=pointer]
|
||||
- generic [ref=e121]:
|
||||
- button "清空当前" [ref=e122] [cursor=pointer]
|
||||
- button "取消" [ref=e123] [cursor=pointer]
|
||||
- button "确认" [ref=e124] [cursor=pointer]
|
||||
@ -1,68 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- button "纵坐标:造价(元)" [ref=e57] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e58]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e59]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e60]
|
||||
- toolbar "标注" [ref=e61]:
|
||||
- button "库" [ref=e62] [cursor=pointer]
|
||||
- button "指" [ref=e63] [cursor=pointer]
|
||||
- button "均" [ref=e64] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e65]
|
||||
- button "Text Tool" [disabled] [ref=e66]
|
||||
- button "Shape Tool" [disabled] [ref=e67]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e68]
|
||||
- button "全屏(F11)" [ref=e69] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e70]
|
||||
- button "切换到表格" [ref=e71] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e72]:
|
||||
- button "缩小" [disabled] [ref=e73]
|
||||
- button "放大" [ref=e74] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e75]
|
||||
- button "右移" [disabled] [ref=e76]
|
||||
- button "重置" [disabled] [ref=e77]
|
||||
- button "收起选择区" [expanded] [ref=e78] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e82]:
|
||||
- tablist "选择内容切换项" [ref=e83]:
|
||||
- tab "自然地理区位" [selected] [ref=e84] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e85] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e86] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e87] [cursor=pointer]
|
||||
- generic [ref=e88]:
|
||||
- generic [ref=e89]: 自然地理区位
|
||||
- generic [ref=e90]: 加载中
|
||||
@ -1,116 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e23] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]
|
||||
- button "时间" [ref=e42] [cursor=pointer]
|
||||
- button "面积" [ref=e46] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e54]:
|
||||
- generic [ref=e55]:
|
||||
- generic [ref=e58]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e59]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e60]
|
||||
- toolbar "标注" [ref=e61]:
|
||||
- button "库" [ref=e62] [cursor=pointer]
|
||||
- button "指" [ref=e63] [cursor=pointer]
|
||||
- button "均" [ref=e64] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e65]
|
||||
- button "Text Tool" [disabled] [ref=e66]
|
||||
- button "Shape Tool" [disabled] [ref=e67]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e68]
|
||||
- button "全屏(F11)" [ref=e69] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e70]
|
||||
- button "切换到趋势图" [active] [pressed] [ref=e91] [cursor=pointer]:
|
||||
- generic: 表
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e72]:
|
||||
- button "缩小" [disabled] [ref=e73]
|
||||
- button "放大" [ref=e74] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e75]
|
||||
- button "右移" [disabled] [ref=e76]
|
||||
- button "重置" [disabled] [ref=e77]
|
||||
- generic [ref=e93]:
|
||||
- button "模板库" [ref=e94] [cursor=pointer]: 库
|
||||
- button "指标树形" [ref=e95] [cursor=pointer]: 指
|
||||
- button "切换到趋势图" [ref=e96] [cursor=pointer]: 表
|
||||
- button "全屏" [ref=e97] [cursor=pointer]
|
||||
- button "纵坐标:造价(元)" [ref=e100] [cursor=pointer]: 价
|
||||
- generic [ref=e101]:
|
||||
- grid [ref=e103]:
|
||||
- rowgroup [ref=e104]:
|
||||
- row [ref=e105]:
|
||||
- columnheader "基准阀值" [ref=e106]: 基准阀值
|
||||
- columnheader "样本统计值" [ref=e108]: 样本统计值
|
||||
- row [ref=e110]:
|
||||
- columnheader "年度" [ref=e111]:
|
||||
- generic [ref=e113] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "名称" [ref=e115]:
|
||||
- generic [ref=e117] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "低值(万元)" [ref=e119]:
|
||||
- generic [ref=e121] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "中心值(万元)" [ref=e123]:
|
||||
- generic [ref=e125] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "高值(万元)" [ref=e127]:
|
||||
- generic [ref=e129] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "最大值(万元)" [ref=e131]:
|
||||
- generic [ref=e133] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "最小值(万元)" [ref=e135]:
|
||||
- generic [ref=e137] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "平均值(万元)" [ref=e139]:
|
||||
- generic [ref=e141] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "中位数(万元)" [ref=e143]:
|
||||
- generic [ref=e145] [cursor=pointer]:
|
||||
- generic:
|
||||
- columnheader "标准差(万元)" [ref=e147]:
|
||||
- generic [ref=e149] [cursor=pointer]:
|
||||
- generic:
|
||||
- rowgroup [ref=e151]
|
||||
- rowgroup
|
||||
- rowgroup
|
||||
- rowgroup
|
||||
- text: 请选择右侧分类项
|
||||
- text:
|
||||
- button "收起选择区" [expanded] [ref=e78] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e82]:
|
||||
- tablist "选择内容切换项" [ref=e83]:
|
||||
- tab "自然地理区位" [selected] [ref=e84] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e85] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e86] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e87] [cursor=pointer]
|
||||
- generic [ref=e88]:
|
||||
- generic [ref=e89]: 自然地理区位
|
||||
- generic [ref=e90]: 接口待接入
|
||||
69
.playwright-cli/page-2026-08-16T07-50-01-755Z.yml
Normal file
69
.playwright-cli/page-2026-08-16T07-50-01-755Z.yml
Normal file
@ -0,0 +1,69 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=e23] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=e40] [cursor=pointer]
|
||||
- button "时间" [ref=e47] [cursor=pointer]
|
||||
- button "面积" [ref=e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e59]:
|
||||
- generic [ref=e60]:
|
||||
- button "纵坐标:造价(元)" [ref=e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e65]
|
||||
- toolbar "标注" [ref=e66]:
|
||||
- button "库" [ref=e67] [cursor=pointer]
|
||||
- button "指" [ref=e68] [cursor=pointer]
|
||||
- button "均" [ref=e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e70]
|
||||
- button "Text Tool" [disabled] [ref=e71]
|
||||
- button "Shape Tool" [disabled] [ref=e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e73]
|
||||
- button "全屏(F11)" [ref=e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e75]
|
||||
- button "切换到表格" [ref=e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e77]:
|
||||
- button "缩小" [disabled] [ref=e78]
|
||||
- button "放大" [ref=e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e80]
|
||||
- button "右移" [disabled] [ref=e81]
|
||||
- button "重置" [disabled] [ref=e82]
|
||||
- button "收起选择区" [expanded] [ref=e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e87]:
|
||||
- tablist "选择内容切换项" [ref=e88]:
|
||||
- tab "自然地理区位" [selected] [ref=e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e90] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e91] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e92] [cursor=pointer]
|
||||
- generic [ref=e93]:
|
||||
- generic [ref=e94]: 自然地理区位
|
||||
- generic [ref=e95]: 加载中
|
||||
70
.playwright-cli/page-2026-08-16T07-51-13-733Z.yml
Normal file
70
.playwright-cli/page-2026-08-16T07-51-13-733Z.yml
Normal file
@ -0,0 +1,70 @@
|
||||
- main [ref=f1e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=f1e4]:
|
||||
- generic "筛选条件" [ref=f1e5]:
|
||||
- button "省市区" [ref=f1e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=f1e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=f1e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=f1e23] [cursor=pointer]
|
||||
- button "建筑性质" [ref=f1e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=f1e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=f1e40] [cursor=pointer]
|
||||
- button "时间" [ref=f1e47] [cursor=pointer]
|
||||
- button "面积" [ref=f1e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=f1e59]:
|
||||
- generic [ref=f1e60]:
|
||||
- button "纵坐标:造价(元)" [ref=f1e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=f1e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=f1e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=f1e65]
|
||||
- toolbar "标注" [ref=f1e66]:
|
||||
- button "库" [ref=f1e67] [cursor=pointer]
|
||||
- button "指" [ref=f1e68] [cursor=pointer]
|
||||
- button "均" [ref=f1e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=f1e70]
|
||||
- button "Text Tool" [disabled] [ref=f1e71]
|
||||
- button "Shape Tool" [disabled] [ref=f1e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=f1e73]
|
||||
- button "全屏(F11)" [ref=f1e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=f1e75]
|
||||
- button "切换到表格" [ref=f1e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=f1e77]:
|
||||
- button "缩小" [disabled] [ref=f1e78]
|
||||
- button "放大" [ref=f1e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=f1e80]
|
||||
- button "右移" [disabled] [ref=f1e81]
|
||||
- button "重置" [disabled] [ref=f1e82]
|
||||
- button "收起选择区" [expanded] [ref=f1e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=f1e87]:
|
||||
- tablist "选择内容切换项" [ref=f1e88]:
|
||||
- tab "自然地理区位" [selected] [ref=f1e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=f1e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=f1e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=f1e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=f1e93] [cursor=pointer]
|
||||
- generic [ref=f1e94]:
|
||||
- generic [ref=f1e95]: 自然地理区位
|
||||
- generic [ref=f1e96]: 加载中
|
||||
87
.playwright-cli/page-2026-08-16T07-51-32-990Z.yml
Normal file
87
.playwright-cli/page-2026-08-16T07-51-32-990Z.yml
Normal file
@ -0,0 +1,87 @@
|
||||
- main [ref=f1e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=f1e4]:
|
||||
- generic "筛选条件" [ref=f1e5]:
|
||||
- button "省市区" [ref=f1e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=f1e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=f1e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=f1e23] [cursor=pointer]
|
||||
- button "建筑性质" [active] [ref=f1e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=f1e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=f1e40] [cursor=pointer]
|
||||
- button "时间" [ref=f1e47] [cursor=pointer]
|
||||
- button "面积" [ref=f1e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=f1e59]:
|
||||
- generic [ref=f1e60]:
|
||||
- button "纵坐标:造价(元)" [ref=f1e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=f1e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=f1e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=f1e65]
|
||||
- toolbar "标注" [ref=f1e66]:
|
||||
- button "库" [ref=f1e67] [cursor=pointer]
|
||||
- button "指" [ref=f1e68] [cursor=pointer]
|
||||
- button "均" [ref=f1e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=f1e70]
|
||||
- button "Text Tool" [disabled] [ref=f1e71]
|
||||
- button "Shape Tool" [disabled] [ref=f1e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=f1e73]
|
||||
- button "全屏(F11)" [ref=f1e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=f1e75]
|
||||
- button "切换到表格" [ref=f1e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=f1e77]:
|
||||
- button "缩小" [disabled] [ref=f1e78]
|
||||
- button "放大" [ref=f1e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=f1e80]
|
||||
- button "右移" [disabled] [ref=f1e81]
|
||||
- button "重置" [disabled] [ref=f1e82]
|
||||
- button "收起选择区" [expanded] [ref=f1e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=f1e87]:
|
||||
- tablist "选择内容切换项" [ref=f1e88]:
|
||||
- tab "自然地理区位" [selected] [ref=f1e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=f1e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=f1e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=f1e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=f1e93] [cursor=pointer]
|
||||
- generic [ref=f1e94]:
|
||||
- generic [ref=f1e95]: 自然地理区位
|
||||
- generic [ref=f1e96]: 接口待接入
|
||||
- dialog "建筑性质筛选" [ref=f1e97]:
|
||||
- generic [ref=f1e98]:
|
||||
- heading "建筑性质" [level=2] [ref=f1e99]
|
||||
- button "关闭" [ref=f1e100] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=f1e102]
|
||||
- generic [ref=f1e103]: 未选择
|
||||
- tree [ref=f1e105]:
|
||||
- treeitem [ref=f1e106]:
|
||||
- button "公共建筑" [ref=f1e109] [cursor=pointer]
|
||||
- treeitem [ref=f1e112]:
|
||||
- button "民用建筑" [ref=f1e115] [cursor=pointer]
|
||||
- treeitem [ref=f1e118]:
|
||||
- button "工业建筑" [ref=f1e121] [cursor=pointer]
|
||||
- generic [ref=f1e124]:
|
||||
- button "清空当前" [ref=f1e125] [cursor=pointer]
|
||||
- button "取消" [ref=f1e126] [cursor=pointer]
|
||||
- button "确认" [ref=f1e127] [cursor=pointer]
|
||||
87
.playwright-cli/page-2026-08-16T07-51-52-763Z.yml
Normal file
87
.playwright-cli/page-2026-08-16T07-51-52-763Z.yml
Normal file
@ -0,0 +1,87 @@
|
||||
- main [ref=f1e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=f1e4]:
|
||||
- generic "筛选条件" [ref=f1e5]:
|
||||
- button "省市区" [ref=f1e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=f1e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=f1e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=f1e23] [cursor=pointer]
|
||||
- button "建筑性质" [ref=f1e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=f1e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=f1e40] [cursor=pointer]
|
||||
- button "时间" [ref=f1e47] [cursor=pointer]
|
||||
- button "面积" [ref=f1e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=f1e59]:
|
||||
- generic [ref=f1e60]:
|
||||
- button "纵坐标:造价(元)" [ref=f1e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=f1e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=f1e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=f1e65]
|
||||
- toolbar "标注" [ref=f1e66]:
|
||||
- button "库" [ref=f1e67] [cursor=pointer]
|
||||
- button "指" [ref=f1e68] [cursor=pointer]
|
||||
- button "均" [ref=f1e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=f1e70]
|
||||
- button "Text Tool" [disabled] [ref=f1e71]
|
||||
- button "Shape Tool" [disabled] [ref=f1e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=f1e73]
|
||||
- button "全屏(F11)" [ref=f1e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=f1e75]
|
||||
- button "切换到表格" [ref=f1e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=f1e77]:
|
||||
- button "缩小" [disabled] [ref=f1e78]
|
||||
- button "放大" [ref=f1e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=f1e80]
|
||||
- button "右移" [disabled] [ref=f1e81]
|
||||
- button "重置" [disabled] [ref=f1e82]
|
||||
- button "收起选择区" [expanded] [ref=f1e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=f1e87]:
|
||||
- tablist "选择内容切换项" [ref=f1e88]:
|
||||
- tab "自然地理区位" [selected] [ref=f1e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=f1e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=f1e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=f1e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=f1e93] [cursor=pointer]
|
||||
- generic [ref=f1e94]:
|
||||
- generic [ref=f1e95]: 自然地理区位
|
||||
- generic [ref=f1e96]: 接口待接入
|
||||
- dialog "建筑性质筛选" [ref=f1e97]:
|
||||
- generic [ref=f1e98]:
|
||||
- heading "建筑性质" [level=2] [ref=f1e99]
|
||||
- button "关闭" [ref=f1e100] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=f1e102]
|
||||
- generic [ref=f1e103]: 已选 1 项
|
||||
- tree [ref=f1e105]:
|
||||
- treeitem [ref=f1e106]:
|
||||
- button "公共建筑" [active] [pressed] [ref=f1e109] [cursor=pointer]
|
||||
- treeitem [ref=f1e112]:
|
||||
- button "民用建筑" [ref=f1e115] [cursor=pointer]
|
||||
- treeitem [ref=f1e118]:
|
||||
- button "工业建筑" [ref=f1e121] [cursor=pointer]
|
||||
- generic [ref=f1e124]:
|
||||
- button "清空当前" [ref=f1e125] [cursor=pointer]
|
||||
- button "取消" [ref=f1e126] [cursor=pointer]
|
||||
- button "确认" [ref=f1e127] [cursor=pointer]
|
||||
87
.playwright-cli/page-2026-08-16T07-51-56-594Z.yml
Normal file
87
.playwright-cli/page-2026-08-16T07-51-56-594Z.yml
Normal file
@ -0,0 +1,87 @@
|
||||
- main [ref=f1e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=f1e4]:
|
||||
- generic "筛选条件" [ref=f1e5]:
|
||||
- button "省市区" [ref=f1e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=f1e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=f1e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=f1e23] [cursor=pointer]
|
||||
- button "建筑性质" [ref=f1e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=f1e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=f1e40] [cursor=pointer]
|
||||
- button "时间" [ref=f1e47] [cursor=pointer]
|
||||
- button "面积" [ref=f1e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=f1e59]:
|
||||
- generic [ref=f1e60]:
|
||||
- button "纵坐标:造价(元)" [ref=f1e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=f1e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=f1e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=f1e65]
|
||||
- toolbar "标注" [ref=f1e66]:
|
||||
- button "库" [ref=f1e67] [cursor=pointer]
|
||||
- button "指" [ref=f1e68] [cursor=pointer]
|
||||
- button "均" [ref=f1e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=f1e70]
|
||||
- button "Text Tool" [disabled] [ref=f1e71]
|
||||
- button "Shape Tool" [disabled] [ref=f1e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=f1e73]
|
||||
- button "全屏(F11)" [ref=f1e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=f1e75]
|
||||
- button "切换到表格" [ref=f1e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=f1e77]:
|
||||
- button "缩小" [disabled] [ref=f1e78]
|
||||
- button "放大" [ref=f1e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=f1e80]
|
||||
- button "右移" [disabled] [ref=f1e81]
|
||||
- button "重置" [disabled] [ref=f1e82]
|
||||
- button "收起选择区" [expanded] [ref=f1e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=f1e87]:
|
||||
- tablist "选择内容切换项" [ref=f1e88]:
|
||||
- tab "自然地理区位" [selected] [ref=f1e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=f1e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=f1e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=f1e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=f1e93] [cursor=pointer]
|
||||
- generic [ref=f1e94]:
|
||||
- generic [ref=f1e95]: 自然地理区位
|
||||
- generic [ref=f1e96]: 接口待接入
|
||||
- dialog "建筑性质筛选" [ref=f1e97]:
|
||||
- generic [ref=f1e98]:
|
||||
- heading "建筑性质" [level=2] [ref=f1e99]
|
||||
- button "关闭" [ref=f1e100] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=f1e102]
|
||||
- generic [ref=f1e103]: 已选 1 项
|
||||
- tree [ref=f1e105]:
|
||||
- treeitem [ref=f1e106]:
|
||||
- button "公共建筑" [ref=f1e109] [cursor=pointer]
|
||||
- treeitem [ref=f1e112]:
|
||||
- button "民用建筑" [active] [pressed] [ref=f1e115] [cursor=pointer]
|
||||
- treeitem [ref=f1e118]:
|
||||
- button "工业建筑" [ref=f1e121] [cursor=pointer]
|
||||
- generic [ref=f1e124]:
|
||||
- button "清空当前" [ref=f1e125] [cursor=pointer]
|
||||
- button "取消" [ref=f1e126] [cursor=pointer]
|
||||
- button "确认" [ref=f1e127] [cursor=pointer]
|
||||
70
.playwright-cli/page-2026-08-16T08-57-04-463Z.yml
Normal file
70
.playwright-cli/page-2026-08-16T08-57-04-463Z.yml
Normal file
@ -0,0 +1,70 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=e23] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=e40] [cursor=pointer]
|
||||
- button "时间" [ref=e47] [cursor=pointer]
|
||||
- button "面积" [ref=e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e59]:
|
||||
- generic [ref=e60]:
|
||||
- button "纵坐标:造价(元)" [ref=e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e65]
|
||||
- toolbar "标注" [ref=e66]:
|
||||
- button "库" [ref=e67] [cursor=pointer]
|
||||
- button "指" [ref=e68] [cursor=pointer]
|
||||
- button "均" [ref=e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e70]
|
||||
- button "Text Tool" [disabled] [ref=e71]
|
||||
- button "Shape Tool" [disabled] [ref=e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e73]
|
||||
- button "全屏(F11)" [ref=e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e75]
|
||||
- button "切换到表格" [ref=e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e77]:
|
||||
- button "缩小" [disabled] [ref=e78]
|
||||
- button "放大" [ref=e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e80]
|
||||
- button "右移" [disabled] [ref=e81]
|
||||
- button "重置" [disabled] [ref=e82]
|
||||
- button "收起选择区" [expanded] [ref=e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e87]:
|
||||
- tablist "选择内容切换项" [ref=e88]:
|
||||
- tab "自然地理区位" [selected] [ref=e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e93] [cursor=pointer]
|
||||
- generic [ref=e94]:
|
||||
- generic [ref=e95]: 自然地理区位
|
||||
- generic [ref=e96]: 加载中
|
||||
85
.playwright-cli/page-2026-08-16T08-57-34-346Z.yml
Normal file
85
.playwright-cli/page-2026-08-16T08-57-34-346Z.yml
Normal file
@ -0,0 +1,85 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=e23] [cursor=pointer]
|
||||
- button "建筑性质" [active] [ref=e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=e40] [cursor=pointer]
|
||||
- button "时间" [ref=e47] [cursor=pointer]
|
||||
- button "面积" [ref=e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e59]:
|
||||
- generic [ref=e60]:
|
||||
- button "纵坐标:造价(元)" [ref=e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e65]
|
||||
- toolbar "标注" [ref=e66]:
|
||||
- button "库" [ref=e67] [cursor=pointer]
|
||||
- button "指" [ref=e68] [cursor=pointer]
|
||||
- button "均" [ref=e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e70]
|
||||
- button "Text Tool" [disabled] [ref=e71]
|
||||
- button "Shape Tool" [disabled] [ref=e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e73]
|
||||
- button "全屏(F11)" [ref=e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e75]
|
||||
- button "切换到表格" [ref=e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e77]:
|
||||
- button "缩小" [disabled] [ref=e78]
|
||||
- button "放大" [ref=e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e80]
|
||||
- button "右移" [disabled] [ref=e81]
|
||||
- button "重置" [disabled] [ref=e82]
|
||||
- button "收起选择区" [expanded] [ref=e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e87]:
|
||||
- tablist "选择内容切换项" [ref=e88]:
|
||||
- tab "自然地理区位" [selected] [ref=e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e93] [cursor=pointer]
|
||||
- generic [ref=e94]:
|
||||
- generic [ref=e95]: 自然地理区位
|
||||
- generic [ref=e96]: 接口待接入
|
||||
- dialog "建筑性质筛选" [ref=e97]:
|
||||
- generic [ref=e98]:
|
||||
- heading "建筑性质" [level=2] [ref=e99]
|
||||
- button "关闭" [ref=e100] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e102]
|
||||
- generic [ref=e103]: 未选择
|
||||
- tree [ref=e105]:
|
||||
- treeitem [ref=e106]:
|
||||
- button "公共建筑" [ref=e109] [cursor=pointer]
|
||||
- treeitem [ref=e112]:
|
||||
- button "民用建筑" [ref=e115] [cursor=pointer]
|
||||
- generic [ref=e118]:
|
||||
- button "清空当前" [ref=e119] [cursor=pointer]
|
||||
- button "取消" [ref=e120] [cursor=pointer]
|
||||
- button "确认" [ref=e121] [cursor=pointer]
|
||||
85
.playwright-cli/page-2026-08-16T08-58-07-167Z.yml
Normal file
85
.playwright-cli/page-2026-08-16T08-58-07-167Z.yml
Normal file
@ -0,0 +1,85 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=e23] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=e40] [cursor=pointer]
|
||||
- button "时间" [ref=e47] [cursor=pointer]
|
||||
- button "面积" [ref=e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e59]:
|
||||
- generic [ref=e60]:
|
||||
- button "纵坐标:造价(元)" [ref=e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e65]
|
||||
- toolbar "标注" [ref=e66]:
|
||||
- button "库" [ref=e67] [cursor=pointer]
|
||||
- button "指" [ref=e68] [cursor=pointer]
|
||||
- button "均" [ref=e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e70]
|
||||
- button "Text Tool" [disabled] [ref=e71]
|
||||
- button "Shape Tool" [disabled] [ref=e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e73]
|
||||
- button "全屏(F11)" [ref=e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e75]
|
||||
- button "切换到表格" [ref=e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e77]:
|
||||
- button "缩小" [disabled] [ref=e78]
|
||||
- button "放大" [ref=e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e80]
|
||||
- button "右移" [disabled] [ref=e81]
|
||||
- button "重置" [disabled] [ref=e82]
|
||||
- button "收起选择区" [expanded] [ref=e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e87]:
|
||||
- tablist "选择内容切换项" [ref=e88]:
|
||||
- tab "自然地理区位" [selected] [ref=e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e93] [cursor=pointer]
|
||||
- generic [ref=e94]:
|
||||
- generic [ref=e95]: 自然地理区位
|
||||
- generic [ref=e96]: 接口待接入
|
||||
- dialog "建筑性质筛选" [ref=e97]:
|
||||
- generic [ref=e98]:
|
||||
- heading "建筑性质" [level=2] [ref=e99]
|
||||
- button "关闭" [ref=e100] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e102]
|
||||
- generic [ref=e103]: 已选 1 项
|
||||
- tree [ref=e105]:
|
||||
- treeitem [ref=e106]:
|
||||
- button "公共建筑" [active] [pressed] [ref=e109] [cursor=pointer]
|
||||
- treeitem [ref=e112]:
|
||||
- button "民用建筑" [ref=e115] [cursor=pointer]
|
||||
- generic [ref=e118]:
|
||||
- button "清空当前" [ref=e119] [cursor=pointer]
|
||||
- button "取消" [ref=e120] [cursor=pointer]
|
||||
- button "确认" [ref=e121] [cursor=pointer]
|
||||
85
.playwright-cli/page-2026-08-16T08-58-11-020Z.yml
Normal file
85
.playwright-cli/page-2026-08-16T08-58-11-020Z.yml
Normal file
@ -0,0 +1,85 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]
|
||||
- button "建筑功能" [ref=e23] [cursor=pointer]
|
||||
- button "建筑性质" [ref=e28] [cursor=pointer]
|
||||
- button "建设阶段" [ref=e33] [cursor=pointer]
|
||||
- button "规划形式" [ref=e40] [cursor=pointer]
|
||||
- button "时间" [ref=e47] [cursor=pointer]
|
||||
- button "面积" [ref=e51] [cursor=pointer]
|
||||
- region "年度总费用图表" [ref=e59]:
|
||||
- generic [ref=e60]:
|
||||
- button "纵坐标:造价(元)" [ref=e62] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e63]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e64]:
|
||||
- img "interactive chart"
|
||||
- region [ref=e65]
|
||||
- toolbar "标注" [ref=e66]:
|
||||
- button "库" [ref=e67] [cursor=pointer]
|
||||
- button "指" [ref=e68] [cursor=pointer]
|
||||
- button "均" [ref=e69] [cursor=pointer]
|
||||
- button "Line Tool" [disabled] [ref=e70]
|
||||
- button "Text Tool" [disabled] [ref=e71]
|
||||
- button "Shape Tool" [disabled] [ref=e72]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e73]
|
||||
- button "全屏(F11)" [ref=e74] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e75]
|
||||
- button "切换到表格" [ref=e76] [cursor=pointer]:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e77]:
|
||||
- button "缩小" [disabled] [ref=e78]
|
||||
- button "放大" [ref=e79] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e80]
|
||||
- button "右移" [disabled] [ref=e81]
|
||||
- button "重置" [disabled] [ref=e82]
|
||||
- button "收起选择区" [expanded] [ref=e83] [cursor=pointer]
|
||||
- complementary "选择内容" [ref=e87]:
|
||||
- tablist "选择内容切换项" [ref=e88]:
|
||||
- tab "自然地理区位" [selected] [ref=e89] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e90] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=e91] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e92] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e93] [cursor=pointer]
|
||||
- generic [ref=e94]:
|
||||
- generic [ref=e95]: 自然地理区位
|
||||
- generic [ref=e96]: 接口待接入
|
||||
- dialog "建筑性质筛选" [ref=e97]:
|
||||
- generic [ref=e98]:
|
||||
- heading "建筑性质" [level=2] [ref=e99]
|
||||
- button "关闭" [ref=e100] [cursor=pointer]: ×
|
||||
- searchbox "搜索" [ref=e102]
|
||||
- generic [ref=e103]: 已选 1 项
|
||||
- tree [ref=e105]:
|
||||
- treeitem [ref=e106]:
|
||||
- button "公共建筑" [ref=e109] [cursor=pointer]
|
||||
- treeitem [ref=e112]:
|
||||
- button "民用建筑" [active] [pressed] [ref=e115] [cursor=pointer]
|
||||
- generic [ref=e118]:
|
||||
- button "清空当前" [ref=e119] [cursor=pointer]
|
||||
- button "取消" [ref=e120] [cursor=pointer]
|
||||
- button "确认" [ref=e121] [cursor=pointer]
|
||||
3
.playwright-mcp/console-2026-05-13T08-06-15-907Z.log
Normal file
3
.playwright-mcp/console-2026-05-13T08-06-15-907Z.log
Normal file
@ -0,0 +1,3 @@
|
||||
[ 6918ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
|
||||
[ 7315ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5173/favicon.ico:0
|
||||
[ 331036ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
|
||||
@ -1 +1,6 @@
|
||||
[ 550538ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
|
||||
[ 300ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
|
||||
[ 1230ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5173/favicon.ico:0
|
||||
[ 40506ms] [ERROR] Failed to load resource: the server responded with a status of 401 () @ https://nest.zwgczx.com/api/v1/zw/getBuildingFunctionCostFilterTree?key=templateLibrary¤ttime=1778660578349&__random__=1778660578349:0
|
||||
[ 40812ms] [ERROR] Failed to load resource: the server responded with a status of 401 () @ https://nest.zwgczx.com/api/v1/zw/getBuildingFunctionCostFilterTree?key=indicatorTree&templateId=3¤ttime=1778660578682&__random__=1778660578682:0
|
||||
[ 52231ms] [ERROR] Failed to load resource: the server responded with a status of 401 () @ https://nest.zwgczx.com/api/v1/zw/getBuildingFunctionCostFilterTree?key=templateLibrary¤ttime=1778660590101&__random__=1778660590101:0
|
||||
[ 53824ms] [ERROR] Failed to load resource: the server responded with a status of 401 () @ https://nest.zwgczx.com/api/v1/zw/getBuildingFunctionCostFilterTree?key=indicatorTree&templateId=3¤ttime=1778660591693&__random__=1778660591693:0
|
||||
|
||||
@ -1,2 +0,0 @@
|
||||
[ 136ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5173/node_modules/.vite/deps/react-dom_client.js?v=ae174d51:20102
|
||||
[ 595ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5173/favicon.ico:0
|
||||
@ -1,2 +0,0 @@
|
||||
[ 221ms] [INFO] %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools font-weight:bold @ http://127.0.0.1:5179/node_modules/.vite/deps/react-dom_client.js?v=eccfa23d:20102
|
||||
[ 1056ms] [ERROR] Failed to load resource: the server responded with a status of 404 (Not Found) @ http://127.0.0.1:5179/favicon.ico:0
|
||||
84
.playwright-mcp/page-2026-05-13T08-06-23-224Z.yml
Normal file
84
.playwright-mcp/page-2026-05-13T08-06-23-224Z.yml
Normal file
@ -0,0 +1,84 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]:
|
||||
- img [ref=e7]
|
||||
- generic [ref=e11]: 省市区
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- generic [ref=e16]: 自然地理区位
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- generic [ref=e22]: 设施类别
|
||||
- button "建筑功能" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- generic [ref=e27]: 建筑功能
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]:
|
||||
- img [ref=e29]
|
||||
- generic [ref=e34]: 建设阶段
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e41]: 规划形式
|
||||
- region "年度总费用图表" [ref=e42]:
|
||||
- generic [ref=e43]:
|
||||
- button "纵坐标:造价(元)" [ref=e45] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e46]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e47]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- region [ref=e48]
|
||||
- toolbar "标注" [ref=e49]:
|
||||
- button "库" [ref=e50] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 库
|
||||
- button "树" [ref=e51] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 树
|
||||
- button "均" [ref=e52] [cursor=pointer]:
|
||||
- generic: 均
|
||||
- button "Line Tool" [disabled] [ref=e53]
|
||||
- button "Text Tool" [disabled] [ref=e54]
|
||||
- button "Shape Tool" [disabled] [ref=e55]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e56]
|
||||
- button "全屏(F11)" [ref=e57] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e58]
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e59]:
|
||||
- button "缩小" [disabled] [ref=e60]
|
||||
- button "放大" [ref=e61] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e62]
|
||||
- button "右移" [disabled] [ref=e63]
|
||||
- button "重置" [disabled] [ref=e64]
|
||||
- complementary "选择内容" [ref=e65]:
|
||||
- tablist "选择内容切换项" [ref=e66]:
|
||||
- tab "自然地理区位" [selected] [ref=e67] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e68] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=e69] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e70] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e71] [cursor=pointer]
|
||||
- generic [ref=e72]:
|
||||
- generic [ref=e73]: 自然地理区位
|
||||
- generic [ref=e74]: 加载中
|
||||
84
.playwright-mcp/page-2026-05-13T08-22-19-114Z.yml
Normal file
84
.playwright-mcp/page-2026-05-13T08-22-19-114Z.yml
Normal file
@ -0,0 +1,84 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]:
|
||||
- img [ref=e7]
|
||||
- generic [ref=e11]: 省市区
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- generic [ref=e16]: 自然地理区位
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- generic [ref=e22]: 设施类别
|
||||
- button "建筑功能" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- generic [ref=e27]: 建筑功能
|
||||
- button "建设阶段" [ref=e28] [cursor=pointer]:
|
||||
- img [ref=e29]
|
||||
- generic [ref=e34]: 建设阶段
|
||||
- button "规划形式" [ref=e35] [cursor=pointer]:
|
||||
- img [ref=e36]
|
||||
- generic [ref=e41]: 规划形式
|
||||
- region "年度总费用图表" [ref=e42]:
|
||||
- generic [ref=e43]:
|
||||
- button "纵坐标:造价(元)" [ref=e45] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e46]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e47]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- region [ref=e48]
|
||||
- toolbar "标注" [ref=e49]:
|
||||
- button "库" [ref=e50] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 库
|
||||
- button "树" [ref=e51] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 树
|
||||
- button "均" [ref=e52] [cursor=pointer]:
|
||||
- generic: 均
|
||||
- button "Line Tool" [disabled] [ref=e53]
|
||||
- button "Text Tool" [disabled] [ref=e54]
|
||||
- button "Shape Tool" [disabled] [ref=e55]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e56]
|
||||
- button "全屏(F11)" [ref=e57] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e58]
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e59]:
|
||||
- button "缩小" [disabled] [ref=e60]
|
||||
- button "放大" [ref=e61] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e62]
|
||||
- button "右移" [disabled] [ref=e63]
|
||||
- button "重置" [disabled] [ref=e64]
|
||||
- complementary "选择内容" [ref=e65]:
|
||||
- tablist "选择内容切换项" [ref=e66]:
|
||||
- tab "自然地理区位" [selected] [ref=e67] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e68] [cursor=pointer]
|
||||
- tab "建筑功能" [ref=e69] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e70] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e71] [cursor=pointer]
|
||||
- generic [ref=e72]:
|
||||
- generic [ref=e73]: 自然地理区位
|
||||
- generic [ref=e74]: 加载中
|
||||
@ -1,80 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]:
|
||||
- img [ref=e7]
|
||||
- generic [ref=e11]: 省市区
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- generic [ref=e16]: 自然地理区位
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- generic [ref=e22]: 设施类别
|
||||
- button "建设阶段" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- generic [ref=e29]: 建设阶段
|
||||
- button "规划形式" [ref=e30] [cursor=pointer]:
|
||||
- img [ref=e31]
|
||||
- generic [ref=e36]: 规划形式
|
||||
- region "年度总费用图表" [ref=e37]:
|
||||
- generic [ref=e38]:
|
||||
- button "纵坐标:造价(元)" [ref=e40] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e41]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e42]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- region [ref=e43]
|
||||
- toolbar "标注" [ref=e44]:
|
||||
- button "库" [ref=e45] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 库
|
||||
- button "树" [ref=e46] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 树
|
||||
- button "均" [ref=e47] [cursor=pointer]:
|
||||
- generic: 均
|
||||
- button "Line Tool" [disabled] [ref=e48]
|
||||
- button "Text Tool" [disabled] [ref=e49]
|
||||
- button "Shape Tool" [disabled] [ref=e50]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e51]
|
||||
- button "全屏(F11)" [ref=e52] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e53]
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e54]:
|
||||
- button "缩小" [disabled] [ref=e55]
|
||||
- button "放大" [ref=e56] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e57]
|
||||
- button "右移" [disabled] [ref=e58]
|
||||
- button "重置" [disabled] [ref=e59]
|
||||
- complementary "选择内容" [ref=e60]:
|
||||
- tablist "选择内容切换项" [ref=e61]:
|
||||
- tab "自然地理区位" [selected] [ref=e62] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e63] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e64] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e65] [cursor=pointer]
|
||||
- generic [ref=e66]:
|
||||
- generic [ref=e67]: 自然地理区位
|
||||
- generic [ref=e68]: 加载中
|
||||
@ -1,83 +0,0 @@
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- generic: 众为数字化管理平台
|
||||
- region "年度费用模板" [ref=e4]:
|
||||
- generic "筛选条件" [ref=e5]:
|
||||
- button "省市区" [ref=e6] [cursor=pointer]:
|
||||
- img [ref=e7]
|
||||
- generic [ref=e11]: 省市区
|
||||
- button "自然地理区位" [ref=e12] [cursor=pointer]:
|
||||
- img [ref=e13]
|
||||
- generic [ref=e16]: 自然地理区位
|
||||
- button "设施类别" [ref=e17] [cursor=pointer]:
|
||||
- img [ref=e18]
|
||||
- generic [ref=e22]: 设施类别
|
||||
- button "建设阶段" [ref=e23] [cursor=pointer]:
|
||||
- img [ref=e24]
|
||||
- generic [ref=e29]: 建设阶段
|
||||
- button "规划形式" [ref=e30] [cursor=pointer]:
|
||||
- img [ref=e31]
|
||||
- generic [ref=e36]: 规划形式
|
||||
- region "年度总费用图表" [ref=e37]:
|
||||
- generic [ref=e38]:
|
||||
- button "纵坐标:造价(元)" [ref=e40] [cursor=pointer]: 造价(元)
|
||||
- generic [ref=e41]:
|
||||
- figure "图表,共有0个系列":
|
||||
- generic [ref=e42]:
|
||||
- img "interactive chart":
|
||||
- generic:
|
||||
- img
|
||||
- img
|
||||
- region [ref=e43]
|
||||
- toolbar "标注" [ref=e44]:
|
||||
- button "库" [disabled] [ref=e45] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 库
|
||||
- button "指" [disabled] [ref=e46] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 指
|
||||
- button "均" [disabled] [ref=e47] [cursor=pointer]:
|
||||
- generic: 均
|
||||
- button "Line Tool" [disabled] [ref=e48]
|
||||
- button "Text Tool" [disabled] [ref=e49]
|
||||
- button "Shape Tool" [disabled] [ref=e50]
|
||||
- button "Fibonacci Tool" [disabled] [ref=e51]
|
||||
- button "全屏(F11)" [disabled] [ref=e52] [cursor=pointer]
|
||||
- button "Clear annotations" [disabled] [ref=e53]
|
||||
- button "切换到表格" [disabled] [ref=e54] [cursor=pointer]:
|
||||
- generic:
|
||||
- generic: 趋
|
||||
- status:
|
||||
- generic: 请选择右侧分类项
|
||||
- toolbar "缩放" [ref=e55]:
|
||||
- button "缩小" [disabled] [ref=e56]
|
||||
- button "放大" [ref=e57] [cursor=pointer]
|
||||
- button "左移" [disabled] [ref=e58]
|
||||
- button "右移" [disabled] [ref=e59]
|
||||
- button "重置" [disabled] [ref=e60]
|
||||
- complementary "选择内容" [ref=e61]:
|
||||
- tablist "选择内容切换项" [ref=e62]:
|
||||
- tab "自然地理区位" [selected] [ref=e63] [cursor=pointer]
|
||||
- tab "设施类别" [ref=e64] [cursor=pointer]
|
||||
- tab "建设阶段" [ref=e65] [cursor=pointer]
|
||||
- tab "规划形式" [ref=e66] [cursor=pointer]
|
||||
- generic [ref=e67]:
|
||||
- generic [ref=e68]: 自然地理区位
|
||||
- generic [ref=e69]: Unexpected token '<', "<!doctype "... is not valid JSON
|
||||
@ -1,8 +0,0 @@
|
||||
{
|
||||
"topic_20260821-062201_c21eb2dbea49a53e": {
|
||||
"stage": 1,
|
||||
"userTurns": 1,
|
||||
"basisHash": "10579074257f2c51",
|
||||
"updatedAt": 1787293862779
|
||||
}
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
{
|
||||
"topic_20260821-062201_c21eb2dbea49a53e": 1787293321185
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
{
|
||||
"topic_20260821-062201_c21eb2dbea49a53e": "auto"
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
{
|
||||
"topic_20260821-062201_c21eb2dbea49a53e": "aggrid导出的时候数值不对,现在…"
|
||||
}
|
||||
44
AGENTS.md
44
AGENTS.md
@ -1,44 +0,0 @@
|
||||
<!-- gitnexus:start -->
|
||||
# GitNexus — Code Intelligence
|
||||
|
||||
This project is indexed by GitNexus as **agchart** (187 symbols, 490 relationships, 20 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
||||
|
||||
> Index stale? Run `node .gitnexus/run.cjs analyze` from the project root — it auto-selects an available runner. No `.gitnexus/run.cjs` yet? `npx gitnexus analyze` (npm 11 crash → `npm i -g gitnexus`; #1939).
|
||||
|
||||
## Always Do
|
||||
|
||||
- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user.
|
||||
- **MUST run `detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. For regression review, compare against the default branch: `detect_changes({scope: "compare", base_ref: "main"})`.
|
||||
- **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits.
|
||||
- When exploring unfamiliar code, use `query({search_query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance.
|
||||
- When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `context({name: "symbolName"})`.
|
||||
- For security review, `explain({target: "fileOrSymbol"})` lists taint findings (source→sink flows; needs `analyze --pdg`).
|
||||
|
||||
## Never Do
|
||||
|
||||
- NEVER edit a function, class, or method without first running `impact` on it.
|
||||
- NEVER ignore HIGH or CRITICAL risk warnings from impact analysis.
|
||||
- NEVER rename symbols with find-and-replace — use `rename` which understands the call graph.
|
||||
- NEVER commit changes without running `detect_changes()` to check affected scope.
|
||||
|
||||
## Resources
|
||||
|
||||
| Resource | Use for |
|
||||
|----------|---------|
|
||||
| `gitnexus://repo/agchart/context` | Codebase overview, check index freshness |
|
||||
| `gitnexus://repo/agchart/clusters` | All functional areas |
|
||||
| `gitnexus://repo/agchart/processes` | All execution flows |
|
||||
| `gitnexus://repo/agchart/process/{name}` | Step-by-step execution trace |
|
||||
|
||||
## CLI
|
||||
|
||||
| Task | Read this skill file |
|
||||
|------|---------------------|
|
||||
| Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` |
|
||||
| Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` |
|
||||
| Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` |
|
||||
| Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` |
|
||||
| Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` |
|
||||
| Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` |
|
||||
|
||||
<!-- gitnexus:end -->
|
||||
44
CLAUDE.md
44
CLAUDE.md
@ -1,44 +0,0 @@
|
||||
<!-- gitnexus:start -->
|
||||
# GitNexus — Code Intelligence
|
||||
|
||||
This project is indexed by GitNexus as **agchart** (187 symbols, 490 relationships, 20 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
|
||||
|
||||
> Index stale? Run `node .gitnexus/run.cjs analyze` from the project root — it auto-selects an available runner. No `.gitnexus/run.cjs` yet? `npx gitnexus analyze` (npm 11 crash → `npm i -g gitnexus`; #1939).
|
||||
|
||||
## Always Do
|
||||
|
||||
- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user.
|
||||
- **MUST run `detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. For regression review, compare against the default branch: `detect_changes({scope: "compare", base_ref: "main"})`.
|
||||
- **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits.
|
||||
- When exploring unfamiliar code, use `query({search_query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance.
|
||||
- When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `context({name: "symbolName"})`.
|
||||
- For security review, `explain({target: "fileOrSymbol"})` lists taint findings (source→sink flows; needs `analyze --pdg`).
|
||||
|
||||
## Never Do
|
||||
|
||||
- NEVER edit a function, class, or method without first running `impact` on it.
|
||||
- NEVER ignore HIGH or CRITICAL risk warnings from impact analysis.
|
||||
- NEVER rename symbols with find-and-replace — use `rename` which understands the call graph.
|
||||
- NEVER commit changes without running `detect_changes()` to check affected scope.
|
||||
|
||||
## Resources
|
||||
|
||||
| Resource | Use for |
|
||||
|----------|---------|
|
||||
| `gitnexus://repo/agchart/context` | Codebase overview, check index freshness |
|
||||
| `gitnexus://repo/agchart/clusters` | All functional areas |
|
||||
| `gitnexus://repo/agchart/processes` | All execution flows |
|
||||
| `gitnexus://repo/agchart/process/{name}` | Step-by-step execution trace |
|
||||
|
||||
## CLI
|
||||
|
||||
| Task | Read this skill file |
|
||||
|------|---------------------|
|
||||
| Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` |
|
||||
| Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` |
|
||||
| Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` |
|
||||
| Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` |
|
||||
| Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` |
|
||||
| Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` |
|
||||
|
||||
<!-- gitnexus:end -->
|
||||
@ -1,10 +1,10 @@
|
||||
# 组团趋势图
|
||||
# 建筑设施对象趋势图
|
||||
|
||||
这是一个基于 `React + AG Charts` 的组团趋势图页面,用来查看不同分类维度下的年度统计趋势,并通过右侧筛选条件联动图表结果。
|
||||
这是一个基于 `React + AG Charts` 的建筑设施对象趋势图页面,用来查看不同分类维度下的年度统计趋势,并通过右侧筛选条件联动图表结果。
|
||||
|
||||
## 功能
|
||||
|
||||
- 左侧展示组团趋势图,支持最低值、最高值、平均值、中位数和数据量切换
|
||||
- 左侧展示建筑设施对象趋势图,支持最低值、最高值、平均值、中位数和数据量切换
|
||||
- 右侧展示分类树,支持按 `自然地理区位 / 设施类别 / 建设阶段 / 规划形式` 选择节点
|
||||
- 筛选条件支持 `省市区`,后端会根据 `uf_xzqy` 展开到区级 `id` 后再过滤
|
||||
- 支持搜索筛选树节点,支持多条件叠加
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<title>AG Chart Service</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="ztChart"></div>
|
||||
<div id="sbChart"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 85 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 29 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 46 KiB |
@ -1,14 +0,0 @@
|
||||
{
|
||||
"browser": {
|
||||
"launchOptions": {
|
||||
"headless": true,
|
||||
"executablePath": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
|
||||
},
|
||||
"contextOptions": {
|
||||
"viewport": {
|
||||
"width": 1440,
|
||||
"height": 900
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
202
src/App.tsx
202
src/App.tsx
@ -12,7 +12,7 @@ import {
|
||||
} from 'ag-grid-community';
|
||||
import type { AgCartesianChartOptions } from 'ag-charts-community';
|
||||
import { ModuleRegistry } from 'ag-charts-community';
|
||||
import { Building2, CalendarRange, Construction, House, LayoutGrid, Library, LocateFixed, MapPinned, PanelRightClose, PanelRightOpen, Ruler, Waypoints } from 'lucide-react';
|
||||
import { Building2, CalendarRange, Construction, House, LayoutGrid, Library, LocateFixed, MapPinned, PanelRightClose, PanelRightOpen, Ruler, SquareFunction, Waypoints } from 'lucide-react';
|
||||
import {
|
||||
AnnotationsModule,
|
||||
ContextMenuModule,
|
||||
@ -30,9 +30,9 @@ const API_BASE_URL = 'https://nest.zwgczx.com/api/v1';
|
||||
// const API_BASE_URL = 'http://127.0.0.1:9089/api/v1';
|
||||
|
||||
const API_ROUTES = {
|
||||
filterTree: '/zw/getBuildingFunctionCostFilterTree',
|
||||
filterTreeSearch: '/zw/getBuildingFunctionCostFilterTreeSearch',
|
||||
statsBatch: '/zw/getBuildingFunctionCostStatsBatch',
|
||||
filterTree: '/zw/getBuildingFacilityObjectFilterTree',
|
||||
filterTreeSearch: '/zw/getBuildingFacilityObjectFilterTreeSearch',
|
||||
statsBatch: '/zw/getBuildingFacilityObjectStatsBatch',
|
||||
} as const;
|
||||
|
||||
const statisticOptions = [
|
||||
@ -63,6 +63,7 @@ const metricShortLabels: Record<MetricKey, string> = {
|
||||
const contentOptions = [
|
||||
{ key: 'geoLocation', label: '自然地理区位' },
|
||||
{ key: 'facilityType', label: '设施类别' },
|
||||
{ key: 'buildingFunction', label: '建筑功能' },
|
||||
{ key: 'constructionStage', label: '建设阶段' },
|
||||
{ key: 'planningForm', label: '规划形式' },
|
||||
] as const;
|
||||
@ -73,6 +74,7 @@ const filterOptions = [
|
||||
{ key: 'region', label: '省市区', icon: MapPinned },
|
||||
{ key: 'geoLocation', label: '自然地理区位', icon: LocateFixed },
|
||||
{ key: 'facilityType', label: '设施类别', icon: Building2 },
|
||||
{ key: 'buildingFunction', label: '建筑功能', icon: SquareFunction },
|
||||
{ key: 'buildingNature', label: '建筑性质', icon: House },
|
||||
{ key: 'constructionStage', label: '建设阶段', icon: Construction },
|
||||
{ key: 'planningForm', label: '规划形式', icon: LayoutGrid },
|
||||
@ -114,6 +116,17 @@ const contentTreeConfigs = {
|
||||
fieldid: '305426',
|
||||
defaultExpandedLevel: 3,
|
||||
},
|
||||
buildingFunction: {
|
||||
endpoint: '/api/public/browser/data/256',
|
||||
treeid: '95004',
|
||||
fieldid: '305919',
|
||||
defaultExpandedLevel: 0,
|
||||
browserParams: {
|
||||
workflowid: '182032',
|
||||
wfid: '182032',
|
||||
billid: '-1817',
|
||||
},
|
||||
},
|
||||
constructionStage: {
|
||||
endpoint: '/api/public/browser/data/256',
|
||||
treeid: '94007',
|
||||
@ -135,8 +148,16 @@ const buildingNatureBrowserConfig = {
|
||||
fieldid: '316390',
|
||||
searchbrowserid: '36523',
|
||||
browserParams: {
|
||||
requestid: '', isshowsearchtab: '1', workflowid: '182028', wfid: '182028', billid: '-1815',
|
||||
f_weaver_belongto_userid: '', f_weaver_belongto_usertype: '', wf_isagent: '', wf_beagenter: '', wfCreater: '',
|
||||
requestid: '',
|
||||
isshowsearchtab: '1',
|
||||
workflowid: '182028',
|
||||
wfid: '182028',
|
||||
billid: '-1815',
|
||||
f_weaver_belongto_userid: '',
|
||||
f_weaver_belongto_usertype: '',
|
||||
wf_isagent: '',
|
||||
wf_beagenter: '',
|
||||
wfCreater: '',
|
||||
},
|
||||
} as const;
|
||||
|
||||
@ -180,6 +201,7 @@ type MetricKey = (typeof metricOptions)[number]['key'];
|
||||
type ContentKey = (typeof contentOptions)[number]['key'];
|
||||
type FilterKey = (typeof filterOptions)[number]['key'];
|
||||
type RangeFilterKey = Extract<FilterKey, 'time' | 'area'>;
|
||||
type GroupKey = 'year';
|
||||
type ChartViewKey = 'trend' | 'pivot';
|
||||
type ApiBuildingFunctionStat = {
|
||||
group_key?: string | number | null;
|
||||
@ -607,10 +629,6 @@ function isDefaultTemplateSelection(nodes: SelectedFilterNode[]) {
|
||||
return nodes.length === 1 && nodes[0]?.id === defaultTemplateFilterNode.id;
|
||||
}
|
||||
|
||||
function isSameFilterSelection(a: SelectedFilterNode[], b: SelectedFilterNode[]) {
|
||||
return a.length === b.length && a.every((node, index) => node.id === b[index]?.id);
|
||||
}
|
||||
|
||||
function getDefaultIndicatorTreeFilterNodes(nodes: TreeNode[]): SelectedFilterNode[] {
|
||||
const defaultNode = nodes[0];
|
||||
if (!defaultNode) return [];
|
||||
@ -749,6 +767,7 @@ function App() {
|
||||
const treeInitialLoadStartedRef = useRef<Record<ContentKey, boolean>>({
|
||||
geoLocation: false,
|
||||
facilityType: false,
|
||||
buildingFunction: false,
|
||||
constructionStage: false,
|
||||
planningForm: false,
|
||||
});
|
||||
@ -758,6 +777,7 @@ function App() {
|
||||
region: false,
|
||||
geoLocation: false,
|
||||
facilityType: false,
|
||||
buildingFunction: false,
|
||||
buildingNature: false,
|
||||
constructionStage: false,
|
||||
planningForm: false,
|
||||
@ -766,6 +786,7 @@ function App() {
|
||||
});
|
||||
const [statisticKey, setStatisticKey] = useState<StatisticKey>('avgValue');
|
||||
const [metricKey, setMetricKey] = useState<MetricKey>('cost');
|
||||
const [groupKey, setGroupKey] = useState<GroupKey>('year');
|
||||
const [chartViewKey, setChartViewKey] = useState<ChartViewKey>('trend');
|
||||
const [workspaceFullscreen, setWorkspaceFullscreen] = useState(false);
|
||||
const [rightPanelCollapsed, setRightPanelCollapsed] = useState(false);
|
||||
@ -776,18 +797,21 @@ function App() {
|
||||
const [treeByContent, setTreeByContent] = useState<Record<ContentKey, TreeNode[]>>({
|
||||
geoLocation: [],
|
||||
facilityType: [],
|
||||
buildingFunction: [],
|
||||
constructionStage: [],
|
||||
planningForm: [],
|
||||
});
|
||||
const [treeLoadingByContent, setTreeLoadingByContent] = useState<Record<ContentKey, boolean>>({
|
||||
geoLocation: false,
|
||||
facilityType: false,
|
||||
buildingFunction: false,
|
||||
constructionStage: false,
|
||||
planningForm: false,
|
||||
});
|
||||
const [treeErrorByContent, setTreeErrorByContent] = useState<Record<ContentKey, string | null>>({
|
||||
geoLocation: null,
|
||||
facilityType: null,
|
||||
buildingFunction: null,
|
||||
constructionStage: null,
|
||||
planningForm: null,
|
||||
});
|
||||
@ -804,6 +828,7 @@ function App() {
|
||||
region: [],
|
||||
geoLocation: [],
|
||||
facilityType: [],
|
||||
buildingFunction: [],
|
||||
buildingNature: [],
|
||||
constructionStage: [],
|
||||
planningForm: [],
|
||||
@ -816,6 +841,7 @@ function App() {
|
||||
region: false,
|
||||
geoLocation: false,
|
||||
facilityType: false,
|
||||
buildingFunction: false,
|
||||
buildingNature: false,
|
||||
constructionStage: false,
|
||||
planningForm: false,
|
||||
@ -828,6 +854,7 @@ function App() {
|
||||
region: null,
|
||||
geoLocation: null,
|
||||
facilityType: null,
|
||||
buildingFunction: null,
|
||||
buildingNature: null,
|
||||
constructionStage: null,
|
||||
planningForm: null,
|
||||
@ -840,6 +867,7 @@ function App() {
|
||||
region: [],
|
||||
geoLocation: [],
|
||||
facilityType: [],
|
||||
buildingFunction: [],
|
||||
buildingNature: [],
|
||||
constructionStage: [],
|
||||
planningForm: [],
|
||||
@ -852,6 +880,7 @@ function App() {
|
||||
region: false,
|
||||
geoLocation: false,
|
||||
facilityType: false,
|
||||
buildingFunction: false,
|
||||
buildingNature: false,
|
||||
constructionStage: false,
|
||||
planningForm: false,
|
||||
@ -864,6 +893,7 @@ function App() {
|
||||
region: null,
|
||||
geoLocation: null,
|
||||
facilityType: null,
|
||||
buildingFunction: null,
|
||||
buildingNature: null,
|
||||
constructionStage: null,
|
||||
planningForm: null,
|
||||
@ -876,6 +906,7 @@ function App() {
|
||||
region: [],
|
||||
geoLocation: [],
|
||||
facilityType: [],
|
||||
buildingFunction: [],
|
||||
buildingNature: [],
|
||||
constructionStage: [],
|
||||
planningForm: [],
|
||||
@ -894,6 +925,7 @@ function App() {
|
||||
region: 0,
|
||||
geoLocation: 0,
|
||||
facilityType: 0,
|
||||
buildingFunction: 0,
|
||||
buildingNature: 0,
|
||||
constructionStage: 0,
|
||||
planningForm: 0,
|
||||
@ -1174,7 +1206,7 @@ function App() {
|
||||
}, []);
|
||||
const exportPivotGrid = useCallback(() => {
|
||||
pivotGridApiRef.current?.exportDataAsCsv({
|
||||
fileName: '组团统计表.csv',
|
||||
fileName: '建筑设施对象统计表.csv',
|
||||
});
|
||||
setGridContextMenuPosition(null);
|
||||
}, []);
|
||||
@ -1213,7 +1245,6 @@ function App() {
|
||||
return { ...current, indicatorTree: defaultIndicatorTreeNodes };
|
||||
});
|
||||
}, [defaultIndicatorTreeNodes]);
|
||||
|
||||
const appliedFilterPayload = useMemo(
|
||||
() => filterOptions
|
||||
.filter((option) => option.key !== 'time')
|
||||
@ -1224,6 +1255,7 @@ function App() {
|
||||
.filter((filter) => filter.nodes.length > 0),
|
||||
[
|
||||
appliedFilters.area,
|
||||
appliedFilters.buildingFunction,
|
||||
appliedFilters.buildingNature,
|
||||
appliedFilters.constructionStage,
|
||||
appliedFilters.facilityType,
|
||||
@ -1251,6 +1283,7 @@ function App() {
|
||||
}
|
||||
const treeParams = {
|
||||
...browserTreeDefaults,
|
||||
...('browserParams' in config ? config.browserParams : {}),
|
||||
treeid: config.treeid,
|
||||
cube_treeid: config.treeid,
|
||||
fieldid: config.fieldid,
|
||||
@ -1292,17 +1325,54 @@ function App() {
|
||||
searchbrowserid: buildingNatureBrowserConfig.searchbrowserid,
|
||||
fieldid: buildingNatureBrowserConfig.fieldid,
|
||||
};
|
||||
const requestOptions: RequestInit = { credentials: 'include', signal, headers: { 'X-Requested-With': 'XMLHttpRequest' } };
|
||||
const requestOptions: RequestInit = {
|
||||
credentials: 'include',
|
||||
signal,
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
},
|
||||
};
|
||||
|
||||
if (!nodeId) {
|
||||
const conditionResponse = await fetch(`${buildingNatureBrowserConfig.conditionEndpoint}?${buildQuery(treeParams)}`, requestOptions);
|
||||
if (!conditionResponse.ok) throw new Error(`建筑性质浏览条件加载失败:HTTP ${conditionResponse.status}`);
|
||||
const conditionResponse = await fetch(
|
||||
`${buildingNatureBrowserConfig.conditionEndpoint}?${buildQuery(treeParams)}`,
|
||||
requestOptions,
|
||||
);
|
||||
if (!conditionResponse.ok) {
|
||||
throw new Error(`建筑性质浏览条件加载失败:HTTP ${conditionResponse.status}`);
|
||||
}
|
||||
const conditionPayload = await conditionResponse.json() as { status?: boolean; msg?: string };
|
||||
if (conditionPayload.status === false) {
|
||||
throw new Error(conditionPayload.msg || '建筑性质浏览条件加载失败');
|
||||
}
|
||||
}
|
||||
|
||||
const dataParams = nodeId
|
||||
? { ...treeParams, type: '2', id: nodeId, isVirtual: '' }
|
||||
: { ...treeParams, pageSize: '10', current: '1', min: '1', max: '10' };
|
||||
const response = await fetch(`${buildingNatureBrowserConfig.dataEndpoint}?${buildQuery(dataParams)}`, requestOptions);
|
||||
if (!response.ok) throw new Error(`建筑性质浏览数据加载失败:HTTP ${response.status}`);
|
||||
return normalizeTreeRows(pickArray(await response.json()));
|
||||
? {
|
||||
...treeParams,
|
||||
type: '2',
|
||||
id: nodeId,
|
||||
isVirtual: '',
|
||||
}
|
||||
: {
|
||||
...treeParams,
|
||||
pageSize: '10',
|
||||
current: '1',
|
||||
min: '1',
|
||||
max: '10',
|
||||
};
|
||||
const dataResponse = await fetch(
|
||||
`${buildingNatureBrowserConfig.dataEndpoint}?${buildQuery(dataParams)}`,
|
||||
requestOptions,
|
||||
);
|
||||
if (!dataResponse.ok) {
|
||||
throw new Error(`建筑性质浏览数据加载失败:HTTP ${dataResponse.status}`);
|
||||
}
|
||||
const dataPayload = await dataResponse.json() as { status?: boolean; msg?: string };
|
||||
if (dataPayload.status === false) {
|
||||
throw new Error(dataPayload.msg || '建筑性质浏览数据加载失败');
|
||||
}
|
||||
return normalizeTreeRows(pickArray(dataPayload));
|
||||
};
|
||||
|
||||
const normalizeBackendTree = (nodes: TreeNode[]): TreeNode[] => nodes.map((node) => ({
|
||||
@ -1567,6 +1637,10 @@ function App() {
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
ensureFilterTreeLoaded('indicatorTree');
|
||||
}, [selectedTemplateId]);
|
||||
|
||||
const openFilterModal = (filterKey: FilterKey) => {
|
||||
setFilterModalKey(filterKey);
|
||||
if (isRangeFilterKey(filterKey)) {
|
||||
@ -1589,10 +1663,6 @@ function App() {
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
ensureFilterTreeLoaded('indicatorTree');
|
||||
}, [selectedTemplateId]);
|
||||
|
||||
const closeFilterModal = () => {
|
||||
if (filterModalKey) {
|
||||
filterSearchRequestSeqRef.current[filterModalKey] += 1;
|
||||
@ -1816,7 +1886,7 @@ function App() {
|
||||
: isIndicatorTreeFilterKey(filterKey)
|
||||
? defaultIndicatorTreeNodes
|
||||
: [];
|
||||
if (isSameFilterSelection(appliedFilters[filterKey], nextNodes)) {
|
||||
if (appliedFilters[filterKey].length === nextNodes.length && appliedFilters[filterKey].every((node, index) => node.id === nextNodes[index]?.id)) {
|
||||
return;
|
||||
}
|
||||
setAppliedFilters((current) => {
|
||||
@ -1920,6 +1990,13 @@ function App() {
|
||||
});
|
||||
}, [activeContentKey, treeByContent]);
|
||||
|
||||
useEffect(() => {
|
||||
if (filterModalKey !== 'indicatorTree') return;
|
||||
if (draftFilterNodes.length > 0) return;
|
||||
if (defaultIndicatorTreeNodes.length === 0) return;
|
||||
setDraftFilterNodes(defaultIndicatorTreeNodes);
|
||||
}, [defaultIndicatorTreeNodes, draftFilterNodes.length, filterModalKey]);
|
||||
|
||||
useEffect(() => {
|
||||
const controller = new AbortController();
|
||||
|
||||
@ -1937,6 +2014,13 @@ function App() {
|
||||
setLoadingHint('正在加载数据');
|
||||
setLoadError(null);
|
||||
try {
|
||||
const hasAnyMissingNode = selectedContentNodes.some((node) => !chartDataBySelection[getSelectionKey(node.contentKey, node.id)]);
|
||||
if (selectedContentNodes.length > 0 && !hasAnyMissingNode && chartSummaryBySelection[overallSummaryKey]) {
|
||||
setLoading(false);
|
||||
setLoadingHint('');
|
||||
return;
|
||||
}
|
||||
|
||||
const response = await fetch(`${API_BASE_URL}${API_ROUTES.statsBatch}`, {
|
||||
method: 'POST',
|
||||
signal: controller.signal,
|
||||
@ -1944,7 +2028,7 @@ function App() {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
groupBy: 'year',
|
||||
groupBy: groupKey,
|
||||
metric: requestMetricKey,
|
||||
templateId: selectedTemplateId,
|
||||
filters: appliedFilterPayload,
|
||||
@ -1965,9 +2049,7 @@ function App() {
|
||||
const summaries = (payload.data ?? [])
|
||||
.filter((item) => item.key && item.summary)
|
||||
.map((item) => [item.key as string, normalizeStat(item.summary as ApiBuildingFunctionStat)] as const);
|
||||
const overallSummary = (payload.data ?? [])
|
||||
.find((item) => item.key === overallSummaryKey)?.summary
|
||||
?? (payload.data ?? []).find((item) => item.summary)?.summary;
|
||||
const overallSummary = (payload.data ?? []).find((item) => item.key === overallSummaryKey)?.summary;
|
||||
setChartDataBySelection(Object.fromEntries(results));
|
||||
setChartSummaryBySelection({
|
||||
...Object.fromEntries(summaries),
|
||||
@ -1989,7 +2071,7 @@ function App() {
|
||||
return () => {
|
||||
controller.abort();
|
||||
};
|
||||
}, [appliedFilterPayload, chartQueryVersion, metricKey, requestMetricKey, selectedContentNodes, selectedTemplateId]);
|
||||
}, [appliedFilterPayload, chartQueryVersion, groupKey, metricKey, requestMetricKey, selectedContentNodes, selectedTemplateId]);
|
||||
|
||||
useEffect(() => {
|
||||
const frame = chartFrameRef.current;
|
||||
@ -2028,7 +2110,6 @@ function App() {
|
||||
indicatorButton.classList.add('chart-indicator-button');
|
||||
enableCustomToolbarButton(indicatorButton);
|
||||
setButtonAttribute(indicatorButton, 'aria-expanded', String(filterModalKey === 'indicatorTree'));
|
||||
setButtonAttribute(indicatorButton, 'title', '指标树形');
|
||||
}
|
||||
|
||||
const button = getFullscreenButton();
|
||||
@ -2169,7 +2250,7 @@ function App() {
|
||||
}, [chartViewKey, fitPivotGridColumns, metricKey, pivotGridRowData.length, rightPanelCollapsed]);
|
||||
|
||||
const chartOptions = useMemo<AgCartesianChartOptions>(() => {
|
||||
const trendData = groupNames.map((groupName) => {
|
||||
const visibleData = groupNames.map((groupName) => {
|
||||
const row: Record<string, string | number | null> = { groupName };
|
||||
selectedContentNodes.forEach((node) => {
|
||||
const datum = visibleChartDataBySelection[getSelectionKey(node.contentKey, node.id)]?.find((item) => item.groupName === groupName);
|
||||
@ -2177,32 +2258,6 @@ function App() {
|
||||
});
|
||||
return row;
|
||||
});
|
||||
const series = selectedContentNodes.map((node) => ({
|
||||
type: 'line' as const,
|
||||
xKey: 'groupName',
|
||||
yKey: getSeriesValueKey(node.contentKey, node.id),
|
||||
yName: `${node.label} ${seriesValueLabel}`,
|
||||
stroke: node.color,
|
||||
strokeWidth: 2,
|
||||
connectMissingData: true,
|
||||
marker: {
|
||||
enabled: true,
|
||||
fill: node.color,
|
||||
stroke: node.color,
|
||||
size: 5,
|
||||
},
|
||||
interpolation: {
|
||||
type: 'smooth' as const,
|
||||
},
|
||||
tooltip: {
|
||||
renderer: ({ datum, yKey, yName }: { datum: Record<string, unknown>; yKey: string; yName?: string }) => ({
|
||||
title: yName ?? '',
|
||||
data: [
|
||||
{ label: selectedMetric.label, value: formatChartValue(Number(datum[yKey]), metricKey) },
|
||||
],
|
||||
}),
|
||||
},
|
||||
}));
|
||||
|
||||
return {
|
||||
theme: {
|
||||
@ -2232,7 +2287,7 @@ function App() {
|
||||
bottom: 18,
|
||||
left: 24,
|
||||
},
|
||||
data: trendData,
|
||||
data: visibleData,
|
||||
zoom: {
|
||||
enabled: true,
|
||||
anchorPointX: 'pointer',
|
||||
@ -2315,7 +2370,32 @@ function App() {
|
||||
] as unknown as NonNullable<NonNullable<AgCartesianChartOptions['annotations']>['toolbar']>['buttons']),
|
||||
},
|
||||
},
|
||||
series,
|
||||
series: selectedContentNodes.map((node) => ({
|
||||
type: 'line',
|
||||
xKey: 'groupName',
|
||||
yKey: getSeriesValueKey(node.contentKey, node.id),
|
||||
yName: `${node.label} ${seriesValueLabel}`,
|
||||
stroke: node.color,
|
||||
strokeWidth: 2,
|
||||
connectMissingData: true,
|
||||
marker: {
|
||||
enabled: true,
|
||||
fill: node.color,
|
||||
stroke: node.color,
|
||||
size: 5,
|
||||
},
|
||||
interpolation: {
|
||||
type: 'smooth',
|
||||
},
|
||||
tooltip: {
|
||||
renderer: ({ datum, yKey, yName }) => ({
|
||||
title: yName,
|
||||
data: [
|
||||
{ label: selectedMetric.label, value: formatChartValue(Number(datum[yKey]), metricKey) },
|
||||
],
|
||||
}),
|
||||
},
|
||||
})),
|
||||
axes: {
|
||||
x: {
|
||||
type: 'category',
|
||||
@ -2390,6 +2470,7 @@ function App() {
|
||||
statisticKey,
|
||||
visibleChartDataBySelection,
|
||||
]);
|
||||
|
||||
const renderMetricSwitcher = (variant: 'chart' | 'grid') => (
|
||||
<div className={`metric-switcher metric-switcher--${variant}`}>
|
||||
<button
|
||||
@ -2473,6 +2554,7 @@ function App() {
|
||||
region: [],
|
||||
geoLocation: [],
|
||||
facilityType: [],
|
||||
buildingFunction: [],
|
||||
buildingNature: [],
|
||||
constructionStage: [],
|
||||
planningForm: [],
|
||||
|
||||
@ -2,8 +2,6 @@ import { StrictMode } from 'react';
|
||||
import { createRoot } from 'react-dom/client';
|
||||
import { AllCommunityModule, ModuleRegistry } from 'ag-charts-community';
|
||||
import App from './App';
|
||||
import 'ag-grid-community/styles/ag-grid.css';
|
||||
import 'ag-grid-community/styles/ag-theme-quartz.css';
|
||||
import './styles.css';
|
||||
|
||||
ModuleRegistry.registerModules([AllCommunityModule]);
|
||||
@ -14,7 +12,7 @@ declare global {
|
||||
}
|
||||
}
|
||||
|
||||
const chartContainerId = 'ztChart';
|
||||
const chartContainerId = 'sbChart';
|
||||
|
||||
const getRootRegistry = () => {
|
||||
window.__chartReactRoots ??= new WeakMap<Element, ReturnType<typeof createRoot>>();
|
||||
|
||||
@ -64,7 +64,7 @@ button {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 7fr) minmax(320px, 3fr);
|
||||
grid-template-columns: minmax(540px, 52vw) 1fr;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
gap: 12px 28px;
|
||||
height: 100vh;
|
||||
@ -251,7 +251,7 @@ button {
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 7fr) minmax(320px, 3fr);
|
||||
grid-template-columns: minmax(540px, 52vw) 1fr;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
gap: 12px 28px;
|
||||
width: 100vw;
|
||||
@ -413,7 +413,7 @@ button {
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
line-height: 20px;
|
||||
overflow: hidden;
|
||||
overflow: visible;
|
||||
pointer-events: none;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
@ -1 +1 @@
|
||||
$ vite --host 0.0.0.0 --port "5173"
|
||||
$ vite --host 0.0.0.0 --port "5174"
|
||||
|
||||
10
vite-dev.log
10
vite-dev.log
@ -1,8 +1,8 @@
|
||||
|
||||
[32m[1mVITE[22m v7.3.2[39m [2mready in [0m[1m303[22m[2m[0m ms[22m
|
||||
[32m[1mVITE[22m v7.3.2[39m [2mready in [0m[1m306[22m[2m[0m ms[22m
|
||||
|
||||
[32m➜[39m [1mLocal[22m: [36mhttp://localhost:[1m5173[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://100.106.162.120:[1m5173[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://192.168.1.155:[1m5173[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://172.31.112.1:[1m5173[22m/[39m
|
||||
[32m➜[39m [1mLocal[22m: [36mhttp://localhost:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://100.106.162.120:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://192.168.1.155:[1m5174[22m/[39m
|
||||
[32m➜[39m [1mNetwork[22m: [36mhttp://172.31.112.1:[1m5174[22m/[39m
|
||||
[2m[32m ➜[39m[22m[2m press [22m[1mh + enter[22m[2m to show help[22m
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
|
||||
[32m[1mVITE[22m v7.3.2[39m [2mready in [0m[1m283[22m[2m[0m ms[22m
|
||||
[32m[1mVITE[22m v7.3.2[39m [2mready in [0m[1m307[22m[2m[0m ms[22m
|
||||
|
||||
[32m➜[39m [1mLocal[22m: [36mhttp://127.0.0.1:[1m5173[22m/[39m
|
||||
[2m[32m ➜[39m[22m[2m press [22m[1mh + enter[22m[2m to show help[22m
|
||||
[2m16:10:18[22m [36m[1m[vite][22m[39m [90m[2m(client)[22m[39m [32mhmr update [39m[2m/src/App.tsx[22m
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user