Q: Why is it necessary to save states between commands? I do not see the need to save states if system accepts new command only after previous command is processed. Originally I assumed the system is menu based. But I guess it is hard to auto-test a menu based system.
A: You have to save the state between sessions not between commands.
Q: Does it make sense to make command one word? For example, "add user" to "adduser"; "show inventory" to "showinventory".
A: Sure makes sense.
Q: I assume projected inventory is specified for each Page (section, subsection and date). How about available inventory? Is it tracked per banner?
A: Has to be tracked by banner since they don't all sell at the same rate.
Q: Where does system get CPM? Is it from user input or fixed? Is CPM the same for each deal or different based on banner placement and etc.? What is the typical number for CPM?
A: CPM is entered by the sales person. It is not a fixed number since some placements sell for a lot more than others. Range it between cents and tens of dollars.
Q: In the class, you gave the following command as an example add inventory "news" "international" "2008-07-04" 300000. How do you specify "front page" (no section/subsection) on command line? How do you specify "news" section (no subsection)?
add inventory "front" "2008-07-04" 123000
add inventory "news" "2008-07-04" 456000
Q: You said in class that the system does not need to check user name and password. How does system know which user is using the system? Who has permission to add user? Who has permission to add client?
user "owner" # this will tell the app that subsequent commands will be executed by "owner"
The "owner" can add new users in the system and grant new roles. For purposes of thus project each sales person can add clients.
Q: What the system should do if user try to reserve banner which does not exist? How do we specify banner? Shall we use a unique String for each banner type?
A: A unique string name for each banner will be fine such as 728x90 or 300x250, etc. If trying to add a banner that's not supported the application should generate an error that reads something like "This banner type is not supported".
Q: What is the command for "make new booking" looks like?
add booking "news" "international" "2008-07-04" "300x250" 90000
Q: Per requirement, user/client shall be notified in certain scenarios? Is "printf" sufficient for notification purpose?
A: Notification should be done via email.
Q: I am not clear how a booking is turned into committed inventory. When a booking is made, is the system automatically check if the client has good credit or we have to wait for Accounting to log in?
A: In a real system the system would check if the client credit is good and probably commit the inventory in that case w/o any human intervention. For purposes of this project a user with the "accountant" role can commit inventory and specify the reason why they do it, for example:
commit inventory "John Doe" "Client A" "news" "international" "2008-07-04" "300x250" 90000 "payment"
commit inventory "Bob Smith" "Client B" "news" "international" "2008-07-04" "300x250" 90000 "good credit"
Q: What is the date range the system shall handle?
A: All bookings must have a date between now and one year from now.