fischer-agentkit/tests
Chiguyong e35b2289ce
Test / backend-test (pull_request) Waiting to run Details
Test / frontend-unit (pull_request) Waiting to run Details
Test / api-e2e (pull_request) Waiting to run Details
Test / frontend-e2e (pull_request) Waiting to run Details
fix(bitable): cross-table recalc + merge_record_values + SSRF tests
Fixes 4 bugs blocking AE1 acceptance scenario (rollup returns 0):

1. Decimal not recognized as numeric: PostgreSQL JSONB returns numbers
   as Decimal; _evaluate_rollup's isinstance(v, (int,float)) missed them.
   Added _to_float() helper (also excludes bool, an int subclass).
   Applied to _evaluate_lookup for JSON serialization safety.

2. add_relation_link clobbers record values: update_record_values does
   full-replace, so setting the relation field wiped amount/etc.
   Added merge_record_values (|| operator) and switched all relation
   link mutations to use it (add + remove + reverse cleanup).

3. enqueue_recalc ON CONFLICT DO NOTHING swallowed re-enqueues: once a
   task reached 'done', the unique constraint silently dropped new
   requests for the same (record_id, field_id) — field showed stale
   data forever. Changed to ON CONFLICT DO UPDATE: reset done/error
   tasks to pending; leave pending/calculating as-is (no double-process).

4. No cross-table recalc on record update: update_record_values only
   triggered recalc on the record's own table; rollup on the target
   table never updated when source values changed. Added
   _trigger_cross_table_recalc() — finds relation fields on the
   record's table, triggers recalc on linked target records.

Tests:
- AE1 acceptance: 3 e2e tests (SUM on insert, update-triggered recalc,
  AVG aggregation) — all pass against real PG.
- Bidirectional relation deletion: verifies _cleanup_reverse_link
  removes source from target's reverse field.
- SSRF guard: 3 tests blocking loopback, private IP, non-HTTP scheme.
- Updated test_recalc_deduplication for new ON CONFLICT DO UPDATE
  semantics (returns existing task, not None).
- Fixed test_crash_recovery to use stale_threshold=0 (was always broken
  with default 600s threshold).
2026-07-06 13:29:54 +08:00
..
documents feat(documents): add document processing capability (U1-U9) 2026-06-23 15:05:01 +08:00
e2e refactor: remove all emoji from source code (#20) 2026-07-03 02:46:40 +08:00
integration fix(review): apply ce-code-review findings 2026-06-30 12:42:15 +08:00
manual test(u6): add L4 real-LLM smoke test for ReAct tool-use prompt 2026-07-02 22:08:45 +08:00
routes feat(documents): add document processing capability (U1-U9) 2026-06-23 15:05:01 +08:00
tools feat(documents): add document processing capability (U1-U9) 2026-06-23 15:05:01 +08:00
unit fix(bitable): cross-table recalc + merge_record_values + SSRF tests 2026-07-06 13:29:54 +08:00
__init__.py feat: initial fischer-agentkit package with unified agent architecture 2026-06-04 22:24:06 +08:00
conftest.py fix: 私董会数据持久化修复 + emoji 移除计划 2026-07-02 01:07:12 +08:00
test_routing_chain.py feat: accumulated frontend enhancements, docs, and static assets 2026-06-14 16:35:01 +08:00