mirror of
https://github.com/finmars-platform/finmars-core.git
synced 2026-04-26 22:56:00 +03:00
[GH-ISSUE #99] Data Provenance #41
Labels
No labels
BackEnd
FrontEnd
bug
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/finmars-core#41
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @sergeiosipov on GitHub (Sep 3, 2025).
Original GitHub issue: https://github.com/finmars-platform/finmars-core/issues/99
Rationale:
Finmars processes data from different sources and produce its own data.
We need to identify from where this data came from and how it was created for data provenance helping data governance.
Solution:
Implement Provenance Specific Entities (Platform Version, Provider, Source) and add Provenance fields (see section "Provenance Fields" below) for Finmars entities (incl. transactions).
Functionality needed
Affected Entities
NEW Entities:
Existing Entities:
and all other internal platform entities
Provenance Fields
Data context
provider_version- [PrvdrVrsnUsrCd- input in ttypes] reference id to the entity Provider. (may be smth like '{obj["configuration_code"]}ch.{obj["channel"]}ver.{obj["version"]}')source_version- [SrcVrsnUsrCd- input in ttypes] reference id to the entity Source. (may be smth like '{obj["configuration_code"]}ch.{obj["channel"]}ver.{obj["version"]}')credential- [CrdntlRcrdUsrCd- input in ttypes] Finmars Vault credential's user code used to access provider's data.reference_ids- [TxIdrsDtls- input in ttypes] json-like field for different key-value pairs identifying entity in different sources, e.g. instrument ids by standards (ISIN: xxx, FIGI: yyy) and by provider/source (bank1_id: xxx, provider1_id: yyy) can be used simultaneously.actual_at- [DtVerified- input in ttypes] the data imported can be actual at the date different from access date, it shows when the data was last revised.attributes_extra- [TxClssfctnDtls- input in ttypes] json-like field for different key-value pairs of attributes that are present in the acquired data but absent in Finmars data models.Execution context
platform_version- [PltfrmVrsn- input in ttypes] reference id to the entity Platform Version.Trigger context
origin_initiator_code- (need to rename toorigin_initiator_username) [OrgnInitrUsrnm- input in ttypes] user login (who is responsible for manual/scheduler/api call): john_doeorigin_initiator_type- [OrgnInitrTp- input in ttypes] How action was initiated: manual, scheduler, third_party_push.origin_initiator_third_party_push_code- [OrgnInitrThrdPtyPushCd- input in ttypes] exact third party address code for third_party_push, for example ***origin_manual_entry_point- (planning to rename toorigin_initiator_manual_code) [OrgnInitrMnlCd- input in ttypes] exact webpage address code (for manual only, including addons address), for example ***Service context
workflow_module_user_code- [WrkflwMdlUsrCd- input in ttypes] workflow used for the data (smth like:com.finmars.standard-workflow:init)workflow_module_version_semantic- [WrkflwMdlVrsnSmntc- input in ttypes] workflow's version used for the dataworkflow_id- [WrkflwID- input in ttypes] id of the workflow that created the dataplatform_task_id- [PltfrmTaskId- input in ttypes] id of the Finmars platform task that created the dataImportant Notice
One provider may have different sources per run.
We can't standardize the
reference_idsjson field but we need to be able to query it.To Do: