Stanislas Sokolov
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Audit & Metrics Specs ## Audit feature :::info * DataNodes or Nodes (Tech): Abstract representation of a MetaModel. * Flux (Job), Snapshot (Tech): Set of DataNodes produced by a pipeline run, usually with a target stock. * Stock (Job/Tech): aggreation of the datanodes of snapshots commited, with most up to date datanodes if there are multiple of the same name. * An Audit: Task that reports the contents of a new flux (set of data nodes produced by a pipeline run) that may be added to a stock. * The audit will identify if there is an intersection between the data nodes in a Stock and the data nodes in the audit snapshot. (For instance it is better for flux PTAB) * The audit will provide a report under a table format (csv or xlsx) that will be downloadable once the audit was finished. * Here is the format of the [table](https://docs.google.com/spreadsheets/d/1ea8BKcNlqKQjdtZR-38IRkAiVqKd5kxhEMZ-fKvhiMQ/edit#gid=1206604242) * The table will contain new case and modified, seperated * either by sheets if in xlsx * either by two seperated tables in a single file. * The audit could take some time. You should be able to view the progression of an audit when viewing a snapshot. * A Notification should be provided at the front level showing that an audit has been completed. * The termes currently related to `delta computations` should be removed and replaced with termes related to audit. * Delta computation feature is to be removed and replaced by the audit feature. * A Snapshot has to be audited to be commited ::: :::warning Comparaison in iter 2 (keep in mind) * SQL table will permit fast comparaison. * Might be interesting for PTAB * INPI has updates, thus would be beneficial * Do we really need it? * NO Audit has to be fast ::: :::success * `POST /api/v1/stocks/{stockId}/diff` will be deprecated. * New Endpoint `POST /api/v1/stocks/{stockId}/snapshots/{snapshotId}/audit` * Used aswell to rerun an audit (a new one is created instead) * Generates the difference between * Get Lists of New Nodes and Modified Nodes * Creates a new Audit Task entity -> similar behavior to the Zip Task entity ```json { "id" : GUID, "snapshotId": GUID, "triggerBlobPath": string, "outputBlobPath": string, "status": ENUM[Created, Running, Finished, Error_Trigger, Error_Runtime] } ``` * Create a new blob with datanodes to audit, sorted between modified and new * This will launch the Audit Service * New Service: Audit Function * Two ways to do it * Single function that will proceed iteratively -> Fast developement, but longer audit times and less fun to develop. * Open each blob, retrieve info, create row, add row to table, repeat. Once done, save the table to a blob. * Durable orchestrated function "Serverless MapReducer" -> More fun to develop and faster execution, but longer develop time * Orchestrate multiple "Mappers" to retrieve each audit for a single data node * Reduce mapper outputs into single table which will be saved as a blob. * Only if we can ::: :::success * New Endpoint `GET /api/v1/stocks/{stockId}/snapshots/{snapshotId}/audit` * Downloads the table of the audited snapshot. ::: :::success * Add the status of the audit to a snapshot response. If there is not audit, the status will be null ::: ## Metric feature * Metrics feature corresponds only to the evolution of the stock metric (no Competitor Comparaison / README) :::info * Delivery: Process representing the contents and the state of the data to be delivered to a client. * Delivery States: * Created: New Delivery with already bounded stocks of the previous delivery * Validated awaiting Metrics (Tech: Started): The Delivery has been checked and can now proceed to next states (packaging and sending) * System check: All flux have been commited or aborted * Validated with generated Metrics (Tech: Started and metrics entities) * the Metrics report have been generated * A README has been generated / Uploaded* * Zip in progress: Delivery packaging is in progress. (delivery can be restarted) * Zip finished: Delivery packaging is finished.(delivery can be restarted) * Transfer in progress: Delivery is being transfered to the client by FTP*(delivery can be restarted) * Transfer finished: Delivery is in the hands of the client (delivery can be restarted) * Finished: Delivery has been closed by the User (No changes possible to the delivery). A new Delivery is created. * Once the User is ready to validate a Delivery, he will be able to press the `Validate and generate Metrics` button. * A Metrics table will be generated. * This is how [it would look like](https://docs.google.com/spreadsheets/d/1ea8BKcNlqKQjdtZR-38IRkAiVqKd5kxhEMZ-fKvhiMQ/edit#gid=1332823129) * The Metrics table will be downloadable from the front side once it has been generated. (Delivery has to be validated) * You should be able to follow the generation of the metrics on the front. * Metrics table will be packaged along side the data at the root of the zip. ::: :::warning User should be able to cancel: * Metrics generation * Zip generation * Transfer * in other words any long ass processing. ::: :::success * Metrics Entity ```jsonld= { "id": GUID, "stockId": GUID, "deliveryId": GUID, "triggerBlobPath": string, "outputBlobpath": string, "status": ENUM[Created, Running, Finished, Trigger_Error, Runtime_Error] } ``` * Start Delivery endpoint to be changed. * Gets Snapshots commited in this delivery and related audit task to the snapshot * Snapshots are to be sorted between their stocks * Gets previous metrics (Metrics from the most recent finished delivery containing the stock) * Creates a Metrics task (zip task like) per Stock to be delivered, the metrics tasks are to be triggered by a blob trigger * The Blob will contain: * The Previous Metrics Blob path * The Paths to the audits of the commited snapshots * A Metric task will: * Compute metric values from the given audits * copy the content of the given Metrics and complete/add the computed metrics from the audit. * Endpoint rerun metrics generation for delivery X and Stock Y * In case the metrics generation failed, the user will be able to restart a metrics generation of a stock ::: ## Readme feature :::info * Readme is set format in the backend * User will add a change log at each delivery before validating :::

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully