922 lines
52 KiB
Plaintext
922 lines
52 KiB
Plaintext
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 6 - "MAKE IT HAPPEN" All in on porting over all the real objects from v7
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
“Accept the things to which fate binds you, and love the people with whom fate brings you together,but do so with all your heart.”
|
||
― Marcus Aurelius, Meditations
|
||
|
||
"Make it happen"
|
||
- Jim July 28th 2021
|
||
|
||
## TODO TO BETA
|
||
|
||
|
||
|
||
todo: auth when server locked, who can login when?
|
||
Super user can *always* login??
|
||
|
||
|
||
|
||
TODO: SEEDER
|
||
- generate LESS PM's, a finite amount, otherwise there are so many the server is constantly generating after seeding
|
||
- bugbug, can't login as superuser when activeuser count is exceeded
|
||
also, seeder allowed exceeding active user count
|
||
up the trial user count
|
||
allow login of superuser only when active count exceeded as the error message suggests should work
|
||
attempt to delete a user to free up license but got error:
|
||
update or delete on table "auser" violates foreign key constraint "aworkorderstate_userid_fkey" on table "aworkorderstate"
|
||
so apparently they don't affect history when update workorderstate
|
||
|
||
|
||
|
||
|
||
//performance
|
||
build a release windows build
|
||
run it outside vstudio
|
||
use dotnet-trace ps to find it's id
|
||
trace it and then generate sample data
|
||
stop tracing adn veiw the trace in perfview
|
||
find hotspots
|
||
$profit
|
||
|
||
https://docs.microsoft.com/en-us/aspnet/core/performance/performance-best-practices?view=aspnetcore-5.0
|
||
https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-trace
|
||
|
||
todo: hard cap on appointments brought back controlled by client in settings otherwise unusable
|
||
ideally centered around current date
|
||
applies to month view
|
||
force user to filter by tags if too much, i.e. truncated result with error so they can see it was limited
|
||
|
||
todo: hard cap timeout on anything very time consuming like report generation, datalist queries, schedule etc
|
||
if a report ties up the server for more than XX seconds it should stop it adn return an error too big
|
||
|
||
todo: server metrics broken?
|
||
|
||
todo: profile the server during seeding, it's unbelievably slow, what exactly is the slowness caused by and what can be done to fix it?
|
||
https://github.com/Microsoft/perfview
|
||
|
||
|
||
todo: should some things that were tagified be reverted back like in v7 due to reporting and other issues?
|
||
|
||
todo: firefox schedule fix:
|
||
https://github.com/vuetifyjs/vuetify/issues/14243#issuecomment-944907925
|
||
|
||
|
||
todo: admin-history page showing http://localhost:8080/adm-history LT:Global but other things are properly translated
|
||
|
||
TODO: 2021-10-15 15:03:10.9008|ERROR|AyaNova.Biz.TranslationBiz|********* GetSubsetAsync problem: Duplicate keys: UnitModelName
|
||
|
||
|
||
|
||
|
||
|
||
TRACK:
|
||
Customer work order form / view / open???
|
||
Customer CSR form has a bunch of todo in the template, WTF?
|
||
Dashboard / widgets
|
||
Just enough an no more, this could be endless, come up with a top 5 or something and limit it to that
|
||
(this is also a very juicy v.next feature thing too)
|
||
Note that it *must* at minimum recreate the v7 dashboard stuff (but nicer and graphical)
|
||
personal upcoming events like maybe an "next 5 open work orders I'm scheduled on"
|
||
or a widget that is upcoming work orders that are a specific status (maybe, just speculating here)
|
||
|
||
Installer INNO
|
||
version with postgres included, version without postgres included
|
||
quick trialers / beta testers will want a self contained test on windows scenario with built in pg until they get serious
|
||
Some will want an online hosted test
|
||
Linux install??
|
||
Docker build from something we host?
|
||
self hosted repo??
|
||
windows docker build??
|
||
|
||
....
|
||
Review all v8 cases top to bottom and triage / implement
|
||
V8Migrate completion
|
||
All stock reports (and schedule ones)
|
||
Seeder / evaluation system worked out fully and implemented
|
||
Load testing
|
||
Smoke test for every post release build that I can add problems to as I fix them to avoid regressions
|
||
Beta testing
|
||
Manual pages docs
|
||
Fill out everything as quickly as possible, take text from v7 docs where necessary to speed up process
|
||
Better to get a v1 manual out and fix it up later than to leave big empty sections even during beta testing
|
||
Extensions to replace current add-on's
|
||
QBOI
|
||
QBI
|
||
(if pt, well after release if ever)
|
||
|
||
Rockfish / Back end infrastructure (round robin license fetching / mirror license domains / machines)
|
||
Biz decisions about pricing, licensing, hosting etc
|
||
Release!
|
||
Profit!
|
||
|
||
|
||
|
||
|
||
## V8MIGRATE OUTSTANDING
|
||
|
||
|
||
|
||
## CLIENT / SERVER MISC ITEMS THAT CAME UP
|
||
|
||
Coded by importance
|
||
|
||
1 means definitely right away
|
||
2 means definitely later after 1
|
||
3 means nice to have but not sure or not urgent may even remove
|
||
|
||
|
||
## TESTING CASES
|
||
|
||
- Test menu on workorder form in smaller screen sizes on other devices, works in testing but will it work on a phone and iPad?
|
||
|
||
|
||
|
||
|
||
## MIGRATION ITEMS
|
||
███ ███ ██ ██████ ██████ █████ ████████ ███████
|
||
████ ████ ██ ██ ██ ██ ██ ██ ██ ██
|
||
██ ████ ██ ██ ██ ███ ██████ ███████ ██ █████
|
||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||
██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████
|
||
|
||
|
||
|
||
|
||
|
||
todo: inventory migration will it be out of balance due to open work orders? I.E. at the end v7 tries to fixup inventory to balance, however the open wo should have consumed
|
||
those quantities so that's not right. perhaps during inventory synch it needs to iterate all open wo where parts are not used in service in v7 and deduct those from the inventory total before the fixup?
|
||
Or maybe that's another step done with the v8 data by examining *it's* open wo and handling that way??
|
||
Maybe it exports only closed wo in one stage, then syncs inventory, then exports open wo?
|
||
what if people never closed their wo or used in service??
|
||
|
||
|
||
|
||
## REPORTING ITEMS
|
||
██████ ███████ ██████ ██████ ██████ ████████ ██ ███ ██ ██████
|
||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██
|
||
██████ █████ ██████ ██ ██ ██████ ██ ██ ██ ██ ██ ██ ███
|
||
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||
██ ██ ███████ ██ ██████ ██ ██ ██ ██ ██ ████ ██████
|
||
|
||
|
||
|
||
figure out a way to group by tags and also filter to only include tags that contain a string of text
|
||
i.e. either run a report that groups by each tag found in *every* record
|
||
or, optionally, include a parameter which is a string of text to look for in the tag array and only include in a group if it's got that text somewhere in the tag
|
||
async function ayPrepareData(ayData) {
|
||
|
||
|
||
//Group by all tags no filter
|
||
ayData.ayReportData = ayGroupByTag(ayData.ayReportData);
|
||
|
||
//Group by filtered tags that contain 'zone'
|
||
//ayData.ayReportData = ayGroupByTag(ayData.ayReportData, 'zone');
|
||
|
||
return ayData;
|
||
}
|
||
|
||
function ayGroupByTag(reportDataArray, tagContains) {
|
||
//array to hold grouped data
|
||
const ret = [];
|
||
const containsQuery = tagContains != null && tagContains != '';
|
||
|
||
//iterate through the raw reprot data
|
||
for (let i = 0; i < reportDataArray.length; i++) {
|
||
//get a reference to each object to save typing
|
||
let o = reportDataArray[i];
|
||
//don't bother with any that don't have tags at all
|
||
if (o.Tags && o.Tags.length) {
|
||
//loop through all tags for this record
|
||
o.Tags.forEach(t => {//t=each tag
|
||
//if not a contains query just process it, if it is a contains query then only process if tag contains tagContains
|
||
if (!containsQuery || t.includes(tagContains)) {
|
||
let groupObject = ret.find(z => z.group == t);
|
||
if (groupObject != undefined) {
|
||
//there is already a matching group in the return array so just push this raw report data record into it
|
||
groupObject.items.push(o);
|
||
//update the count for this group's items
|
||
groupObject.count++;
|
||
} else {
|
||
//No group yet, so start a new one in the ret array and push this raw report data record
|
||
ret.push({ group: t, items: [o], count: 1 });
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
//Sort based on the group name in a locale aware manner
|
||
ret.sort(function (a, b) {
|
||
return a.group.localeCompare(b.group);
|
||
});
|
||
return ret;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
## CLIENT MISC ITEMS
|
||
|
||
|
||
_____ _ _____ ______ _ _ _______
|
||
/ ____| | |_ _| ____| \ | |__ __|
|
||
| | | | | | | |__ | \| | | |
|
||
| | | | | | | __| | . ` | | |
|
||
| |____| |____ _| |_| |____| |\ | | |
|
||
\_____|______|_____|______|_| \_| |_|
|
||
|
||
|
||
|
||
- 1 double check roles at client, the way authorizationroles.hasrole is coded makes me think it might be wrong
|
||
it only checks that the value is nonzero but in postgres I noticed it needs to compare if the resulting value equals the exact role being checked
|
||
i.e. it's not enough to go userroles & desiredrole>0 but rather userroles&desiredrole==desiredrole
|
||
confirm the filter in datatable matches what is really happening on login and access etc
|
||
|
||
-1 Schedule settings always on first setting shows nothing set for the color source even though it's defaulted to a known value?!
|
||
-1 logged in as tech user tried to change status got not authorized when it was closed status?
|
||
yeah, tech user can't seem to set any locking status or maybe any status, they have "service techncian" only role
|
||
|
||
|
||
- 1 security jwt tokens and expiration, can a user just keep working if they are set to inactive because their token hasn't expired as long as they don't login fresh?
|
||
should tokens refresh periodically and have a super short life?
|
||
https://stackoverflow.blog/2021/10/06/best-practices-for-authentication-and-authorization-for-rest-apis/?utm_source=Iterable&utm_medium=email&utm_campaign=the_overflow_newsletter
|
||
|
||
|
||
|
||
|
||
-2 hyperlinks in memos sb clickable to open in new tab or window or whatever
|
||
this supports help links in migrate and also user links like "take a look at workorder 55" with a link to it in the UI
|
||
recognize urls and make them actionable somehow
|
||
|
||
todo:2 notifications screen add delete all menu item that will just remove all the notifications present
|
||
Maybe a checkbox and delete selected and select all?? That way can also be a dual useful feature
|
||
also should delete *from* the client so that it deletes only what it has in view so user doesn't accidentally delete unseen yet to be delivered ones?
|
||
todo: 2 About page should show license and other expiration dates in local format, right now it's a UTC iso string :(
|
||
|
||
todo:2 need to track fetched keys vs used keys so can tell if fetched a key that I don't need or stopped using due to code change
|
||
|
||
todo:2 PO (workorder already done) strip all *viz fields from object before sending over the wire from client to server
|
||
Setting their value to undefined stops them being sent so do that, but remember they then need to be updated on the return record
|
||
PO I'm thinking is the main one??
|
||
|
||
|
||
todo:2 Not in love with the "Error api2200" as the only error text in the box
|
||
sometimes it has things you can't see in the form
|
||
ideally I'd like to see it have a string of text as a duplicate showing the errors translated in a list
|
||
in addition to each form field being set. This would cover our ass in case we missed a "general" or renamed a field or a wierd error
|
||
that we didn't anticipate, also more useful for the user to see at a glance what's what
|
||
If do this maybe consider adding a fixed height and scroll bar setting to the error box as it could get long but don't want it to fill up the screen
|
||
(maybe a "MORE INFO" button instead that warps the display in errorbox to the long form??)
|
||
At the very least make sure every raw error returned goes into the client log so can help with tech support when people need it without resorting to
|
||
making them open developer console to see the actual raw error. (if do this maybe extend the length of the error log as it's possibly too short to capture enough stuff this way??)
|
||
|
||
todo:2 when there is an errorbox error it's possible to miss it as it's at the top scrolled off screen and you can save as the appbar doesn't scroll
|
||
need more feedback, perhaps appbar turns red, or save button turns red or whole page has a color to it..??
|
||
Or maybe just as simple as an toast alert popup whatever it's called that temporarily shows the same error as is in the box at top
|
||
|
||
todo:2 reporting custom fields
|
||
Joyce ran into an issue with a custom field defined as currency adn wanted to use it in a calculation on a report but it presents as a string
|
||
Look into either a helper to ease that or more ideally it presents as the type that it's supposed to be pre-modified? (not sure of the implications)
|
||
Do I have a custom fields helper already? What does it do?
|
||
Maybe translated custom fields alongside the string version??
|
||
Users see it as currency would be just as confused as Joyce was expecting it to be a number
|
||
|
||
todo:2 use const, not let unless need to reassign the variable
|
||
Going to need a case by case through all uses but it's a very important precaution so code it that way now for all new code
|
||
|
||
todo: 2 schedule form sync with ical, there's a case for it
|
||
|
||
todo:3 link back to list from single edit form
|
||
it would be very handy to have a simple link back to the list or back a level
|
||
on each edit form. If new record then it skips that and goes to list
|
||
so maybe a specific link to list, not just a back link
|
||
ideally accessible from the form, not two click by having to open menu, but
|
||
not sure about that, maybe in wide mode it could surface that from menu but in
|
||
narrow mode no shortcut because they could use the nav menu anyway and because fuck em, that's why :)
|
||
|
||
todo: 3 use <v-spacer v-if="!$vuetify.breakpoint.xs"></v-spacer> technique for any dialogs where small mobile view hides far right button
|
||
see home-schedule more info dialog for more info :)
|
||
This really means search for all the <v-spacer uses in client code and test that particular one in mobile and see if it's right side buttons are cut off or not
|
||
(can just test in 360px max in dev laptop)
|
||
|
||
- 3: tag cloud feature exposed to UI somewhere?
|
||
|
||
todo:3 make sure other datatable besides wo use form() rowError classes for consistency rather than self set in forms
|
||
see woitem / schedusers etc for example
|
||
todo:3 why the need for setErrorBoxErrors when setting the formstate errors already allows all the fields to pickup the errors for them
|
||
shouldn't the errorbox itself pickup it's own errors and elminate the need for this??
|
||
currently is: <gz-error :error-box-message="formState.errorBoxMessage"></gz-error>
|
||
maybe could be this?: <gz-error :error-box-message="form().serverErrors(this, 'generalerror')"></gz-error>
|
||
might even be a drop in replacement, should test, would reduce fuckery
|
||
|
||
todo:3 gzdecimal triggering dirty just by clicking into and out of a field witha value in it.
|
||
also, it sometimes shows without the decimal then with the decimal for editing then without, it's crazy
|
||
the decimal thing is probbly what's triggering the dirty change.
|
||
saw this when developing the wo form and testing scheduled users estimated qty field
|
||
todo:3 apierror showing in errorbox on validation error
|
||
this is too technical looking, needs to be cleaner for end users
|
||
maybe even a summary of errors for big forms showing property names and errors?
|
||
or at least say something like fields have errors or somesuch to guide them down into the form
|
||
small forms it's obvious but wo it's a bit ...actually still obvious, maybe just a cleaner line of text without the code looking stuff like "apiError" or whatever it shows
|
||
todo:3 generateMenu called on forms redundantly?
|
||
called for getdata, but also called in created in wrong place i.e. always rather than just when it's not a getdata situation due to already existing
|
||
|
||
todo:3 broken rules can't save should color save button red in addition to disabled some forms can't see what's what
|
||
todo:3 Any "Priority" type value in UI that has colors should use ayaFireAlt icon instead of round circle which is for minor status only
|
||
Flag is for major status like all of workorder
|
||
|
||
todo:3 double check main page boilerplate stuff is up to date 2021
|
||
https://www.matuzo.at/blog/html-boilerplate/
|
||
|
||
todo:3 form field customization add a "reset" feature to reset to default for when people fuck it up
|
||
basically just show all fields and remove the required from fields
|
||
|
||
todo:3 Seeding UI keep track of timing and later down the road when firmed up, provide estimate (average server will take):
|
||
2021-05-31 10:26:45.4801|INFO|Seeder|Small level sample data seeded in 27 seconds
|
||
2021-05-31 10:47:07.3417|INFO|Seeder|MEDIUM level sample data seeded in 2 minutes and 13 seconds
|
||
2021-05-31 10:56:04.9450|INFO|Seeder|LARGE level sample data seeded in 4 minutes and 17 seconds
|
||
2021-05-31 12:06:34.2680|INFO|Seeder|HUGE level sample data seeded in 24 minutes and 54 seconds
|
||
-3 case 3864 Joyce misc item - Layout improvement:
|
||
Summary (workorder overall) - looks like now can enter unlimited amount of text..... BUT if only using for four or five words, its still showing ALL this blank space across the entire screen
|
||
Tags - takes up entire row even though none or only one tag.
|
||
|
||
**Would like to discuss/recommend a way to have Summary field and Tags field reduced in size perhaps depending on amount of data
|
||
I.e. adjust size depending on what has been entered as in:
|
||
Tags - would rather see selection box width of single column (i.e. set it to show same as would show on a phone which is one column wide) without the screenwide lines and extra height showing now.
|
||
Summary - would rather show width of single column, only if multiple lines and/or # of characters exceeds xx then show extra height and width.
|
||
Custom fields - when set to Text takes up extra height. I understand that this is because of the "potential" text, i.e. that could have multiple rows etc. Is there ANY way to minimize these so only shows additional space IF actually used?
|
||
[#will look into it, not sure what can be done, the layout is pretty rigidly fixed within the UI framework to be able to work properly without conflict with the layout, but maybe there's something#]
|
||
-3 Attachment ui sucks for big upload as it just sits there apparently doing nothing with no feedback
|
||
todo:3 notification new bell alert count add to title so shows in task bar when not in view?
|
||
like messenger "(1)" "(23)" etc
|
||
|
||
todo:3 cleanup unnecessary use of a ayatype access inside the Methods of objects as it's now available in vue via main object,
|
||
e.g. where you see this: ayaTypes().XXXX you can replace it directly with this: $ay.ayt().XXXX and then REMOVE completely the ayaTypes() method in the vm of that object
|
||
|
||
TODO:3 if keep seeing slowdown typing in large text fields maybe check if it's running rules endlessly and slowing things down that way
|
||
profile?
|
||
a timer that delays processing until typing stops??
|
||
...................................................................................................................................................................
|
||
|
||
todo:3 reportClientMetaData in gzapi has DefaultLocale property in it which is just part of the language, can it be removed?
|
||
it might be buggy if there is no dash in the language? Is that a thing?
|
||
check at server how it's used
|
||
|
||
|
||
todo:2 poitem edit form currency fields when updated by server on save lose currency format and show as raw decimal number
|
||
maybe currency control does not respond to underlying data changes it didn't initiate?
|
||
seems maybe it's ok in main form but that's maybe just because it doesn't change values automatically
|
||
|
||
todo:3 datatable single select mode, is this even a thing?
|
||
if not then I should remove that code, it's just taking up space and complicating shit for no reason
|
||
|
||
todo:3 Whats new in this release popup or link tied into the update process of the client??
|
||
how about a link in the About page to the change long on our web server instead?
|
||
|
||
|
||
|
||
todo: 3 Schedule form reporting?
|
||
could just default to regular reporting list, doesn't absolutely need to be a calendar at least at first
|
||
as long as it has all appointments consolidated in single list
|
||
Will need to support it at the server though, perhaps it bypasses normal report routes in some way
|
||
|
||
|
||
|
||
|
||
|
||
## SERVER MISC ITEMS
|
||
|
||
|
||
_____ ______ _______ ________ _____
|
||
/ ____| ____| __ \ \ / / ____| __ \
|
||
| (___ | |__ | |__) \ \ / /| |__ | |__) |
|
||
\___ \| __| | _ / \ \/ / | __| | _ /
|
||
____) | |____| | \ \ \ / | |____| | \ \
|
||
|_____/|______|_| \_\ \/ |______|_| \_\
|
||
|
||
|
||
|
||
todo: 1 Test with expired key, can superuser login and no one else?? **CRITICAL**
|
||
|
||
|
||
todo:1.5 Joyce case 3931 test restore of 4alarm data
|
||
actually, try it here first with small amount of data then try the huge one
|
||
Get a copy from Joyce on the red drive, it's about 5gb
|
||
write up how to do it if there are manual steps (there will be I guess but maybe there shouldn't be)
|
||
make sure it works one way or another
|
||
confirm it's really backing up everything
|
||
|
||
todo: 2 make priority / woitem / wostatus colors distinct from each other
|
||
whitecaps color scheme shale/pastel etc
|
||
Note: wostatus will be the default color source so concentrate on making that look nice and clean
|
||
change from strong primary colors to more faded pastel colors
|
||
maybe priority in primary and status of both kinds more muted but also in different ranges so no clash
|
||
i.e. no two the same color or even close between each so in theory you can see at a glance which is which
|
||
|
||
todo: 2 make sample data appointments suitable for evaluation of calendar
|
||
spread throughout the day
|
||
right now a bunch are extremely close if not on the same time window for same wo
|
||
Nicer colors
|
||
use the whitecaps promo pastel colors for a more sophisticated look, i.e. don't take color from extreme full ffffffff but back towards gray with a bit of transparency thrown in would be nice
|
||
shale blue
|
||
make sure there are plenty spread near the current month outwards so that users will see stuff immediately when they open it
|
||
put them between 8am and 5pm
|
||
Set the calendar default to 7am for first appointment
|
||
todo:2 update to latest postgres portable and document how to do it as well or a link to how to do it
|
||
todo:2 clean up / simplify bizroles.cs at server for large objects like work order with same for all children (see quote for how it's done)
|
||
todo:2 this: 2021-07-23 07:04:06.0270|INFO|CoreJobLicense|TEMP TEST LOG: CoreJobLicense - result is: notfound
|
||
even with properly generated license?
|
||
need to look at rockfish for this one
|
||
todo:2 start testing with real licensing scheme ("notfound")
|
||
make sure automatic license updates work properly
|
||
todo:2 notify on server boot?? (general notify to admin user or whatever?)
|
||
or on shutdown?
|
||
todo:3 notify on user login?
|
||
todo:2 errors are inconsistent some use "error" some use "code" to mean the same thing
|
||
this is likely because "code" is used in the outer wrapper and "error" is used in the individual "details" validation errors
|
||
however it would be much cleaner if it was the same thing at all levels
|
||
Settle on "Code" only, change "error" to "code"
|
||
some things are producing {message:"blah",target:"blah",error:"blah"}
|
||
controller apierror
|
||
and validation errors are : {message:"blah", target:"blah", code:"blah"}
|
||
todo: 2 Should the database integrity check run as a regular job?
|
||
because a person could fuck up the db while the server is running and the server wouldn't notice until it tried to access a fucked up table
|
||
|
||
|
||
NOW
|
||
....
|
||
|
||
|
||
What up with this and can it be blocked from logging / something simpler logged instead?
|
||
Try to determine if it's time related, maybe during backup??
|
||
find a pattern
|
||
try logging success always to see how rare it is
|
||
I don't think it's happening at the linux server, it seems to be a comm issue from my ws??
|
||
no, it actually is.
|
||
bittorrent interferes with it like it does with my browsing, maybe not the cause though, just a data point
|
||
2021-03-17 05:19:27.0750|ERROR|JobsBiz|Server::ProcessJobsAsync unexpected error during processing=>System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.
|
||
---> System.TimeoutException: The operation was canceled.
|
||
---> System.OperationCanceledException: The operation was canceled.
|
||
at System.Threading.CancellationToken.ThrowOperationCanceledException()
|
||
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
|
||
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token)
|
||
at System.Net.Security.SslStream.<FillHandshakeBufferAsync>g__InternalFillHandshakeBufferAsync|182_0[TIOAdapter](TIOAdapter adap, ValueTask`1 task, Int32 minSize)
|
||
at System.Net.Security.SslStream.ReceiveBlobAsync[TIOAdapter](TIOAdapter adapter)
|
||
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
|
||
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
|
||
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
||
at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken)
|
||
--- End of inner exception stack trace ---
|
||
--- End of inner exception stack trace ---
|
||
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken)
|
||
at AyaNova.Core.License.FetchKeyAsync(ApiServerState apiServerState, AyContext ct, ILogger log, Boolean calledFromInternalJob, Boolean devTestTrial) in C:\data\code\raven\server\AyaNova\util\License.cs:line 522
|
||
at AyaNova.Biz.CoreJobLicense.DoWorkAsync() in C:\data\code\raven\server\AyaNova\generator\CoreJobLicense.cs:line 72
|
||
at AyaNova.Biz.JobsBiz.ProcessJobsAsync() in C:\data\code\raven\server\AyaNova\biz\JobsBiz.cs:line 178
|
||
|
||
|
||
todo:3 is there a way to tell if other connections are being used to AyaNova db
|
||
like a utility or they are fucking around and it's affecting performance etc
|
||
Yes: The following query returns the active connections:https://www.postgresqltutorial.com/postgresql-copy-database/
|
||
SELECT pid, usename, client_addr
|
||
FROM pg_stat_activity
|
||
WHERE datname ='dvdrental';
|
||
Maybe this is a periodic housekeeping job??
|
||
|
||
LATER
|
||
......
|
||
|
||
todo:1 Changes to allow in place updates of server without erasing data:
|
||
(Note: this is a 1 due to probbaly needing some stuff in place (source language) *before* release or it will become a nightmare after release)
|
||
Needs to be supporting this early as possible so that upon release we can easily make changes without breaking existing setups or forcing complex actions
|
||
how to add locale keys in future after release without erasing all data?
|
||
Ideally I'd like to continue on to just edit the json translation files and the server looks for missing items and adds them automatically
|
||
so that it just works without having to erase the db
|
||
maybe a version on translations so it knows which one it's dealing with?
|
||
But then again, if it just checks them all it can fix anything missing automatically in case of fuckery and not assume they are ok
|
||
Stock locales can just be completely replaced at any time, custom ones need a fixup,
|
||
Custom locales should include where they came from (which language) so can more easily add new keys
|
||
Schema updates in place not require full delete
|
||
todo:1 figure out method to determine all translation keys actually used and remove unused ones entirely as they will show in the Translation ui and don't want to confuse people
|
||
Note: can do a search in Code editor at client for ay.t( and it will show all the translation keys fetched in code for the most part other than grid columns
|
||
can click in results and copy all to text which could then be processed to find all unique values??
|
||
Or, just exercise the whole app and all lists and then can pull from the local cache in the browser!!!
|
||
|
||
todo:3 NOTIFICATION after the fact (PROBABLY JUST DOCUMENT THIS IS HOW IT WORKS)
|
||
what happens when a user subscribes to a notification after an object was created
|
||
for example if a unit has a contract and they subscribe to contract expiring they won't get notified about units unless they are edited and saved
|
||
*after* the user subscribed
|
||
What did v7 do?
|
||
How to handle this??
|
||
Ideally it would work with existing objects and not require them all to be edited or is that an issue, can it be good enough that it works going forward?
|
||
Most subscriptions won't matter as they are direct immediate and one off but the timed and aged ones are definitely an issue.
|
||
It might have to run through those and subscribe in the user, maybe a static op on a *Biz object that you call and say "subscribe this user to all subs" and it iterates
|
||
the biz objects one by one and sets as appropriate??
|
||
|
||
todo:2 GetWorkorderSerial/name from leaf nodes
|
||
traverse up the tree and fetch the serial number
|
||
once coded fixup in purchaseorderbiz::getasync MIGRATE_OUTSTANDING bit
|
||
|
||
|
||
todo:1 tag search in picklist, does it support more than one tag? I forget
|
||
no, no it doesn't. Hmmm... fuck
|
||
maybe they can enter unlimited tags as long as they have a ..before each one?
|
||
Users may need to "triangulate" on to an item by multiple tags
|
||
|
||
todo:2 unit meter reading event?
|
||
|
||
|
||
TODO:2 //MIGRATE_OUTSTANDING comment tag
|
||
search for this comment tag as it will contain items that could not be done until other items were migrated first
|
||
The tag will contain the description for each
|
||
|
||
todo:2 many biz objects are not using new PUT methodology
|
||
Might be because new methodology assumes complete PUT object as a entire replacement not a partial update
|
||
some of these objects (User) do partial updates so....
|
||
might be that they don't need it but for consistency should check into it
|
||
|
||
|
||
## E2E TESTING
|
||
todo:2 cypress testing for load testing etc
|
||
has to be done manually, there is a good idea in the comment here:
|
||
https://stackoverflow.com/a/51197403/8939
|
||
basically, init a new vue ui project, commit it, then add e2e plugin then recommit to see what all changed so can then manually remove that from main project
|
||
Look at moving to a standalone Cypress setup, why bother with the one built into vue ui, it doesn't seem to offer any benefits to doing it alone
|
||
this way can be fully up to date etc
|
||
https://www.cypress.io/
|
||
Remove from vue ui project but make copy of tests first
|
||
then make new project folder for this and put the tests there
|
||
install standalone cypress and go it without vue stuff
|
||
TODO: Need stress test for client that can generate workorders in parallel for load testing
|
||
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
|
||
|
||
CURRENTLY DOING: up top stuff above
|
||
|
||
|
||
|
||
|
||
EACH OBJECT DEV CYCLE:
|
||
FIRST
|
||
Check cases, make sure not changing the object fundamentally, many v7 objects are going to change for cases (particularly inventory related)
|
||
BACK
|
||
AyaType and associated code
|
||
BizRoles
|
||
Model and Database Schema and AyContext
|
||
DbUtil EraseAllData method
|
||
Update function PUBLIC.AYGETNAME in aySchema for new type
|
||
Biz object and all supported interfaces (searchable, exportable etc)
|
||
Reportable Viz fields if reportable
|
||
Biz Object SEARCH Index / getsearchresult code add unique text fields
|
||
Business rules port from v7 and new ones
|
||
ValidateCanDete MUST check if any foreign key constraints and return proper error rather than bombing on attempted delete
|
||
Do check constraint first then biz rule so can test down to db
|
||
ALL biz rules where possible must have mirror db constraint to avoid fuckery with direct modified data
|
||
Notification code if applicable
|
||
Controller routes and associated code
|
||
Translation keys
|
||
FormFieldReference for object if it posesses an customizable form
|
||
DataList if applicable (be minimal with the default fields)
|
||
Picklist
|
||
Seeder generate samples
|
||
If anything needs to be changed down the road then flag it in comment with //MIGRATE_OUTSTANDING
|
||
FRONT
|
||
AyaType / rights
|
||
front route
|
||
List form
|
||
Edit form (## TEST ALL INPUTS ON EDIT FORM, DON"T ASSSUME THEY WORK)
|
||
Add to smoke test !!! VERY IMPORTANT
|
||
DOCS (at back but with front links, maybe not fleshed out just placeholder ok for now)
|
||
REPORTING
|
||
Reportable & VIZ fields
|
||
DASHBOARD
|
||
Add widget if dashboardable https://docs.google.com/document/d/1cEesyryhM0zYkH0PEswiuOezUTA_Nv5Xn3jfBczdQmk/edit
|
||
IMPORT
|
||
imports and flows through to new front end viewable and searchable and printable etc
|
||
|
||
|
||
|
||
|
||
|
||
|
||
# V7 objects now TAGS, the following objects are imported as tags and suffixed with a period and then short versions of the object type in the tag name
|
||
- Region
|
||
- UnitModelCategory
|
||
- UnitServiceType
|
||
- WorkOrderItemType
|
||
- ClientGroup
|
||
- WorkorderCategory
|
||
- PartCategory
|
||
- DispatchZone
|
||
- ScheduleableUserGroup
|
||
- ClientNoteType
|
||
- VendorType ## LATE ADDITION
|
||
|
||
|
||
|
||
|
||
|
||
|
||
------------------------------------------------------------------------------------------
|
||
|
||
POST "REALITY" OR IN PARALLEL "REALITY" related items:
|
||
|
||
todo: CYPRESS TEST DATE / TIME / DATE_TIME controls switched back to vuetify ones
|
||
widget entry form test rewrite
|
||
https://github.com/cypress-io/cypress/issues/7404
|
||
https://github.com/vuetifyjs/vuetify/issues/10988#issuecomment-726089949
|
||
|
||
|
||
todo: Schedule form
|
||
- This one is big but requires the data to be there so as soon as implement enough things that are scheduleable then do this
|
||
- printing / reporting schedule? Do-able?
|
||
- https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/729
|
||
|
||
|
||
todo: can beta test at this point
|
||
See below, specific ideas about public beta test (User accounts not seperate installs maybe)
|
||
post installer, enlist trial users get feedback, don't get too down when they shit all over it as they will undoubtedly :)
|
||
remember, it's for the new customers primarily, new customers = new $$
|
||
|
||
todo: Document in user manual all form controls with instruction on how to use the various controls etc
|
||
- "Anatomy of a AyaNova Form"
|
||
|
||
|
||
|
||
todo: Documentation POST "REALITY"
|
||
will already have placeholders from above
|
||
Need to think this through carefully
|
||
Need to get the critical bits in for onboarding and importing so people can get going
|
||
Most important stuff is anything non-obvious
|
||
Seems pointless to have one doc per form that just says "The name field is the name and must be unique"
|
||
maybe have that kind of stuff in the form basics and then have a doc per OBJECT instead with anything unique or interesting about the object
|
||
(and each object form has a link to formbasics so can link to the object form from UI and they get both)
|
||
Parts of it can be done post-release for sure
|
||
|
||
|
||
|
||
todo: ONGOING search for memory leaks
|
||
The 7 times system seems to work the best
|
||
Excercise item a few times to settle it in memory, take heap snapshot, force gc, take total of 3 heap snapshots forcing gc each times
|
||
Excercise item 7 times exactly, take 3 more heap snapshots forcing gc before each one
|
||
Compare snapshot 6 to snapshot 3 look for Delta 7 times items to find leak
|
||
https://developers.google.com/web/tools/chrome-devtools/memory-problems
|
||
https://nolanlawson.com/2020/02/19/fixing-memory-leaks-in-web-applications/
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 7 - EXTENSIONS (was plugins)
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
Step 1: get the current active license count for all extensions so I know what i'm dealing with here
|
||
Step 2: which extensions in which order and some can be left off entirely?
|
||
|
||
Plan the order of criticality for extensions
|
||
ACCOUNTING is obviously the first and foremost one and MUST be there for a lot of people to take up
|
||
MUST be done in a way to support other alternative accounting apps that are coming around now like freshbooks or whatever it's called that Joyce is using now
|
||
probably going to need a "trick" of some kind to interface with desktop accounting
|
||
i.e. a local windows app that uses the api and just copy over the qbi code
|
||
or a local server that has it's own web interface
|
||
or regular raven UI but the accounting section interfaces with a local server for local desktop qbi stuff and
|
||
the raven server interfaces with QBOnline for the QBOI stuff
|
||
|
||
based on sales, how many subscribed now
|
||
which ones are porting and which are not
|
||
Implement in order or priority
|
||
Fuck peachtree?
|
||
probably not, need to check again our install count of extensions
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 8 - ONLINE EVALUATION ABILITY / INSTALLER, LICENSING, ROCKFISH SUPPORT FOR RAVEN
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
todo: setup for automated trial testing ability so can just link users
|
||
Maybe, rather than having seperate servers for testing, have it instead generate a User account on the fly for each user who wants to trial
|
||
Automatically re-create the data on a cycle of some kind
|
||
Needs warning message about being a shared instance of AyaNova so be careful what you type and also you may see things other people typed that I have no control over
|
||
|
||
todo: WINDOWS INSTALLER
|
||
Runner harness wrapper thing?
|
||
even if windows only
|
||
it could modify config since it's outside the server
|
||
check for Postgres server extant and if not automatically start the standalone postgres instance
|
||
manage postgres start and stop and configuration changes, sit in tray, run AyaNova server from there?
|
||
|
||
easy way to select command line params without resorting to editing text files for end user
|
||
initially it's an installation option, but then need to edit after the fact
|
||
Quick check of installers available still and is it still kosher to keep using INNO setup or is something better, more supported by windows etc?
|
||
Wix if want MSI (some say that's desireable)
|
||
INNO is still relevant
|
||
I don't need hardly any requirements that can't just be copy or unzip deployed so maybe don't even need an installer for now?
|
||
(zip distribution is going to be problematic with Windows file protection shit)
|
||
https://docs.microsoft.com/en-us/dotnet/core/deploying/
|
||
https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
|
||
|
||
|
||
Completely packaged and installable. REady for users to install as a test as I iterate stage 7 below
|
||
All the stuff needed for someone to run it as a test without the real objects yet.
|
||
Some kind of expiring license so they can't just keep using it as fucked as it may be some might do that
|
||
I want short targetted testing only, not someone downloading and trying it out a month later, that's useless for us
|
||
This needs to be focused on what I need to get from people about testing
|
||
|
||
|
||
todo: LINUX INSTALLER
|
||
Linux users don't mind doing the manual config thing as much, they're used to it and it could just be a shell file anyway
|
||
So mainly this would be a documentation steps to install type issue
|
||
|
||
|
||
todo: DOCUMENT DOCKER
|
||
Present dockerfile maybe for docker installation with FILES folder pre-ready to build / run
|
||
Whatever docker needs
|
||
Or maybe private registry with docker images on our servers somewhere
|
||
|
||
todo: rockfish, can't do purchase for raven or view it I think
|
||
Test a whole sales process from eval to purchase and make it work
|
||
todo: rockfish, upgrade to latest bootstrap, out of date Currently
|
||
todo: rockfish, trial license fetched On date not updating? (not showing in UI)
|
||
|
||
todo: Joyce rockfish notes:
|
||
Licensing:
|
||
noticed that the field "Fetched on" is NEVER updated.
|
||
is it much to be able to see the TIME as well as the DATE, when "Requested" and when "Processed"?
|
||
There are drop down selections NEW, APPROVED, REJECTED for the (already generated) listed keys. But can not actually save to a different Status. What is the purpose of the drop down options if can not select?
|
||
|
||
|
||
|
||
|
||
todo: Discourse bootstrapping install
|
||
look over, get ideas make case steal ideas profit FTW$
|
||
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
|
||
//here is their standalone config yml definition for DOCKER
|
||
https://github.com/discourse/discourse_docker/blob/master/samples/standalone.yml
|
||
|
||
|
||
|
||
todo: back and forward buttons when running without browser controls in application mode?
|
||
- wait and see on this one, as it will be likely outside of any particular form so not something to be baked in early necessarily
|
||
|
||
todo: GUIDED TOUR
|
||
- This is an important feature and at least get a basic one in there for starters and initial release
|
||
- This is a replacement for the tutorials and videos in v7 a
|
||
- Need to add that auto-pilot thingy that allows for guided tours in HTML apps
|
||
- Specifically it should at least have an ONBOARDING walk through of how to move around, enter data, get help etc. Not feature specific but usage specfic.
|
||
- Later I'll add feature specfic tutorials like how to make a workorder etc
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 9 - RELEASE
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
todo: ARCHIVE ALL DEPENDENCIES
|
||
Get all code for all 3rd party libs used for front and back of AyaNova 8
|
||
Need to store that in an archive somewhere just in case
|
||
Needs to be done with each release so can go back to that if necessary
|
||
Going to be big, maybe archived to all storage drives locally and burned to a dvd?
|
||
If check into the repo it will be an issue probably but you never know
|
||
|
||
TODO: CSP Policy that should be enabled at server?
|
||
I had to add per this: https://docs.telerik.com/kendo-ui/troubleshoot/content-security-policy#content-security-policy
|
||
to my csp because I kept getting errors in client end debug console mentioning csp issues
|
||
this seemed to come after I updated the client build process to do a legacy and modern build but I'm not 100% sure about that
|
||
|
||
TODO: Docker HUB
|
||
if we can put AyaNova on Docker hub then many hosting providers have 1 click methods to instantiate it so that's a viable easy onroad for potential customers
|
||
e.g. digital ocean "app platform" https://www.digitalocean.com/products/app-platform/
|
||
also here separately https://marketplace.digitalocean.com/
|
||
|
||
Assuming has passed all testing
|
||
Plan pricing and sales strategy
|
||
What to do with licenses for v7 people
|
||
Another payment processor?
|
||
support bitcoin if possible as well
|
||
|
||
|
||
DONATE
|
||
Send a tip / buy a coffee link to the graphic designer who made the rabbit logo
|
||
https://pixabay.com/vectors/bunny-rabbit-wrench-repairs-154508/
|
||
coffee button top right
|
||
if I use it in release I should at least send them the small amount they get tipped
|
||
|
||
Send a tip / donate to the favicon generator guy
|
||
https://realfavicongenerator.net/
|
||
I broke it at one point by bringing down the site while it was checking ... oops.
|
||
Used it several times and should donate
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 10 - ROCKFISH / HOSTING BACKEND SELF SERVER READINESS
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
DO server allocation, rockfish revamp to drive this part (or maybe it's an alternate app)
|
||
https://blog.digitalocean.com/its-all-about-the-bandwidth-why-many-network-intensive-services-select-digitalocean-as-their-cloud/?utm_medium=email&utm_source=do_newsletter&utm_campaign=04292020
|
||
https://www.youtube.com/watch?v=zZVoo5AbANI
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 11 - RELEASE SELF SERVE / HOSTING
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
Fall of 2021 hopefully
|
||
links on website for sign up
|
||
marketing can begin in earnest
|
||
|
||
NOTE: HOSTING cases are all moved to priority 2 and most have "HOSTING" in the title tags
|
||
|
||
todo: Administration - Account
|
||
Down the road will need an Account page for seeing their account status in rental SAAS situation
|
||
Nothing to do here, it's an obvious one, just delete this later, it's to percolate in brain a bit
|
||
maybe under license
|
||
|
||
PLAIN TEXT EMAILS / ONBOARDING
|
||
https://blog.palabra.io/great-onboarding-plain-text
|
||
|
||
MARKETING
|
||
Analytics alternatives to Google:
|
||
https://news.ycombinator.com/item?id=24198329
|
||
|
||
Also very nice screen shot effect:
|
||
https://umami.is/
|
||
Created by:
|
||
|
||
dom96 2 hours ago [–]
|
||
|
||
Nice! Question for you, how did you make that nice 3D image on the front page with various screenshots overlaid over each other? :)
|
||
|
||
reply
|
||
|
||
|
||
mcao 2 hours ago [–]
|
||
|
||
It's all done in Photoshop. Just take screenshots, then transform, rotate, distort them to look flat. Then add some drop shadows for a 3d look.
|
||
|
||
reply
|
||
|
||
|
||
|
||
MUSIC TO ADD TO COLLECTION
|
||
"EVERYTHINGS FINE!!!!!!!!" song bleeding etc
|
||
BOC - cities on flame
|
||
MID CENTURY MODERN TUNES - https://www.allmusic.com/album/ultra-lounge-vol-14-bossa-novaville-mw0000024024
|
||
|
||
|
||
|
||
|
||
#######################################################################################################################################
|
||
|
||
https://www.ayanova.com/Downloads/v8/ayanova8.alpha.136-win-x64.7z
|
||
https://www.ayanova.com/Downloads/v8/migrate136.7z
|
||
|
||
BUILD 136 CHANGES OF NOTE
|
||
- many changes to support scenario where someone directly edits the db to circumvent licensing
|
||
translated error display in popup with help link
|
||
updated license manual page with section regarding license count exceeded
|
||
server locked in this state except for superuser who gets limited UI where they can access Users list and edit user to fix
|
||
- Fixed bug where just get server error message instead of ref. integrity message when attempting to delete a User created by seeding fails as they have linked records not caught by normal system when data is non-seeded
|
||
|
||
|
||
|