Commit Graph

66 Commits

Author SHA1 Message Date
wren 3a58f19d6c feat: add rbac-backed settings modules 2026-04-29 22:25:06 +08:00
wren b3ad4a6f33 feat: bootstrap user rbac foundation 2026-04-29 15:23:19 +08:00
wren b45d61fa97 feat: add document versioning and list API 2026-04-29 11:48:50 +08:00
wren f3b83c9979 feat: add async worker queues and retry controls 2026-04-29 11:48:09 +08:00
wren e738398eb6 feat: wire native leaudit upload flow 2026-04-28 16:53:16 +08:00
wren c776af598a refactor: region from document, not app config
- Add region column to leaudit_documents + LeauditDocument model
- AuditServiceImpl: read region from document.region, not APP_REGION
- RuleServiceImpl: ListBindings/CreateBinding accept Region parameter
- RuleBindingCreateDTO: add region field
- RuleController: pass region from query param/DTO to service
- APP_REGION removed from binding queries; region flows from document

Region is now per-document: each document carries its region at upload
time, and rules are matched to the document's region at run time.
2026-04-28 14:19:29 +08:00
wren e80e8febd8 feat: multi-region rule isolation — region column + config + queries
- DB: add region column to leaudit_rule_sets + leaudit_rule_type_bindings
- DB: change UNIQUE constraint from (rule_type) to (rule_type, region)
- Config: add APP_REGION to app.toml + AppSettings + __init__.pyi
- AuditServiceImpl: filter bindings by APP_REGION
- RuleServiceImpl: ListBindings/CreateBinding use APP_REGION
- Seed script: accept --region arg, tag rules by region
- OssPathUtils: BuildRuleYamlKey already accepts Region parameter

Each region can now have its own independent copy of the same rule_type,
stored in separate OSS paths and DB rows, keyed by region.
2026-04-28 13:15:26 +08:00
wren 2d108c8381 feat: M4 seed — upload & publish 20 rule sets, fix config/schema column names
- Fix _export_settings for pydantic v2 compatibility (model_fields)
- Fix delete_time→deleted_at, update_time→updated_at in RuleServiceImpl
- Add OssClient.EnsureBucket method
- Replace contract_lease/sale/tech rules.yaml from new-rules
- Seed script: batch upload 20 rule YAMLs to OSS + write DB + publish
- Config: fix OSS import chain
2026-04-28 12:13:46 +08:00
wren 246c0e5ded feat: complete M1-M3 infrastructure — OSS client, native execution chain, rule lifecycle API, system docs
- M1: unified OSS client (upload/download/presign) + path utils + config
- M2: rule service with validate/create/publish/rollback + binding CRUD endpoints
- M3: native AuditCtx runner, file/rule resolvers, storage adapter with full persistence
- docs: SYSTEM_OVERVIEW.md as comprehensive architecture reference
- fix: double finalize — terminal state now written once by finalize_run
2026-04-28 11:49:55 +08:00
wren 1b4e0ec00a feat: add rule type binding CRUD endpoints to RuleController 2026-04-28 11:44:21 +08:00
wren d310ba8bc0 feat: implement binding CRUD in RuleServiceImpl 2026-04-28 11:44:20 +08:00
wren 6d7a342c77 feat: add binding CRUD methods to IRuleService interface 2026-04-28 11:44:20 +08:00
wren 2230ea826e feat: add RuleBindingVO for rule type bindings response 2026-04-28 11:44:04 +08:00
wren 896a8c1dd9 feat: add RuleBindingCreateDTO and RuleBindingUpdateDTO 2026-04-28 11:44:04 +08:00
wren 0a726ebf21 fix: remove premature result_status/finished_at from save_evaluation_results
finalize_run() is the single source of truth for terminal run state.
Previously save_evaluation_results wrote a binary pass/fail status and
finished_at BEFORE rescue outcomes/metrics were saved, then finalize_run
overwrote it. Now scores only are written here; terminal state is set
once by finalize_run after all sub-results are persisted.
2026-04-28 11:43:52 +08:00
wren 535d97a70c chore: initial commit — leaudit-platform project skeleton
17-table PostgreSQL schema with full Chinese column comments,
FastAPI project structure (admin/common/modules),
DSL rule files, and schema migration scripts.
2026-04-27 16:48:22 +08:00