Giter VIP home page Giter VIP logo

ffxivmt's People

Contributors

mtvirux avatar

Watchers

 avatar

ffxivmt's Issues

Verify the gap filling of daa after a total outage

The websocket worker container should look to heal the missing information from an outage or error.
This should be done by saving the timestamp of the last websocket message which will then be used on server start to know the time frame from which to request data from the Universalis API.

  • Save timestamp from the last recieved WS message
  • Request data from the Universalis API based on the the time gap
  • Configurable maximum limit of timegap (e.g.: If outage was longer than 3 days, do not attempt to fill the gap)

Add cache to gilflux controller

Add configurable caching options for the API Gilflux controller

This should use the built-in Codeigniter caching options

By adding cache per location / per world, server responses should improve significantly at the cost of around 1.4GB of disk space (at based on the number of items at the time of writing)

The configurable caching options should be as follows:

  • Disk / Memory (needs research) [currently only disk implemented]
  • Per world / Per location ( w/ Per location being default as it's the most efficient one)
  • Cache TTL (Default to 3 min. Currently lowest timeframe is 1h so this should be insignificant)

Document API

Create documentation for the functions under Application/Controller/API

Invalid gilflux entries are flagged as valid when bundled with valid gilflux entries from the same location domain

image

While the 6h in the Chaos DC is valid the 6h in the Light DC is not

The model fetches the highest timestamp (in this case Chaos') and tries to check if it's valid ignoring that Light had an invalid timestamp at the time of the DB fetch

Setting the query to get the min timestamp would cause the Europe results to get zeroed out

Fetching by world and then summing would be too costly as you'd also have to filter per world

This issue is happening on a datacenter scale as well

--------------------EUROPE-------------------------
{"log_timestamp":"2024-01-12 15:07:08","message":"Gilflux ranking for item 16564 on world  is OK on range of 7d."}
{"log_timestamp":"2024-01-12 15:07:08","message":"Gilflux ranking for item 16564 on world  is OK on range of 3d."}
{"log_timestamp":"2024-01-12 15:07:08","message":"Gilflux ranking for item 16564 on world  is OK on range of 1d."}
{"log_timestamp":"2024-01-12 15:07:08","message":"Gilflux ranking for item 16564 on world  is OK on range of 12h."}
{"log_timestamp":"2024-01-12 15:07:08","message":"Gilflux ranking for item 16564 on world  is OK on range of 6h."}
{"log_timestamp":"2024-01-12 15:07:08","message":"[13065000 > 1705061228000] Gilflux ranking for item 16564 is outdated on range of 3h."}
{"log_timestamp":"2024-01-12 15:07:08","message":"[13065000 > 1705068428000] Gilflux ranking for item 16564 is outdated on range of 1h."}
--------------------LIGHT-------------------------
{"log_timestamp":"2024-01-12 15:07:30","message":"Gilflux ranking for item 16564 on world  is OK on range of 7d."}
{"log_timestamp":"2024-01-12 15:07:30","message":"Gilflux ranking for item 16564 on world  is OK on range of 3d."}
{"log_timestamp":"2024-01-12 15:07:30","message":"Gilflux ranking for item 16564 on world  is OK on range of 1d."}
{"log_timestamp":"2024-01-12 15:07:30","message":"[48684000 > 1705028850000] Gilflux ranking for item 16564 is outdated on range of 12h."}
{"log_timestamp":"2024-01-12 15:07:30","message":"[48684000 > 1705050450000] Gilflux ranking for item 16564 is outdated on range of 6h."}
{"log_timestamp":"2024-01-12 15:07:30","message":"[48684000 > 1705061250000] Gilflux ranking for item 16564 is outdated on range of 3h."}
{"log_timestamp":"2024-01-12 15:07:30","message":"[48684000 > 1705068450000] Gilflux ranking for item 16564 is outdated on range of 1h."}
--------------------CHAOS-------------------------
{"log_timestamp":"2024-01-12 15:15:25","message":"Gilflux ranking for item 16564 on world  is OK on range of 7d."}
{"log_timestamp":"2024-01-12 15:15:25","message":"Gilflux ranking for item 16564 on world  is OK on range of 3d."}
{"log_timestamp":"2024-01-12 15:15:25","message":"Gilflux ranking for item 16564 on world  is OK on range of 1d."}
{"log_timestamp":"2024-01-12 15:15:25","message":"Gilflux ranking for item 16564 on world  is OK on range of 12h."}
{"log_timestamp":"2024-01-12 15:15:25","message":"Gilflux ranking for item 16564 on world  is OK on range of 6h."}
{"log_timestamp":"2024-01-12 15:15:25","message":"[13562000 > 1705061725000] Gilflux ranking for item 16564 is outdated on range of 3h."}
{"log_timestamp":"2024-01-12 15:15:25","message":"[13562000 > 1705068925000] Gilflux ranking for item 16564 is outdated on range of 1h."}

Make scylla keyspace dynamic

Currently the Scylla keyspace has to have a set replication factor that's input in the "1-create_keyspace" shell script.

This should be configured dynamically through the .env file
Or even better making a dynamic script that doesn't require the users to edit files ๐Ÿ‘

Live Gil Trading filtering

Gil trading is when two characters trade gil by utilizing buy/sell mechanics either from a Mannequin or the market board

While the system currently ignores Mannequin trades when adding to the sales ScyllaDB, some people appear to no be hindered by market tax and do it from the MB anyways.

Universalis has a Diff field based on the sale price compared to the Average Price Per Unit and this appears to be a good metric to detect these cases.

  • Implement Average Price Per Unit fetching from Universalis
  • Comparison with Average PPU at the time of filtering sales history from Universalis API

Make proper frontend

Creation of a frontend in whatever well known modern JS framework (e.g.: React, Vue)
UI details are open to whomever takes up the task but are still subject to review

Infrastructure:

  • Docker container / image
  • Correct connectivity with outside(HTTPS and take port 443 external connectivity from backend container)
  • Correct connectivity with backend container

Content:

  • Homepage
  • Gilflux
  • Item Profit Calculator
  • Currency Efficiency Calculator

Interactive ./first_start.sh

Make the first start script interactive as to keep user from having to edit it according to their infrastructure layout

Fix Currency Profit Calculator table

Table currently doesn't load as a datatable like Gilflux
The Universalis links are also missing
image

  • Fix datatable loading
  • Add Universalis link column

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.