bakulinav / loyalty Goto Github PK
View Code? Open in Web Editor NEWExtended Loyalty system
Extended Loyalty system
Send info about client to ENG from authentication session.
Build client info from session.
Create JWT token from this info and attach to ENG request.
See description and comments to issue #12 about how requirements to JWT token.
Description
As soon Loyalty system is a decomposed to modules with specific functions like processing facts (Rules Engine) we need to create a separate module to provide public API for clients can connect to it, send own shopping cart (or other container) and get processed entity back with applied rules.
Need to be done
ShoppingCart
object in JSON for processingDescription
By default, DRools knowledge base loads from resources/META-INF/kmodule.xml
where places description about all Bases and Sessions. Also, according this description, rules places in *.drl files in filesystem (in the resources by default)
Need to be done
Implement passing shopping cart from requests to engine processing service to apply Client's Rules.
Implement single SC processing
Implement batch SC processing
Processing should happen in scope of Client rules set.
Response should include list of fired Rules to explain what exactly rules were affect of shopping cart
All requests about processing ShoppingCart should be passed to the Engine for processing process.
Implement 2 approaches:
From client's prespective both cases should be sync req-resp process.
UPD: The introducing of asyc calls to Engine is overenginiring at a moment. So, it's faster to implement simple web communication over http endpoints
Create config files for different environments for modules API and ENG.
Environement config files should destinguish env specific parameters.
Maven build process should be destinguished too over the Maven profiles.
As soon the Project base on Spring Boot framework, use framework's configuration approach
Set up 3 types of environments:
List of aspects require to destinguishing:
Create simple Web API to accept ShoppingCart for processing.
Sync communication with caller.
Request Event should have:
Response Event should have:
TODO:
UPD: Don't return separately Original and Updated shopping carts, suppose that client knows original state of it's shopping cart.
Engine service (ENG) should support authorisation over JWT mechanism (RFC-7519).
A JWT token should include at least clientID to distiguish client's scope while ShoppingCart processing in rules engine processor. Also JWT token will have clientName attribute.
For current state of the project clientID1 and clientID2 stubs are available.
Make API service to send JWT to ENG service.
Use HS512 (HMAC using SHA-512) algorithm for JWT sign.
It should decline non-JWT requests.
It should decline requests having unknown clientID.
Update ENG Postman collections to use JWT auth.
Add authentication and authorisation over login form in JSON:
auth object {"username": "<string>", "password": <string>}
Service should have endpoint for login POST /login
and logout of user GET /logout
.
API Gateway service should store user's session for 1 hour (3600 sec).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.