Commit Graph
2480 Commits
Author SHA1 Message Date
junjun b06348e71a fix(db): convert SQL Server varchar fields from latin-1 to gbk in exec_sql 2026-09-24 16:39:09 +08:00
ulleo 4d5950c0a1 docs(agents): document xpack runtime facts and source-link prerequisites 2026-09-24 14:34:56 +08:00
ulleo 6773df3f4f chore: align ruff target with py311, ignore /logs/, rename g2-ssr package 2026-09-24 14:34:56 +08:00
ulleo f864458210 docs(agents): add agent guidance suite (AGENTS.md, CONTEXT.md, docs/agents) 2026-09-24 14:34:56 +08:00
ulleo 65de8eaf1c test: consolidate tests into backend/tests, refresh stale guards, drop dead scripts 2026-09-24 14:34:56 +08:00
maninhill 5efc0d8525 Remove supported model providers section from README
Removed the section listing supported model providers from the README.
2026-09-23 12:45:01 +08:00
junjun 2f2326aaa8 fix: hive config 2026-09-23 10:27:39 +08:00
junjun aa41fc1033 fix: hive config 2026-09-22 16:10:12 +08:00
ulleo 337c75549b fix(chat): constrain SQL row-limit placement to outermost query in prompt templates (#1202)
The row-limit policy in query_limit/no_query_limit did not specify WHERE
the limit should be applied, so LLMs could put LIMIT/ROWNUM/TOP inside
subqueries, truncating the data feeding aggregation (limiting accessed
rows instead of the final result set).

- query_limit/no_query_limit: limit must be applied only to the outermost
  query; never inside subqueries, derived tables or CTEs; add conditional
  per-group top-N note (window functions where supported)
- process_check (template.yaml + Oracle override): step 4 now verifies
  limit placement
- sql_examples: add nested-aggregation bad/good examples for all 11
  engines showing the limit on the outer query only
- Oracle: fix invalid GROUP BY...WHERE ROWNUM example and wrong
  ROWNUM-before-ORDER BY few-shot answers (wrap with outer query)
2026-09-21 14:50:55 +08:00
xuwei-fit2cloud 311e01ce35 refactor: Improve PostgreSQL connection readiness check #1300
Replace wait-for-it with pg_isready for PostgreSQL readiness check.
2026-09-21 10:52:30 +08:00
yangmingshuo5577-jpg f48d7828c9 fix(data-format): preserve values when expanding scientific notation 2026-09-21 09:59:54 +08:00
junjun 2ce3fc71ef refactor: optimize code 2026-09-20 17:50:45 +08:00
maninhill 5cd1c2993f Remove Star History section from README
Removed the Star History section from the README.
2026-09-20 17:14:09 +08:00
ulleo 21961e2d03 feat(i18n): add Thai (th-TH) language support
Frontend:
- Add frontend/src/i18n/th-TH.json (913 keys, full parity with zh-CN)
- Register th-TH in i18n entry with native element-plus-secondary Thai locale
- Add Thai option to language selectors, legacy th_TH alias mapping,
  and browser locale detection (th* -> th-TH)
- Add common.thai label to all existing locale files

Backend:
- Add backend/locales/th-TH.json (177 keys)
- Accept th-TH in language whitelist, schema regex, and MCP question
- Map th* to Thai language name in LLM prompt language selection
- Apply question language to guess-question prompt template
2026-09-20 17:05:35 +08:00
fit2cloud-chenywandClaude Code 11b491e628 fix(datasource): allow advanced assistant to access host datasource APIs
Co-Authored-By: Claude Code <[email protected]>
2026-09-20 16:15:15 +08:00
xuwei-fit2cloud 518403e2b4 fix(db): avoid detached datasource in SQL Server pool creator (#1330) 2026-09-20 11:14:24 +08:00
xuwei-fit2cloud 6d273f18e8 fix: container name extraction in healthcheck function
Remove carriage return characters from container name extraction.
2026-09-17 17:25:10 +08:00
xuwei-fit2cloud 3074c4ed2f Bump version from 1.10.1 to 1.10.2 2026-09-17 16:17:48 +08:00
xuwei-fit2cloud 93e530733c fix: round integer values during Excel and CSV import (#1365) 2026-09-17 15:46:25 +08:00
junjun 35e7e00592 fix: Cross-Workspace Data-Source Schema Disclosure and Modification (Incomplete IDOR Remediation) 2026-09-17 15:23:43 +08:00
xuwei-fit2cloud 26818963a6 fix(datasource): retain explicitly referenced tables during schema selection 2026-09-17 14:51:41 +08:00
xuwei-fit2cloud 13f00769b1 Add destination key for Gitee sync action 2026-09-17 13:47:49 +08:00
xuwei-fit2cloud 0d20355790 Add workflow dispatch trigger to sync2gitee.yml 2026-09-17 13:36:53 +08:00
junjun 97d29a4d42 fix: Cross-Workspace Data-Source Schema Disclosure and Modification (Incomplete IDOR Remediation) 2026-09-17 12:17:53 +08:00
carfeii fccdd29421 Add per-user ownership check to dashboard load/update/delete
Dashboard resource endpoints (load_resource, update_resource,
update_canvas, delete_resource) fetched a core_dashboard row by id
alone, with no check that the caller created it. The only gating
decorator verified workspace membership, not per-user ownership, so
any authenticated workspace member could read, rename, or delete any
other member's dashboard by id. list_resource already filters by
create_by, showing dashboards are meant to be private per creator;
this adds the same check to the other four code paths.
2026-09-17 10:21:18 +08:00
junjun d4ddf6d904 build: Github action yml 2026-09-15 17:05:40 +08:00
junjun 81c58880e5 build: Github action yml 2026-09-15 16:51:07 +08:00
kris tan 65110d6791 test(datasource): cover Hive partition field discovery
Add eight regression cases for partition metadata, duplicate fields, blank names, valid hash-prefixed columns, empty results, and extra driver columns. Execute the production get_fields and ColumnSchema definitions with a mocked Hive cursor.

Validation: python -m pytest backend/tests -q (11 passed).
2026-09-15 16:09:52 +08:00
kris tan 67601e6494 fix(datasource): filter Hive partition metadata from table fields
Ignore blank names and DESCRIBE metadata headers. Retain partition columns once in their original order, preserve valid hash-prefixed column names, and keep support for extra driver columns.

Refs dataease/SQLBot#1250.
2026-09-15 16:09:52 +08:00
junjun 1d7b78d4a6 build: Replace pm2 with Supervisor 2026-09-15 16:06:46 +08:00
ulleo 0b5588b5bf feat: add system param: SAMPLE_DATA_ENABLED 2026-09-15 11:46:16 +08:00
junjun c705bafb13 build: Replace pm2 with Supervisor 2026-09-15 11:17:30 +08:00
ulleo bc3403b8ff feat: implement LLM keyword extraction and fusion scoring for table matching
- add log
2026-09-15 10:49:12 +08:00
ulleo e37105316b feat: implement LLM keyword extraction and fusion scoring for table matching
- add log
2026-09-15 10:20:38 +08:00
ulleo e685a749c6 feat: implement LLM keyword extraction and fusion scoring for table matching
- improve table matching
2026-09-14 18:52:15 +08:00
ulleo 3fd6fa867d feat: implement LLM keyword extraction and fusion scoring for table matching
- Add extract_keywords() to LLMService with conversation context support,
  using process_stream + start_log/end_log for logging consistency
- Add expand_with_terminology() to expand keywords with synonym matching
- Add fusion scoring in calc_table_embedding(): α * vec_score + (1-α) * keyword_score
- Add calc_keyword_score() with multi-level matching:
  table name exact (1.0), comment exact (0.9), comment substring (0.7),
  table name partial (0.25-0.5), field comment exact (0.5),
  field comment substring (0.4), field name partial (0.3)
- Scoring considers keyword coverage rate to differentiate tables
  with different numbers of matched keywords
- Extracted keywords persisted to ChatRecord for reuse across endpoints
- get_terminology_template() supports comma-separated keyword input
  with per-keyword matching for higher precision
- Add TABLE_EMBEDDING_ALPHA and TABLE_EMBEDDING_KEYWORD_ENABLED config
2026-09-14 17:51:45 +08:00
fit2cloud-chenyw aac200aef5 fix(X-Pack): Assistant API call timeout issue #1288 2026-09-14 14:39:17 +08:00
junjun 8424dcbf92 refactor: Optimizing Excel header fields with too long prompts #1364 2026-09-14 10:40:52 +08:00
master_lin 5d60284499 test(datasource): cover SQLAlchemy pool disposal 2026-09-14 10:32:05 +08:00
master_lin b744ca6c28 fix(datasource): dispose SQLAlchemy engine when removing pool 2026-09-14 10:32:05 +08:00
junjun ba9aa5db66 fix: Oracle timeout #1360 2026-09-11 14:13:28 +08:00
wangjiahao 3f68b618ef fix: Authenticated IDOR in Dashboard update endpoints allows cross-user Dashboard modification 2026-09-09 16:36:19 +08:00
wangjiahao 1bc83867e5 fix: Cross-Workspace Recommended-Problem Read and Overwrite (IDOR) 2026-09-09 16:26:39 +08:00
wangjiahao 33c87b61a4 fix: Authenticated IDOR in Dashboard update endpoints allows cross-user Dashboard modification 2026-09-09 14:11:08 +08:00
wangjiahao 835d0b10bd refactor: Use the new rich text component TinyMCE 6.x 2026-09-09 14:03:37 +08:00
fit2cloud-chenyw 900eb2d28e perf: Internationalization (i18n) for In‑line Error Prompts 2026-09-09 11:07:36 +08:00
fit2cloud-chenyw 4ee923c968 Add config to hide default passwords or force password change at first login #1355 2026-09-02 16:41:01 +08:00
junjun c1d333e62d fix: Cross-Workspace Data-Source Schema Disclosure and Modification (Incomplete IDOR Remediation) 2026-08-31 11:09:23 +08:00
fit2cloud-chenywandClaude bbfc4cc8f5 fix(Security): Host header injection auth bypass and forged admin embedded token (CNVD)
- TokenMiddleware/ResponseMiddleware/audit logger use scope['path']
  instead of request.url.path for whitelist checks: a crafted Host
  header (e.g. x/api/v1/mcp) was concatenated into Starlette's URL
  and made protected routes match the /mcp* whitelist entry
- validateEmbedded rejects admin accounts and non-type-4 apps, so a
  self-signed token with account=admin can no longer impersonate the
  administrator
- Add HostValidationMiddleware rejecting malformed Host headers at the
  outermost layer (defense in depth)
- Add regression tests for host validation, whitelist matching and
  source-level guards

Co-Authored-By: Claude <[email protected]>
2026-08-31 11:05:05 +08:00
ulleo cc8a7546e9 chron: update X-Pack version 2026-08-28 18:25:37 +08:00