service billing
NeTAMS ðàçðàáàòûâàëñÿ èçíà÷àëüíî íå êàê ñèñòåìà áèëëèíãà, à êàê ñèñòåìà ó÷åòà òðàôèêà. Âñëåäñòâèå ýòîãî îñíîâíûìè ó÷åòíûìè åäèíèöàìè ÿâëÿþòñÿ þíèòû. Ê ñîæàëåíèþ, êîíöåïöèè þíèòîâ, èìåþùèõ îñíîâíûì ñâîéñòâîì ñòàòè÷åñêèé IP-àäðåñ, íå äîñòàòî÷íî äëÿ ðåàëèçàöèè ïîëíîöåííîãî áèëëèíãà. Äëÿ ðåøåíèÿ ïðîáëåìû áûë îðãàíèçîâàí íîâûé ñåðâèñ,
service billing, îñíîâíîé öåëüþ êîòîðîãî ñòàëà "ïðàâèëüíàÿ" ïîääåðæêà äðóãèõ òèïîâ ó÷åòíûõ åäèíèö - ïîëüçîâàòåëüñêèõ àêêàóíòîâ.
Êàê ñåðâèñ áèëëèíãà èíòåãðèðóåòñÿ â ÿäðî NeTAMS:
1. Ñîçäàåòñÿ è ïîääåðæèâàåòñÿ ñòðóêòóðà àêêàóíòîâ, ãäå êàæäûé àêêàóíò ïðåäñòàâëÿåò ñîáîé ó÷åòíóþ çàïèñü ïîëüçîâàòåëÿ, èìåþùóþ ñëåäóþùèå ïàðàìåòðû:
à) èìÿ, èäåíòèôèêàòîð, îïèñàíèå
á) èíäåêñ òåêóùåãî òàðèôíîãî ïëàíà, è òîãî êîòîðûé âñòóïèò â äåéñòâèå ñî ñëåä. ìåñÿöà
â) áàëàíñ
ã) äàòû ñîçäàíèÿ, ìîäèôèêàöèè è ïðî÷åå
ä) ñïèñîê àññîöèèðîâàííûõ þíèòîâ
å) åìàèë, ïàðîëü
æ) ñòàòóñ
2. Ïðè ñîçäàíèè àêêàóíòà íåîáõîäèìî ïðèâÿçàòü ê íåìó îäèí èëè íåñêîëüêî þíèòîâ, ïî êîòîðûì áóäåò îñóùåñòâëåí ó÷åò òðàôèêà (þíèòû èìåþò IP-àäðåñ è ñïèñîê ïîëèòèê ó÷åòà òðàôèêà). Ïðè íåîáõîäèìîñòè þíèòû ñîçäàþòñÿ àâòîìàòè÷åñêè ÷åðåç âåá-èíòåðôåéñ.
3. Êàæäûé àêêàóíò, åñëè íå âêëþ÷åíà åãî äîáðîâîëüíàÿ áëîêèðîâêà, èìååò àêòèâíûé òàðèôíûé ïëàí (è ïëàí "íà áóäóùåå"). Òàðèôíûé ïëàí õàðàêòåðèçóåòñÿ èìåíåì, îïèñàíèåì è ñïèñêîì "ïîäïëàíîâ". Ýòèì äîñòèãàåòñÿ âîçìîæíîñòü ñîçäàíèÿ "ãèáêèõ" ïëàíîâ.
4. Êàæäûé ïîäïëàí õàðàêòåðèçóåòñÿ:
à) ïîëèòèêîé ó÷åòà òðàôèêà. Îíà àâòîìàòè÷åñêè âûñòàâèòñÿ äëÿ êàæäîãî þíèòà, êîòîðûé ïðèíàäëåæèò ñîîòâåòñòâèþ "þíèò-àêêàóíò-ïëàí-ïîäïëàí"
á) êîëè÷åñòâîì âêëþ÷åííîãî â àáîíåíòñêóþ ïëàòó òðàôèêà (ðàçäåëüíî âõîäÿùèé/èñõîäÿùèé, çíà÷åíèå â ìåãàáàéòàõ èëè áåç ëèìèòà)
â) ìåñÿ÷íàÿ àáîíåíòñêàÿ ïëàòà: ïðàâèëî ñúåìà ýòîé ïëàòû (åäèíîâðåìåííî/åæåäíåâíî è äð.)
ã) ïëàòà çà ïðåâûøåíèå òðàôèêà, âêëþ÷åííîãî â àá. ïëàòó, â ó.å. çà ìåãàáàéò (ðàçäåëüíî âõîäÿùèé/èñõîäÿùèé; "áåñïëàòíî")
Íàáîð ñêðèíøîòîâ ñ âåá-èíòåðôåéñà óïðàâëåíèÿ áèëëèíãîì:
subplan N
fee NNN
spread { monthly | daily | hourly }
included { XXX | unlimited } sum |
[ { XXX | unlimited } in ] [ { XXX | unlimited } out ] }
policy MMM
overdraft [ AA in ] [ BB out ] [ CC sum ]
adjust-included {yes|no}
adjust-fee {yes|no}
Êîìàíäà
subplan ôîðìèðóåò òàðèôíûé ïîäïëàí, èç êîòîðîãî ïîòîì ìîæíî áóäåò ñîçäàòü ñëîæíûé òàðèôíûé ïëàí. Íîìåð ïîäïëàíà
N åñòü êîðîòêîå ÷èñëî (ýòî ÍÅ oid).
- fee NNN - îïðåäåëÿåò êîëè÷åñòâî äåíåã "àáîíåíòñêîé ïëàòû", ñíèìàåìûõ çà ìåñÿö, ïî äàííîìó ïîäïëàíó.
- spread { monthly | daily | hourly } - îïðåäåëÿåò, êàê áóäóò ñíèìàòüñÿ ýòà "àáîíåíòñêàÿ ïëàòà" - ðàç â ìåñÿö, ðàç â íåäåëþ èëè ðàç â ÷àñ (â ïîñëåäíèõ äâóõ ñëó÷àÿõ ñíèìàåòñÿ äîëÿ, ïðîïîðöèîíàëüíàÿ óêàçàííîìó ïåðèîäó)
- included { { XXX | unlimited } sum } | [ { XXX | unlimited } in ] [ { XXX | unlimited } out ] } - îïðåäåëÿåò, ñêîëüêî (êèëî-, ìåãà-, ãèãà-)áàéò òðàôèêà âêëþ÷åíî â àáîíåíòñêóþ ïëàòó. Âåëè÷èíà XXX óêàçûâàåò íà òî÷íîå çíà÷åíèå (âîçìîæíû ñïåöèôèêàòîðû K, M è G ïîñëå öèôðû). unlimited ïîêàçûâàåò, ÷òî âêëþ÷åí âåñü òðàôèê (íåò îãðàíè÷åíèÿ). Çàäàåòñÿ ÈËÈ ðàçäåëüíî äëÿ âõîäÿùåãî è âûõîäÿùåãî òðàôèêà, ÈËÈ îäíî çíà÷åíèå äëÿ ñóììû.
- policy MMM - çàäàåò çàðàíåå îïèñàííóþ ïîëèòèêó acct-policy ñåðâèñà processor, êîòîðàÿ áóäåò ïðèìåíåíà äëÿ ó÷åòà òðàôèêà äëÿ þíèòîâ, ïðèíàäëåæàùèõ êëèåíòó.
- overdraft [ AA in ] [ BB out ] - îïðåäåëÿåò, ñêîëüêî áóäåò ñòîèòü ïðåâûøåíèå òðàôèêà (ÈËÈ ðàçäåëüíî âõîäÿùåãî è èñõîäÿùåãî, ÈËÈ ñóììû) â ñëó÷àå, åñëè ñêà÷àíî áîëüøå, ÷åì îïèñàíî â ïàðàìåòðå included
- adjust-included {yes|no} - îïðåäåëÿåò, áóäåò ëè ïðîâîäèòüñÿ ïåðåðàñ÷åò âêëþ÷åííîãî â ñóáïëàí àáîíåíòñêîãî òðàôèêà, åñëè êëèåíò ïîäêëþ÷èëñÿ â ñåðåäèíå ìåñÿöà. Åñëè çíà÷åíèå ðàâíî "yes" (ïî óìîë÷àíèþ), òî âêëþ÷åííûé òðàôèê ïåðåñ÷èòàåòñÿ ïðîïðîöèîíàëüíî êîëè÷åñòâó äíåé, îñòàâøèõñÿ äî êîíöà ìåñÿöà.  ïðîòèâíîì ñëó÷àå êëèåíò ïîëó÷èò âîçìîæíîñòü áåñïëàòíî ñêà÷àòü âåñü ïðåäâêëþ÷åííûé òðàôèê.
- adjust-fee {yes|no} - îïðåäåëÿåò, áóäåò ëè ïðîâîäèòüñÿ ïåðåðàñ÷åò ìàñÿ÷íîé àáîíåíòñêîé ïëàòû, åñëè êëèåíò ïîäêëþ÷èëñÿ â ñåðåäèíå ìåñÿöà. Åñëè çíà÷åíèå ðàâíî "no" (ïî óìîë÷àíèþ), òî àáîíåíòñêàÿ ïëàòà ñïèøåòñÿ ïîëíîñòüþ íåçàâèñìî îò äíÿ ïîäêëþ÷åíèÿ, èíà÷å - ïðîïîðöèîíàëüíî ÷èñëó îñòàâøèõñÿ äî êîíöà ìåñÿöà äíåé.
Êîìàíäà
subplan íå óìååò îáðàáàòûâàòü ñðàçó âñå ïàðàìåòðû,
ïîýòîìó ïðè êîíôèãóðèðîâàíèè ïðèä¸òñÿ äàâàòü ýòó êîìàíäó íåñêîëüêî
ðàç ñ ðàçíûìè ïàðàìåòðàìè. Ïàðàìåòðû ýòîé êîìàíäû ãðóïïèðóþòñÿ ñëåäóþùèì îáðàçîì:
subplan N fee NNN spread { monthly | daily | hourly }
subplan N included [ { XXX | unlimited } in ]
[ { XXX | unlimited } out ]
subplan N policy MMM
subplan N overdraft [ AA in ] [ BB out ]
plan N
name AAA
description BBB
[no] subplan N1 N2 N3 ...
Êîìàíäà
plan ôîðìèðóåò òàðèôíûé ïëàí, ñîñòàâëÿÿ åãî èç ïîäïëàíîâ. Íîìåð ïëàíà
N åñòü êîðîòêîå ÷èñëî (ýòî ÍÅ oid).
- name AAA - çàäàåò "êîðîòêîå" èìÿ äëÿ òàðèôíîãî ïëàíà (äî 8 ñèìâîëîâ)
- description BBB - çàäàåò "äëèííîå èìÿ", èëè îïèñàíèå, äëÿ ïëàíà. Çíà÷åíèå BBB ìîæíî óêàçûâàòü â êàâû÷êàõ.
- [no] subplan N1 N2 N3 - çàäàåò ñïèñîê èç ðàíåå îïðåäåëåííûõ òàðèôíûõ ïîäïëàíîâ, ôîðìèðóþùèõ ýòîò ïëàí. Êàæäûé òàðèôíûé ïîäïëàí ìîæåò ó÷àñòâîâàòü îäíîâðåìåííî â íåñêîëüêèõ òàðèôíûõ ïëàíàõ. Åñëè óêàçàíà îïöèÿ no, òî óêàçàííûé ñïèñîê ïîäïëàíîâ áóäåò óäàëåí èç ïëàíà.
Òàê æå êàê è ïðåäûäóùàÿ êîìàíäà, êîìàíäà
plan ïðè
êîíôèãóðèðîâàíèè äîëæíà áûòü ðàçäåëåíà íà ñëåäóþùèå ïîäêîìàíäû:
plan N name AAA
plan N description BBB
plan N subplan N1 N2 N3 ...
account NNN
name AAA
[description BBB]
password CCC
plan MM1
nextplan MM2
[beblock | block | unblock]
balance {add|remove|set} ZZ
[credit-limit ZZ]
unit {name AAA | oid NN} {add | delete }
Êîìàíäà
account ñîçäàåò àêêàóíò, èëè çàïèñü î êëèåíòå, â áàçå NeTAMS. Ýòà èíôîðìàöèÿ õðàíèòñÿ â SQL, íå â êîíôèãóðàöèîííîì ôàéëå. ×èñëî
NNN ïðåäñòàâëÿåò ñîáîé îáúåêò OID, ÿâëÿþùèéñÿ êëþ÷îì â áàçå äàííûõ.
- name AAA - çàäàåò êîðîòêîå èìÿ àêêàóíòó
- description BBB - çàäàåò îïèñàíèå àêêàóíòà
- password CCC - çàäàåò ïàðîëü íà äîñòóï àêêàóíòà ñ ñâîåé ñòàòèñòèêå
- plan MM1 - çàäàåò òåêóùèé òàðèôíûé ïëàí (íîìåð MM1 äîëæåí ñîîòâåòñòâîâàòü îïèñàííîìó âûøå ïëàíó)
- nextplan MM2 - çàäàåò òàðèôíûé ïëàí íà ñëåäóþùèé ìåñÿö - òàêèì îáðàçîì ðåàëèçóåòñÿ ñìåíà ïëàíà êëèåíòîì
- [ beblock | block | unblock ] - çàäàåò òåêóùåå ñîñòîÿíèå àêêàóíòà: äîáðîâîëüíî_áëîêèðîâàí, áëîêèðîâàí_àäìèíèñòðàòîðîì è ðàçáëîêèðîâàí (àêòèâåí)
- balance { add | remove | set } ZZ - ïîçâîëÿåò äîáàâëÿòü, âû÷èòàòü çàäàííóþ ñóììó ñ áàëàíñà (ëèöåâîãî ñ÷åòà) êëèåíòà, èëè âûñòàâëÿòü áàëàíñ â óêàçàííîå çíà÷åíèå.
- [credit-limit ZZ] - óêàçûâàåò ìèíèìàëüíî äîïóñòèìûé áàëàíñ êëèåíòà, êîãäà îí åùå íå îòêëþ÷àåòñÿ (îòðèöàòåëüíîå ÷èñëî èëè 0, ò.å. íåò êðåäèòà).
- unit {name AAA | oid NN} {add | delete } - äîáàâëÿåò èëè îòíèìàåò çàðàíåå ñîçäàííûå â service processor þíèòû, äåëàÿ èõ ïðèíàäëåæàùèìè òåêóùåìó àêêàóíòó.
Ïîäîáíî êîìàíäàì
subplan è
plan, êîìàíäà
account êîíôèãóðèðóåò ïàðàìåòðû àêêàóíòà ïî îäíîìó ïàðàìåòðó
çà êîìàíäó:
account NNN description BBB
account NNN password CCC
account NNN plan MM1
account NNN nextplan MM2
account NNN [beblock | block | unblock]
account NNN balance {add|remove|set} ZZ
account NNN unit {name AAA | oid NN} {add | delete }
delay NN
Óñòàíàâëèâàåò èíòåðâàë âðåìåíè ( â ñåêóíäàõ), êîòîðûé áóäåò èñïîëüçîâàòüñÿ ìåæäó öèêëàìè ïðîâåðêè àêêàóíòîâ.
default-credit-limit XX
Óñòàíàâëèâàåò êðåäèòíûé ëèìèò äëÿ âñåõ âíîâü ñîçäàâàåìûõ àêêàóíòîâ, ò.å. ïîðîã áàëàíñà ïðè êîòîðîì áóäåò ïðîèçâîäèòüñÿ îòêëþ÷åíèå. Ïî óìîë÷àíèþ çíà÷åíèå ðàâíî íóëþ, ò.å. êðåäèò ïîëüçîâàòåëþ íå âûäàåòñÿ. Âåëè÷èíà êðåäèòíîãî ëèìèòà XX äîëæíà áûòü îòðèöàòåëüíîé. Äåéñòâóåò òîëüêî íà âíîâü ñîçäàâàåìûå àêêàóíòû. Äëÿ êàæäîãî àêêàóíòà èíäèâèäóàëüíî â äàëüíåéøåì ìîæíî èçìåíèòü ýòîò ëèìèò ïðè ïîìîùè êîìàíäû
credit-limit.
storage MM {all | plans | subplans}
Óêàçûâàåò, â êàêîì õðàíèëèùå (storage) áóäåò ñîõðàíÿòüñÿ áèëëèíãîâàÿ èíôîðìàöèÿ, è êàêàÿ èìåííî.
show plan [N [account|list]]
Âûäàåò èíôîðìàöèþ î òàðèôíîì ïëàíå (ïëàíàõ):
fedora:~#netamsctl show plan
Plan ID 000001 Name "aaa" Desc. "super-puper tarifny plan"
Subplan ID 000001
Fee 10.000000, spread: 'M', policy ip(0B23C6)
Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out
Plan ID 000002 Name "bbb" Desc. "plan dlya aktivnyh"
Subplan ID 000001
Fee 10.000000, spread: 'M', policy ip(0B23C6)
Incl. 0 in 0 out, Over. 0.000000/M in 0.000000/M out
Subplan ID 000002
Fee 15.000000, spread: 'M', policy www(0C9869)
Incl. 0 in 0 out, Over. 10.000000/M in 0.000000/M out
show account {XXX [full][bdata] |list}
Âûäàåò èíôîðìàöèþ î àêêàóíòå (àêêàóíòàõ):
fedora:~#netamsctl show account client1 full
Name a1 (01BFEF) BLOCKED SYNC bal: 100.00 cred_lim: -5.00 plan: aaa
Plan aaa 000001 1107234000 Nextplan aaa 000001 1107234000
Changed 1108397456 Blocked 1108397423 Created 1108397423
Email - Password -
Units: client1 08944A